ansibleの導入メモ2 プレイリストを作るまで

# 目的
- 前回作った環境で、実際に最小構成のplaybookが動くところまでを確認する
- 基本的な実行パターンと、ログの見方を確認する

> 環境を作るまで
>https://qiita.com/yukihigasi/items/e1da1f95e47c68d34ed7

### インベントリファイルをデフォルト設定する
- ansibleコマンドを実行する時、-i ＜インベントリファイル＞　で指定する必要があるが、設定ファイルに記載し省略することができる

- ansible.cfgに、[defaults]項目を作り
- hostfile = パス/インベントリファイル名 で定義できる
![スクリーンショット 2018-06-01 20.59.55.png](https://qiita-image-store.s3.amazonaws.com/0/57455/472f01e3-94d5-a4f3-61d0-2b90fe66cdfe.png)

# playbookの作成から実行までの手順
### playbook
- 実際に実行する内容を定義します

```yaml:playbook.yml
---
- hosts: web
  sudo: yes
  tasks:
    - name: add a new user
      user: name=test1
```

- hosts
 - 対象を指定します。今回は、インベントリファイルに定義したwebというホスト達を対象にしています
 - all という指定をして、インベントリファイルに記載のあるホスト全体をターゲットにすることもできる
 - まず全ノードに対する操作を定義し
 - そのあと個別の設定を適用する、という共通化ができる
 
```yaml:例
---　<yamlであることを示すため必要
- hosts: all <　必須、対象を定義する
  sudo: yes <権限が必要な場合設定
  tasks:
    - name: add a new user　<ここは任意の名前でOK、ログを見てタスク名がわかるように
      user: name=test1
- hosts: web
  sudo: yes
　tasks: 
    - name: install apach
      (その他操作)
- hosts: db
  sudo: yes
　tasks: 
    - name: install mysql  
     (その他操作)
  
```

### 実行結果の見方
- チェックの実行

 - ansible-playbook playbook.yml --syntax-check playbook の文法をチェックする
 - ansible-playbook playbook.yml --list-task  playbook のタスク一覧を表示
 - ansible-playbook playbook.yml --check 動作結果を確認(下例)実際には実行せず、想定結果を出力する

> playbookコマンド
> https://github.com/yteraoka/ansible-tutorial/wiki/ansible-playbook%20%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89

```
PLAY [web] *****************************************************************************************************************************

TASK [Gathering Facts] *****************************************************************************************************************
ok: [192.168.10.11]

TASK [add user] ************************************************************************************************************************
changed: [192.168.10.11]

PLAY RECAP *****************************************************************************************************************************
192.168.10.11              : ok=2    changed=1    unreachable=0    failed=0
```

- 実行
 - ansible-playbook playbook.yml を実行

```
PLAY [web] *****************************************************************************************************************************

TASK [Gathering Facts] *****************************************************************************************************************
ok: [192.168.10.11]

TASK [add user] ************************************************************************************************************************
changed: [192.168.10.11]

PLAY RECAP *****************************************************************************************************************************
192.168.10.11              : ok=2    changed=1    unreachable=0    failed=0
```

- 冪等性を確認
 - 同じプレイブックをもう一度実行

```
PLAY [web] *****************************************************************************************************************************

TASK [Gathering Facts] *****************************************************************************************************************
ok: [192.168.10.11]

TASK [add user] ************************************************************************************************************************
ok: [192.168.10.11]

PLAY RECAP *****************************************************************************************************************************
192.168.10.11              : ok=2    changed=0    unreachable=0    failed=0
```

  - changedの項目が0になっている。同じであるため変更されていないということ


### 公式ドキュメント
> - ドキュメント
> User Guide
> http://docs.ansible.com/ansible/latest/user_guide/index.html

- ここまでplaybookを実際に動かすまで。
- 引き続き、よく使いそうな操作等をピックアップし、加筆予定。。。

----
### まとめ　ansibleを動作させるまで
```
どこでも 
┣ansible.cfg　（作る）
┣hosts (作る：動作に必須のインベントリファイル)
┣playbook.yml 
└roles/ （作成される）
```

```vim:ansible.cfg
[defaults]
hostfile = ./hosts
```

```vim:hosts
[web]
192.168.10.11
```

```vim:playbook.yml
---
- hosts: web
  sudo: yes
  tasks:
    - name: add user
      user: name=test1
```

```vim:~/.ssh/ssh
HOST web
 HostName 192.168.10.11
```



### 参考
> Ansible Tutorial
> http://yteraoka.github.io/ansible-tutorial/
> Ansibleの使い方
> https://qiita.com/hana_shin/items/657a5cff495244465482