04 playbook 01

playbook.yml 

1 行目は「---」で YAML ファイルということを示します。
====================================
---
- hosts: all
  sudo: yes
  tasks:
    - name: add a new user
      user: name=taguchi
====================================

ansible-playbook playbook.yml


━
ファイル形式は YAML なので、yml という拡張子にしましょう。

1 行目は「---」で YAML ファイルということを示します。

最初に書かなければいけないのは「- hosts: 」で、対象となるサーバを指定しましょう。

「web」「db」でもいいのですが、今回は全部なので「all」とします。

ユーザを追加するにあたっては管理者権限が必要なので、そういう場合は「sudo: yes」としましょう。

そこまで来たらようやくタスクを実行することができて、「tasks:」でモジュールを指定していきます。

ここではタスクの名前を指定するのが推奨されているので、必須ではないですが付けておきましょう。
「- name: add a new user」としましょう。

モジュール自体は user モジュールを使っていきます。

オプションで name が必須になるので、今回は「user: name=taguchi」としましょう。

これでとりあえずできたのですが、注意しておいていただきたいのは、ここに書いているものは「サーバのあるべき状態を記述したもの」だと思ってください。

なので、このタスクは毎回実行するたびに taguchi ユーザがどんどん追加されていくのではなくて、もし taguchi ユーザがあった場合には何もしないというものになるので、意識しておいてください。

これは難しい言葉で「冪等性(べきとうせい)」というのですが、興味がある人は調べてみるといいでしょう。
1:44
ここまでできたら保存して、実行していきます。

実行するには absible-playbook というコマンドを使って、Playbook のファイル名を指定しましょう。

実行すると「WARNING」が出てきていますが、これは無視しておいてください。

「TASK」に実行結果が出ています。

タスクをやりましたよ、と。

実際処理は OK で、サーバの状態が変わりましたよということで、「changed」となっています。

ここで冪等性を試すために、もう 1 回同じ Playbook を実行してみましょう。

そうすると、タスク自体は OK なのですが、すでにユーザがあるので、「changed=0」になっているのが分かるかと思います。

こういった冪等性というか、サーバのあるべき状態を Playbook に書くのを意識しておくといいかと思います。

それからちゃんとユーザが追加されているかというのも確認しておきましょう。

「ssh web」で Web にログインして、「cat /etc/passwd」を見るとユーザの一覧が出てきます。

一番下にちゃんと taguchi ユーザが追加されているのが分かるかと思います。

「exit」で Host に戻って続きをやっていきたいのですが、長くなりそうなので次回以降にしていきましょう。