AnsibleでvSphereを操作する

 

AnsibleVMwareモジュールを利用するための準備

LinuxへのAnsibleのインストールについては前回の記事をご参照ください。

 

AnsibleVxRailの操作をする

 

この記事ではVMwareモジュールの準備から説明します。

AnsiblevSphereを操作するにはpyvmomiが必要です。

 

$ pip install pyvmomi

 

さらに上記に加えて一部のモジュールはvsphere sdk for python が必要なります。

$ pip install --upgrade git+https://github.com/vmware/vsphere-automation-sdk-python.git

 

すでにAnsibleがインストールされていれば準備はこれだけです。

 

 

VMwareモジュールの使い方

AnsiblevSphereを操作するためのモジュールの使い方は以下を参照します。

Community.Vmware Ansible Documentation

 

基本的には使いたいモジュールのドキュメントの最後にあるExampleを参考にYAMLファイルを書けばよいです。

パラメータの説明が必要になった時に、改めてドキュメントを見直すくらいで、たいていのモジュールは利用できます。

 

インベントリファイルを作成する

各モジュールを利用するたびに、変数部分に毎回IPアドレスや認証情報を入力するのは手間です。

各モジュールのドキュメントはたいてい同じ変数でvCenterhostname/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の情報を取得しましょう。

以下のモジュールを利用します。

community.vmware.vmware_about_info module Provides information about VMware server to which user is connecting to Ansible Documentation

 

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の情報を取得して表示できています。


まとめ

今回はAnsibleVMwareモジュールの使い方について説明しました。

今回作成したPlaybookを流用すれば、あとはドキュメントにあるExampleをコピペするだけで概ね使うことができます。

多少説明を省いている部分もありますが筆者もよくわかっていないことが多いです。

むしろわかっていなくてもExampleをコピペしておけば概ね問題なく利用できる、という簡易性を感じていただければ幸いです。

 

コメント

このブログの人気の投稿

vSwitchにSTPが不要な理由

ESXi に DNS サーバを何個まで登録できるか

NTPと同期してくれないときのトラブルシューティング