直接使用 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
广告
将在 10 秒后关闭
bannerAds