[Ansible]playbookの解説書


はじめに

Ansibleについて記事を書いたが、playbookの詳細(書き方など)を書いていなかったのでここで解説します。

playbookとは?

Ansibleに実行させることを記述することで、様々な処理を行える。
playbookには冪等性があるため、何回同じファイルを実行しても同じ結果が得られます。

書き方・手順・解説

まず、基本的なフォーマットは以下の通りです。
Playbookではまず「hosts:」で対象とするホストもしくはグループを指定し、そのホストに対して実行する「タスク」や「ハンドラ」を続けて記述していく。
※使えるモジュールはこちらから

playbook.yml

- 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」入門

Ansible を利用したシステム構成情報の自動取得

Ansibleを効果的に使うのに欠かせないPlaybookの基本的な書き方まとめ(1/2)

Ansibleを効果的に使うのに欠かせないPlaybookの基本的な書き方まとめ(2/2)