直接使用 Ansible 操纵 ESXi
从Ansible 1.6版本开始,就有了vsphere_guest模块。它可以直接通过VMware vSphere操作,而无需vCenter。当然,也可以通过vCenter进行操作。不过,在这种情况下,建议使用Ansible v2.2版本及以上可用的vmware_guest模块。
目前为止,文章发布是预览状态。
启动现有的虚拟机
启动已经存在的VM时,可按以下方式编写。
localhost ansible_connection=local
- hosts: localhost
connection: local
become: true
become_user: root
gather_facts: no
tasks
- name: Boot up instance
vsphere_guest:
vcenter_hostname: 192.168.0.12
username: root
password: password
guest: testvm
state: powered_on
validate_certs: False
esxi:
datacenter: ha-datacenter
hostname: 192.168.0.12
参数本身有一部分是关于vcenter的,这可能会让人感到迷惑,但是在那里需要输入ESXi的地址、用户名和密码。然后,将数据中心命名为ha-datacenter。这样就可以独立运行了。换句话说,可以直接操作ESXi。
因为我在「validate_certs: False」这个地方被告知:fatal: [localhost]: FAILED! => {“changed”: false, “failed”: true, “msg”: “pysphere不支持在Python < 2.7.9上验证证书。请更新Python版本或在任务中设置validate_certs=False”},所以我加入了它。
实施
$ ansible-playbook -i hosts site.yml
PLAY [localhost] ***************************************************************
TASK [Boot up instance] ********************************************************
changed: [localhost]
PLAY RECAP *********************************************************************
localhost : ok=1 changed=1 unreachable=0 failed=0
冪等性也可以
$ ansible-playbook -i hosts site.yml
PLAY [localhost] ***************************************************************
TASK [Boot up instance] ********************************************************
ok: [localhost]
PLAY RECAP *********************************************************************
localhost : ok=1 changed=0 unreachable=0 failed=0
考试环境
-
- vSphere ESXi 5.5
-
- Ubuntu 14.04.2 LTS
-
- Ansible 2.2.1
-
- Python 2.7.6
- pysphere 0.1.7
可以参考
-
- http://docs.ansible.com/ansible/vsphere_guest_module.html
- http://docs.ansible.com/ansible/vmware_guest_module.html