AnsibleでvSphereを操作する
AnsibleでVMwareモジュールを利用するための準備
LinuxへのAnsibleのインストールについては前回の記事をご参照ください。
この記事ではVMwareモジュールの準備から説明します。
AnsibleでvSphereを操作するにはpyvmomiが必要です。
$ pip install pyvmomi |
さらに上記に加えて一部のモジュールはvsphere sdk
for python が必要なります。
$ pip install --upgrade
git+https://github.com/vmware/vsphere-automation-sdk-python.git |
すでにAnsibleがインストールされていれば準備はこれだけです。
VMwareモジュールの使い方
AnsibleでvSphereを操作するためのモジュールの使い方は以下を参照します。
Community.Vmware
— Ansible Documentation
基本的には使いたいモジュールのドキュメントの最後にあるExampleを参考にYAMLファイルを書けばよいです。
パラメータの説明が必要になった時に、改めてドキュメントを見直すくらいで、たいていのモジュールは利用できます。
インベントリファイルを作成する
各モジュールを利用するたびに、変数部分に毎回IPアドレスや認証情報を入力するのは手間です。
各モジュールのドキュメントはたいてい同じ変数でvCenterのhostname/user/passwordを扱っていますので、
変数を設定するためのファイルを個別で作っておくと再利用しやすく便利です。
以下のように作成しましょう。
vcenter server ip と passwordは環境に適したものを入れてください。
username はadministrator@vsphere.localでなくも構いません。
※インデントも正しく入力してください。
# cat vars.yaml all: vars:
vcenter_hostname: <vcenter
server ip>
vcenter_username: administrator@vsphere.local
vcenter_password: <passowrd> |
インベントリファイルは変数を格納するためだけではなく、管理対象ホストの情報も記載することができます。
今回の用途では、管理対象ホストは便宜上localhostになるため、管理対象ホストの情報は不要です。
興味のある方は以下のドキュメントが詳しいです。
インベントリーの基本|Ansible の使い方 (zenn.dev)
動作確認
VxRailのときと同様にAnsibleを利用してvCenterの情報を取得しましょう。
以下のモジュールを利用します。
Exampleにあるものをほぼそのまま使いますが、前後にいくつか加える必要があります。
以下のようにPlaybookを作成しましょう。
# cat -n test.yaml #説明のために行数を表示 1 - hosts: localhost 2 gather_facts: false 3 tasks: 4 - name: Provide information about vCenter 5 community.vmware.vmware_about_info: 6 hostname: '{{ vcenter_hostname }}' 7 username: '{{ vcenter_username }}' 8 password: '{{ vcenter_password }}' 9 validate_certs: false 10 delegate_to: localhost 11 register: vcenter_about_info 12 - debug: 13 var: vcenter_about_info |
1、2行目:
ターゲットセクションと呼ばれるものです。
実行対象はlocalhostなのでhosts:localhostを指定しています。
その他の説明は以下の記事に譲ります。
プレイブックの基本|Ansible の使い方 (zenn.dev)
3行目:
tasks: でtasksセクションの開始を意味します。
4~11行目:
Exampleのコピペです。
ただしそのまま実行するとSSL証明書でエラーになるので、9行目にvalidate_certs: false を追加しています。
それ以外の行はExampleをコピペしただけです。
取得した情報を11行目のregisterで登録しています。
12,13行目
無くてもいいのですが、取得した情報を表示したほうが成功が動作確認としてわかりやすいのでdebug モジュールでregisterで登録した内容を表示しています。
実行コマンド
# ansible-playbook
-i vars.yaml test.yaml
|
-i でインベントリファイルを指定し、そのあとに作成したPlaybookを指定します。
実行結果
vCenterの情報を取得して表示できています。
まとめ
今回はAnsibleでVMwareモジュールの使い方について説明しました。
今回作成したPlaybookを流用すれば、あとはドキュメントにあるExampleをコピペするだけで概ね使うことができます。
多少説明を省いている部分もありますが筆者もよくわかっていないことが多いです。
むしろわかっていなくてもExampleをコピペしておけば概ね問題なく利用できる、という簡易性を感じていただければ幸いです。
コメント
コメントを投稿