#はじめに
Ansibleについて記事を書いたが、playbookの詳細(書き方など)を書いていなかったのでここで解説します。
playbookとは?
Ansibleに実行させることを記述することで、様々な処理を行える。
playbookには冪等性があるため、何回同じファイルを実行しても同じ結果が得られます。
書き方・手順・解説
まず、基本的なフォーマットは以下の通りです。
Playbookではまず「hosts:」で対象とするホストもしくはグループを指定し、そのホストに対して実行する「タスク」や「ハンドラ」を続けて記述していく。
※使えるモジュールはこちらから
- hosts: <対象とするホスト/グループ>
var:
<変数名1>: <値>
<変数名2>: <値>
:
:
remote_user: <処理を実行するユーザー名>
sudo: yes
tasks:
<タスク1>
<タスク2>
:
:
handlers:
<ハンドラ1>
<ハンドラ2>
:
:
###タスクについて
Ansibleでは、そのホストに対する処理を「タスク」という単位で管理する。通常、1つのタスクには以下のように1つのモジュールを指定する。
※タスクを複数記述した場合、それらは記述された順番に実行される。
- name: <タスクの説明>
<モジュール名>: <実行時に与えるパラメータ>
# 「yum」モジュールを使って「httpd」パッケージをインストールする
- name: install httpd
yum: name=httpd state=present
# 「command」モジュールを使えば任意のコマンドを実行
- name: disable selinux
command: /sbin/setenforce 0
###ハンドラ
「ハンドラ」は特定のタスクの実行後、あらかじめ指定しておいた処理を実行するための仕組みだ。該当のタスクで「notify」項目を設定することで、そのタスクの実行後にnotify項目で指定したハンドラが実行される。タスクと同様、1つのハンドラには1つのモジュールを指定する。
- name: <ハンドラの説明>
<モジュール名>: <実行時に与えるパラメータ>
# 「template」モジュールを使ってApache HTTP Server(httpd)の設定ファイルを作成するタスクと、その設定の変更後にhttpdを再起動する
tasks:
- name: install WordPress configuration file
template: src=wordpress.conf dest=/etc/httpd/conf.d/wordpress.conf
notify:
- restart httpd
handlers:
- name: restart httpd
service: name=httpd state=restarted
playbookの実行は以下のコマンドを実行する。
$ ansible-playbook <実行したいPlaybookファイル>
##参考
エージェントレスでシンプルな構成管理ツール「Ansible」入門