Ansible 初心者がplaybook～roleを学ぶ ③ Ansible初期設定

本稿では前回インストールしたAnsibleを稼働させるための設定を行います。

###１．ansibleリモートユーザを作成する。

    $ sudo useradd ansible


###２．ansibleユーザにパスワードを設定する。
　　※設定パスワードは何でも良い（わかりやすさでパスワードはansibleとします）

    $ sudo passwd ansible
    　>> passwordは、ansibleと応答する。
    
###３．ansibleユーザのsudo有効化
 3-1. visudoでwheelグループNOPASSWORD有効化

    $ sudo visudo
    ～略～
    ## Same thing without a password
    #%wheel  ALL=(ALL)       NOPASSWD: ALL    ←　コメントアウト「#」を消す  
　
 3-2．wheelグループにユーザansible追加   

    $ sudo usermod -aG wheel ansible
 
###４．Ansibleターゲットサーバ（db,web)でも１～3の作業を行う

    ＜ssh接続する時は以下で接続＞
    dbの場合:  ssh vagrant@192.168.16.12 でアクセスする。※パスワード:vagrant
    webの場合: ssh vagrant@192.168.16.13 でアクセスする。※パスワード:vagrant

###５．ansibleサーバでansibleユーザへ切替、公開鍵、秘密鍵生成

    $ su ansible
    $ cd /home/ansible
    $ ssh-keygen -t rsa
    > 全てEnterを応答する｡
    $ ll .ssh/
    total 8
    -rw------- 1 ansible ansible 1675 May 16 03:08 id_rsa　　　　　　←秘密鍵が生成されている。
    -rw-r--r-- 1 ansible ansible 397 May 16 03:08 id_rsa.pub　　　　←公開鍵が生成されている。

###６．ansibleサーバ（ansibleユーザの）公開鍵をターゲットサーバ（db,web)へ転送する。

    $ ssh-copy-id -i /home/ansible/.ssh/id_rsa.pub ansible@192.168.16.12    …dbの場合
    $ ssh-copy-id -i /home/ansible/.ssh/id_rsa.pub ansible@192.168.16.13　　…webの場合

###７．ansible作業用ディレクト作成

    $ mkdir /var/tmp/ansible
    $ cd /var/tmp/ansible　

###８．inventoryファイル作成

    $ mkdir /var/tmp/ansible/inventory
    $ vi /var/tmp/ansible/inventory/hosts
    [web]
    192.168.16.13 
    [db]
    192.168.16.12

###９．ansible.cfg作成（ansibleの動作チューニング）
```shell
$ pwd
/var/tmp/ansible

$ vi ansible.cfg

[defaults]
inventory=./inventory　　　　　　　　　#inventoryファイルの指定
remote_user=ansible　　　　　　　　　　#ansibleリモートユーザの指定
transport = ssh
log_path = /var/log/ansible.log     #ansibleの動作ログ出力先の指定

[privilege_escalation]
sudo_user = root　　　　　　　　　　　# sudoユーザの指定                  
become = ture　　　　　　　　　　　　 # ansible稼働時にsudoの許可

[ssh_connection]
pipelining = True　　　　　　　　　　 # ansible処理動作の高速化
ssh_args = -o ControlMaster=auto -o ControlPersist=300s　

[accelerate]
accelerate_port = 5099           
accelerate_timeout = 30

```
以下を参考にさせていただきました。
参考：https://qiita.com/h_matsuno1028/items/33f06298d7d05bf1e295
参考：https://thinkit.co.jp/article/9990
参考：https://qiita.com/c0tt0n-candy/items/83dfbb158f4520bba7e2

###１０．ansible.logの作成
```shell_session
$ sudo touch /var/log/ansible.log
$ sudo chown ansible:ansible /var/log/ansible.log
$ ls -ltr /var/log/ansible.log
-rw-r--r-- 1 ansible ansible 0 Oct 17 05:59 /var/log/ansible.log
```
###１１．ansible動作確認
11-1. ansible adhoc でターゲットweb、dbへpingモジュールでping確認。

```python
$ date;ansible web,db -m ping;date
Sat 17 Oct 06:05:04 BST 2020
192.168.16.13 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}
192.168.16.12 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}
Sat 17 Oct 06:05:14 BST 2020
```
11-2　ansible adhoc でターゲット全てに、shellモジュールでhost名確認。

```python
$ date;ansible -i inventory/hosts all -m shell -a 'uname -n';date
Sat 17 Oct 06:06:16 BST 2020
192.168.16.13 | CHANGED | rc=0 >>
db
192.168.16.12 | CHANGED | rc=0 >>
web
Sat 17 Oct 06:06:26 BST 2020
```

###１２．ansible.logの出力確認
```shell

$ cat /var/log/ansible.log

2020-10-05 00:49:19,531 p=14212 u=ansible n=ansible | 192.168.16.12 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}
2020-10-05 00:49:19,546 p=14212 u=ansible n=ansible | 192.168.16.13 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}
2020-10-05 00:49:33,695 p=14228 u=ansible n=ansible | 192.168.16.13 | CHANGED | rc=0 >>
web

2020-10-05 00:49:33,712 p=14228 u=ansible n=ansible | 192.168.16.12 | CHANGED | rc=0 >>
db
```

これでansibleの大まかな設定は完了。

###(追加) mitogen導入（ansible高速化）
※PCのスペックのせいなのか高速化の実感できなかったため、おまけです。

```shell

$ sudo yum install wget unzip -y

$ wget https://github.com/dw/mitogen/archive/master.zip -P /var/tmp/

$ unzip /var/tmp/mitogen-master.zip -d /var/tmp/

$ chown -R ansible:ansible /var/tmp/mitogen-master

$ vi ansible.cfg
[defaults]
～
strategy_plugins = /var/tmp/mitogen-master/ansible_mitogen/plugins/strategy
strategy = mitogen_linear
```
####次回Link>>[Ansible 初心者がplaybook～roleを学ぶ ④  (wordpress環境構築）-単体playbook編-](https://qiita.com/showa-engine/items/d253f8b6dc9f8efdecf2)