演習02

Playbookを書いてみよう

演習01では、アドホックコマンドを使って情報の取得や状態を変化させました。 ここでは、Playbookを作ってAnsibleを実行する方法について説明します。

Step 1. Playbookを作成する

ここでは gather_vm_guests.yml というファイルを作成してみましょう。

vi gather_vm_guests.yml

作成したファイルの先頭に以下の例を追加します。

---
- name: GATHER INFOMATION FROM VM GUEST
  hosts: all
  gather_facts: no
  • --- は、このファイルがYAMLファイルであるということを示しています。

  • hosts: all は、このPlaybookを all グループに対して実行します。グループ名は次のステップで作成するインベントリフィアルに定義します。

  • gather_facts: no は、Playbookを実行するホストのOS関連情報を取得しないようにしています。

Step 2. Inventoryを作成する

Inventoryファイルを作成することで、Playbookを実行する複数ホストの指定やグルーピングをすることができます。 ここでは inventory というファイルを作成してみましょう。

作成したファイルの先頭に以下の例を追加します。

  • [all] は、Playbookを実行するホストをまとめるグループ名です。

  • localhost は、Playbookを実行するホストです。何もパラメーターを追加しない場合は、名前解決してアクセスします。

  • ansible_connection は、ホストへの接続タイプを指定します。ここでは local を指定してPlaybookを実行したホスト自身で指定されたPlaybookを実行するようにしています。

circle-info

VMwareのモジュールはpyvmomiというPythonのモジュールを使ってAPI経由で実行されます。そのため、直接vCenterへアクセスするのではなく、pyvmomiがインストールされたホストがAPI経由でアクセスします。そのため、接続先はlocalになっています。

Ansibleのインベントリに指定できるリモートホストパラメーターの詳細は以下を参照ください。

Step 3. Playbookを実行する

それでは、演習01でやったVM Guestの情報をPlaybookを使って取得してみます。

以下のように tasks 以下をPlaybookへ追記します。

作成したPlaybookを実行してみましょう。

問題なく実行できれば、以下のように表示されます。

アドホックのように取得した値が表示されない?と思った方もいるかもしれません。 Playbookで取得した値を表示するには、Playbookに表示する処理を書く必要があります。 結果を表示するには以下のように registerdebug モジュールを追加します。

  • register は、モジュールの結果を指定した変数に格納します。ここでは gather_vm_guest_facts_result 変数に結果を格納しています。

  • debug モジュールを使って、格納した変数の中身を表示します。

もう一度Playbookを実行します。

問題なく実行できれば、結果は以下のように表示されます。

取得した情報を指定して表示することも可能です。 例えば、VMの名前だけを表示してみます。 以下のようにdebug部分を修正します。

もう一度Playbookを実行します。

問題なく実行できれば、結果は以下のように表示されます。

配列に入っている情報を取得する場合は以下のように要素番号を指定します。

もう一度Playbookを実行します。

問題なく実行できれば、結果は以下のように表示されます。

完了

お疲れ様でした。 演習02は終了です。

Last updated

Was this helpful?