VMware Cloud Director 10.4(VCD)を、Ansible で操作してみます。今回は Photon OS 4.0 に Ansible をインストールして、組織 VCD に作成してある vApp の仮想マシン情報を取得してみます。
今回の内容です。
今回の環境
VCD は、下記のように作成したラボ環境を利用しています。
Ansible は、Photon OS 4.0 の Yum リポジトリにあるものを利用します。Photon OS は、下記の OVA を使用しています。
- photon-ova_uefi-4.0-c001795b80.ova
-
https://packages.vmware.com/photon/4.0/Rev2/ova/photon-ova_uefi-4.0-c001795b80.ova
root@lab-ansible-03 [ ~ ]# cat /etc/photon-release VMware Photon OS 4.0 PHOTON_BUILD_NUMBER=2f5aad892
Ansible の VCD モジュールは、VMware の GitHub リポジトリに公開されているものを利用します。
Ansible ホストの構築
まず、Photon OS のパッケージを最新化しておきます。
root@lab-ansible-03 [ ~ ]# yum update -y root@lab-ansible-03 [ ~ ]# reboot
Python バージョンです。
root@lab-ansible-03 [ ~ ]# python -V Python 3.10.0
ansible をインストールします。
root@lab-ansible-03 [ ~ ]# tdnf install ansible -y root@lab-ansible-03 [ ~ ]# rpm -q ansible ansible-2.12.1-1.ph4.noarch
pip で、Python の pyvcloud パッケージをインストールします。
root@lab-ansible-03 [ ~ ]# tdnf install python3-pip -y root@lab-ansible-03 [ ~ ]# pip3 install --user pyvcloud
下記のようにパッケージがインストールされます。ちなみに、vSphere は VCD 経由で操作するため、community.vmware モジュールなどで利用される pyvmomi パッケージは不要です。
root@lab-ansible-03 [ ~ ]# pip3 freeze ansible-core==2.12.1 asn1crypto==1.4.0 attrs==20.3.0 bcrypt==3.2.0 certifi==2020.6.20 cffi==1.14.3 chardet==4.0.0 charset-normalizer==2.0.9 cloud-init==22.2.2 configobj==5.0.6 cryptography==3.3.2 ecdsa==0.16.0 humanfriendly==10.0 idna==2.10 Jinja2==2.11.2 jsonpatch==1.26 jsonpointer==2.0 jsonschema==3.2.0 lxml==4.9.1 MarkupSafe==1.1.1 motdgen==0.1.3 netifaces==0.10.9 oauthlib==3.1.0 packaging==21.3 paramiko==2.10.3 prettytable==0.7.2 pyasn1==0.4.8 pycparser==2.20 pycryptodome==3.12.0 Pygments==2.12.0 PyNaCl==1.4.0 pyOpenSSL==19.1.0 pyparsing==2.4.7 pyrsistent==0.17.3 python-dateutil==2.8.2 pyvcloud==23.0.4 PyYAML==5.4.1 requests==2.26.0 resolvelib==0.5.5 six==1.15.0 unittest-xml-reporting==3.2.0 urllib3==1.25.11 vcd-api-schemas-type==10.3.0.dev72
Git で、VCD を操作する Ansible モジュールをダウンロードします。
root@lab-ansible-03 [ ~ ]# tdnf install git -y root@lab-ansible-03 [ ~ ]# git clone https://github.com/vmware/ansible-module-vcloud-director root@lab-ansible-03 [ ~ ]# cd ansible-module-vcloud-director/
VCD への Ansible Playbook の実行
今回は、接続確認のかわりとして下記のように VCD の vApp から仮想マシン情報を取得する Ansible Playbook を作成しました。
- vcd_vapp モジュールを利用する。
- 操作するテナント(組織)は「demo-org-01」
- 操作する仮想データセンター(組織 VDC)は「org-01-vdc-01」
- vApp「vapp-01」の仮想マシン情報を取得する。(operation: "list_vms")
- VCD の API バージョン指定が必要。
- VCD 10.4 であれば、API v37.0 です。
- VCD バージョンと API バージョンは、下記などで確認できます。
https://docs.vmware.com/jp/VMware-Cloud-Director/index.html
VCD に接続するための変数は、下記のようにモジュールの外側でまとめて定義しておくこともできます。
ansible-playbook で demo_get_vapp-01_vm_01.yml Playbook を実行して、vapp-01 から仮想マシンの情報を取得してみます。
# ansible-playbook demo_get_vapp-01_vm_01.yml
下記のように情報取得できます。
ちなみに、この vapp-01 の仮想マシンは、VCD のテナント ポータルでは下記のように見えます。
つづく。