はじめに

Ansibleでサーバ・ローカルPCのプロビジョニングを行う場合に、構成を記述するのがplaybookファイルです。
一度構成を作ると当分触らないので、書き方を忘れますね、、
Ansibleの公式ドキュメントにあるテンプレートくらいわかれば十分使えるのでテンプレートの構文をとりあえず忘れないようにメモしておきます。
実際はテンプレートをコピーして、ドキュメントを見ながら書き換えてplaybookファイルを作るのが早いと思います。

公式ドキュメント:
http://docs.ansible.com/

playbookのテンプレート構文

構成はyamlという構造化されたデータを表現するためのフォーマットで記述します。
yamlの拡張子はymlでファイルの先頭に—を書くのが決まりになっています。

公式ドキュメントに記載されているテンプレートです

テンプレート


- hosts: webservers
vars:
http_port: 80
max_clients: 200
remote_user: root
tasks:
– name: ensure apache is at the latest version
yum: pkg=httpd state=latest
– name: write the apache config file
template: src=/srv/httpd.j2 dest=/etc/httpd.conf
notify:
– restart apache
– name: ensure apache is running (and enable it at boot)
service: name=httpd state=started enabled=yes
handlers:
– name: restart apache
service: name=httpd state=restarted

http://docs.ansible.com/playbooks_intro.html

hosts,vars,tasks,handlersなどの第一番目の構文については以下のドキュメントページより詳細を確認できます
http://docs.ansible.com/glossary.html

[ hosts: webservers ] とInventoryファイルについて

hostsは対象のサーバ(またはローカル)を指定します
※先頭のハイフンはyamlで配列を示しています

- hosts: webservers

webserversの宣言をInventoryファイルに作成する必要があります。
ファイル名は任意ですがhostsというファイル名が一般的です。

hostsファイル

[webservers]
190.168.10.10

webserversグループのipアドレスを指定のようにして使います。※ipアドレスはサーバ(またはローカル)のアドレスとすること

vars

varsでplaybook内で使用する変数を指定します

vars:
http_port: 80
max_clients: 200

yamlではkey:[半角スペース]valueという書き方でハッシュを表します。
keyはhttp_portでvalueは80という具合になります。

このテンプレートでは変数宣言のみで使用していませんが、、(使ってるんでしょうか??どこか別でコールしてるのかもしれません・・・)
使用する場合は{{変数名}}のように中カッコ2つで囲って使えます。

remote_user

接続先のユーザを指定します

remote_user: root

tasks

指定したサーバ(またはローカル)指定したサーバ(またはローカル)で実行するタスクを指定します

tasks:
– name: ensure apache is at the latest version
yum: pkg=httpd state=latest
– name: write the apache config file
template: src=/srv/httpd.j2 dest=/etc/httpd.conf
notify:
– restart apache
– name: ensure apache is running (and enable it at boot)
service: name=httpd state=started enabled=yes

上記では3つのタスクを指定しています。nameでタスクに対して任意の名前を指定しています。

yumはyumコマンドの実行で行う処理を指定します。pkg(そんなオプションない)は、、、おそらく誤りでnameのことだと思います。

正しくは

– name: ensure apache is at the latest version
yum: name=httpd state=latest

この場合httpdのstateがlatestなので最新版をインストールするという意味になります。
templete,serviseもドキュメントを確認してください。
http://docs.ansible.com/yum_module.html

notifyについてですが、こちらは次のhandlersと関わっています。
notifyで指定する名前はhandlersで定義されているnameと同じタスク名を指定しなければいけません。

handlers

notifyで呼ばれた場合に一度だけ実行するタスクを指定します

handlers:
– name: restart apache
service: name=httpd state=restarted

notifyで呼ばない限り実行されません。

httpdサービスを再起動するという意味になります。

playbookを実行する

playbookファイルplaybook.ymlでinventoryファイルhostsの場合は以下のように実行します

ansible-playbook -i hosts -vv playbook.yml

-vvはデバッグ情報を出力してくれます

その他おすすめの備忘録

Tagged with:
 

コメントを残す