playbookについて


1.playbookとは

 playbookはansible-playbookコマンドで使用する、複数の操作を記述できる定義ファイルです。
 記述した順番に実行します。
 記述方式はYAMLというphythonなどで使用されるインデントを用いるテキストファイルのフォーマットです。
 YAMLはansible以外でも使用される形式のため、よく学習コストが低い、覚えやすいとは言われますが、一方でansibleで初めて
 YAMLを勉強するときには、ansible関係の書籍や技術情報を見ているだけではYAMLそのものの説明があまりされていません。
 そのため、別途YAML自体の学習をする必要があります。
 また、日本語が使用できますのでコメント等で処理の説明をわかりやすくできます。

playbookの基本的な記述
## コメント(playbook全体の説明など)

host:(実行対象を記述する)

tasks:
  -name: 処理のコメント
    モジュール名:パラメータ

  -name: 処理のコメント
    モジュール名:パラメータ
      モジュールの引数名:引数の値
playbookの記述例
## ansibleグループ、ユーザーを作成し、sshの公開鍵で認証できるようにします。また、ansibleにsudoを許可します。
- hosts: all

  tasks:
    - name: ansible設定用のグループ作成
      group: 
        name: ansible
        gid: 15000

    - name: ansible ユーザー作成
      user: 
        name: ansible
        uid: 15000 
        group: ansible

    - name: ansibleのSSH公開鍵を登録
      authorized_key:
          user: ansible
          key: "{{ lookup('file', '/ansible/project/files/id_rsa.pub') }}"

    - name: sudo設定
      lineinfile:
        path: /etc/sudoers
        backup: yes
        line: 'ansible ALL=(ALL) NOPASSWD: ALL'

playbookでは変数を使用したり、条件によって実行しないようにしたりなどができます。
詳細は、下記を参照してください。
また、変数の記述方法などについては、YAMLの記述方法を理解する必要があります。

参考URL:https://docs.ansible.com/ansible/latest/user_guide/playbooks_intro.html

2.playbookを初めて記述をし始めてはまりやすい事

最初にPlaybookを書き始めた時、自分を含めて一緒に検証した人たちがはまったことを以下にまとめます。
YAMLは可読性が高いのですが、一方で書式が割と厳格なので少しの記述ミスでもエラーになるので注意が必要です。

  • インデントが厳格。
    Ansibleの書式は、全体⇒tasks⇒- name⇒ モジュール⇒ 引数 といった具合にインデントを掘り下げていきます。
    特にハイフン(-)はエディタによっては見えづらくなるため、続く行のインデントを深くしすぎてエラーになることがあります。  
  • ハイフン(-)の後のペースを忘れる。
  • モジュール名や引数名の後にコロン(:)を付けるときにスペースを入れてしまう。