summaryrefslogtreecommitdiff
path: root/lib/ansible/modules/cloud/vmware/vmware_vsan_cluster.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ansible/modules/cloud/vmware/vmware_vsan_cluster.py')
-rw-r--r--lib/ansible/modules/cloud/vmware/vmware_vsan_cluster.py125
1 files changed, 0 insertions, 125 deletions
diff --git a/lib/ansible/modules/cloud/vmware/vmware_vsan_cluster.py b/lib/ansible/modules/cloud/vmware/vmware_vsan_cluster.py
deleted file mode 100644
index ea55bf6965..0000000000
--- a/lib/ansible/modules/cloud/vmware/vmware_vsan_cluster.py
+++ /dev/null
@@ -1,125 +0,0 @@
-#!/usr/bin/python
-# -*- coding: utf-8 -*-
-
-# Copyright: (c) 2015, Russell Teague <rteague2 () csc.com>
-# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-
-from __future__ import absolute_import, division, print_function
-__metaclass__ = type
-
-ANSIBLE_METADATA = {'metadata_version': '1.1',
- 'status': ['preview'],
- 'supported_by': 'community'}
-
-DOCUMENTATION = '''
----
-module: vmware_vsan_cluster
-short_description: Configure VSAN clustering on an ESXi host
-description:
- - This module can be used to configure VSAN clustering on an ESXi host
-version_added: 2.0
-author:
-- Russell Teague (@mtnbikenc)
-notes:
- - Tested on vSphere 5.5
-requirements:
- - "python >= 2.6"
- - PyVmomi
-options:
- cluster_uuid:
- description:
- - Desired cluster UUID
- required: False
- type: str
-extends_documentation_fragment: vmware.documentation
-'''
-
-EXAMPLES = '''
-- name: Configure VMware VSAN Cluster
- hosts: deploy_node
- tags:
- - vsan
- tasks:
- - name: Configure VSAN on first host
- vmware_vsan_cluster:
- hostname: "{{ groups['esxi'][0] }}"
- username: "{{ esxi_username }}"
- password: "{{ site_password }}"
- delegate_to: localhost
- register: vsan_cluster
-
- - name: Configure VSAN on remaining hosts
- vmware_vsan_cluster:
- hostname: "{{ item }}"
- username: "{{ esxi_username }}"
- password: "{{ site_password }}"
- cluster_uuid: "{{ vsan_cluster.cluster_uuid }}"
- delegate_to: localhost
- loop: "{{ groups['esxi'][1:] }}"
-'''
-
-try:
- from pyVmomi import vim, vmodl
- HAS_PYVMOMI = True
-except ImportError:
- HAS_PYVMOMI = False
-
-from ansible.module_utils.basic import AnsibleModule
-from ansible.module_utils.vmware import (HAS_PYVMOMI, connect_to_api, get_all_objs, vmware_argument_spec,
- wait_for_task)
-
-
-def create_vsan_cluster(host_system, new_cluster_uuid):
- host_config_manager = host_system.configManager
- vsan_system = host_config_manager.vsanSystem
-
- vsan_config = vim.vsan.host.ConfigInfo()
- vsan_config.enabled = True
-
- if new_cluster_uuid is not None:
- vsan_config.clusterInfo = vim.vsan.host.ConfigInfo.ClusterInfo()
- vsan_config.clusterInfo.uuid = new_cluster_uuid
-
- vsan_config.storageInfo = vim.vsan.host.ConfigInfo.StorageInfo()
- vsan_config.storageInfo.autoClaimStorage = True
-
- task = vsan_system.UpdateVsan_Task(vsan_config)
- changed, result = wait_for_task(task)
-
- host_status = vsan_system.QueryHostStatus()
- cluster_uuid = host_status.uuid
-
- return changed, result, cluster_uuid
-
-
-def main():
-
- argument_spec = vmware_argument_spec()
- argument_spec.update(dict(cluster_uuid=dict(required=False, type='str')))
-
- module = AnsibleModule(argument_spec=argument_spec, supports_check_mode=False)
-
- if not HAS_PYVMOMI:
- module.fail_json(msg='pyvmomi is required for this module')
-
- new_cluster_uuid = module.params['cluster_uuid']
-
- try:
- content = connect_to_api(module, False)
- host = get_all_objs(content, [vim.HostSystem])
- if not host:
- module.fail_json(msg="Unable to locate Physical Host.")
- host_system = list(host)[0]
- changed, result, cluster_uuid = create_vsan_cluster(host_system, new_cluster_uuid)
- module.exit_json(changed=changed, result=result, cluster_uuid=cluster_uuid)
-
- except vmodl.RuntimeFault as runtime_fault:
- module.fail_json(msg=runtime_fault.msg)
- except vmodl.MethodFault as method_fault:
- module.fail_json(msg=method_fault.msg)
- except Exception as e:
- module.fail_json(msg=str(e))
-
-
-if __name__ == '__main__':
- main()