Playbookを活用する。
前回の記事で、管理端末からターゲット端末に対して、Ansibleコマンドを用いて、PING送信やechoコマンドによりシェルを実行してみました。
しかし、一回一回Ansibleコマンドを実行していくのは大変な作業です。「Ansibleコマンドをまとめたバッチシェルを作成できないのか?」と思い浮かぶのですが、Ansibleには Playbook というファイルに、ターゲット端末に対しての命令をまとめて記述することができます。
今回は Playbook についての設定方法と、それを実行してみるところまで紹介したいと思います。
Playbookを書き始める前に
Playbook自身は YAML フォーマットで書いていくことになります。ここで簡単に YAML フォーマットの約束事を紹介します。
- YAMLファイルを作成する際の文字コードは、UTF-8とします。
- "---" は、一つのYAMLドキュメントの始まりであるという事を示します。
- "..."は、一つのYAMLドキュメントの終わりであるという事を示します。
- "-" は、配列を示します。
- インデントは全てスペースで行います。タブは使用できません。
- 要素名と値の間は":"で区切ります。":"のあとには最低1文字の空白を入れておく必要があります。ここでもタブは使用できません。
- 行頭に"#"を入れることでコメントとして扱われます。なお、複数行をまとめてコメント化するような書き方はありません。
- ファイル拡張子は、*.yml とします。
以上の事を念頭に置いて、YAMLで表現するデータ構造の例を見てみましょう。
# YAMLでデータ構造を表現してみる例です。 --- - A: - a: apple b: banana - B: - a: orange b: strawberry c: cherry ...
実際にPlaybookを書いてみましょう
Playbookの書き方が分かったところで、つぎに実際にPlaybooksを書いてみましょう。
今回書いてみるPlaybookは、
- zipコマンドをインストール
といったことを行って見たいと思います。
環境構成
インベントリファイルの配置
以下の内容でインベントリファイルを作成します。(具体的な作成手順は、こちらの記事を参考にしてください。)
192.168.10.2
Playbookの作成
任意の場所に web.yml という名前で、以下の内容のPlaybookを作成してみましょう。
--- - hosts: all # /etc/ansible/hostsに描かれているすべてのほすとをターゲットにします。 sudo: yes tasks: - name: 共通で使用するパッケージをインストールする。 yum: name=zip state=latest ...
Playbookの内容についての説明
- hosts
- 実行する先のターゲット端末を指定します。
- sudo
- sudoを用いて実行するかどうかを指定します。
- tasks
- タスクリストの開始を示します。
- name
- 各タスクの名前を示します。ここでは、わかりやすい名前をつけてあげると良いです。
- yum
- ansibleのモジュールを示します。ここではyumに対する操作を行うモジュールを使っていますが、他にも色々なモジュールが提供されていますので、近いうちに紹介したいと思います。
- yum -> name
- yumで何のパッケージをインストールするかをここで指定します。
- yum -> state
- yumでインストールするパッケージのバージョンをここで指定します。
Playbookの文法確認
作成したPlaybookの文法は以下のコマンドで確認が行えます。
$ ansible-playbook --syntax-check web.yml
Playbookの実行
Playbookの実行は、以下のコマンドを使用します。
$ ansible-playbook --ask-become-pass web.yml SUDO password: PLAY [all] ******************************************************************** GATHERING FACTS *************************************************************** ok: [192.168.10.2] TASK: [共通で使用するパッケージをインストールする。] **** ok: [192.168.10.2] PLAY RECAP ******************************************************************** 192.168.10.2 : ok=2 changed=0 unreachable=0 failed=0
最後の行の PLAY RECAP の部分が実行ステータスとなります。「failed=0」となっていれば、特にエラーはおきていないことを示しています。