Ansible導入テスト

# はじめに
最近Ansibleを始めたので、導入からテスト実行までを簡単にまとめてみました。

実行環境
・CentOS7.5
・Python 2.7.5(デフォルト)

# Ansibleの導入
### 用意するもの
・Ansibleを導入するサーバー（コントローラ）
・Ansibleで変更を加えるサーバー(管理ノード)

## 導入作業
作業は全て「コントローラー」側のサーバーで実施します。

###１．Ansibleのインストール
AnsibleコントローラーとなるサーバーにてAnsibleをインストールする。
`yum install ansible`
依存関係で色々とインストールされると思いますがそのまま実行。

###２．作業用のディレクトリを作成
ansibleのファイルを保管するディレクトリを作成。
今回は、ホームディレクトリの直下に作成します。
`mkdir ~/ansible`

###３．SSHキーの準備
コントローラと管理ノード間のSSH通信を行うため、SSHの公開鍵を作成します。
`ssh-keygen`
passphraseを求められますが、空エンターで進めます。

```:実行例
[root@localhost ansible]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
```
###４．SSH公開鍵を管理ノードに送付
作成したSSH公開鍵を管理ノードに送付します。
`ssh-copy-id [ユーザー名@管理ノードのIP]`

```:実行例
[root@localhost ansible]# ssh-copy-id root@192.168.242.134
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.242.134 (192.168.242.134)' can't be established.
～省略～
Are you sure you want to continue connecting (yes/no)? yes
```
これで導入作業は完了です。

##Playbookの作成
PlaybookとはAnsibleで実行する内容を記述したファイルです。

###１．実行ファイルの編集
作業ディレクトリの配下に、実行ファイルとなるPlaybookを作成します。

今回はyumでhttpdをインストールするPlaybookを作成するため、
viで以下の内容のファイルを記述します。

```yml:test.yml
- hosts: all
  tasks:
    - name: install packages from yum
      yum: name=httpd
```
##２．Playbookの実行
全ての準備が完了したので、いよいよPlaybookを実行してみます。
`ansible-playbook -i 管理ノードのIP, [実行するPlaybook]`

```yml:test.yml実行結果
[root@localhost ansible]# ansible-playbook -i 192.168.242.134, test.yml

PLAY [all] *********************************************************************

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

TASK [install packages from yum] ***********************************************
changed: [192.168.242.134]　←httpdのインストールを行ったログ

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

[root@localhost ansible]#
```
管理ノード側でHTTPDがインストールされている事が確認できました。

```
[root@test01 ~]# yum info httpd
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
インストール済みパッケージ
名前                : httpd
アーキテクチャー    : x86_64
バージョン          : 2.4.6
リリース            : 80.el7.centos.1
容量                : 9.4 M
リポジトリー        : installed
提供元リポジトリー  : updates
要約                : Apache HTTP Server
URL                 : http://httpd.apache.org/
ライセンス          : ASL 2.0
説明                : The Apache HTTP Server is a powerful, efficient, and
                    : extensible web server.

[root@test01 ~]#
```


以上

## おまけ：よく使うモジュール一覧
よく使うモジュールを簡単にまとめました。使用方法は[公式](https://docs.ansible.com/)を参考にしてください。

|タスク名|内容|
|:--:|:--|
|[command](https://docs.ansible.com/ansible/latest/modules/command_module.html)|管理ノード上でコマンドを実行する|
|[copy](https://docs.ansible.com/ansible/2.5/modules/copy_module.html)|ファイルを管理ノードにコピーする|
|[debug](https://docs.ansible.com/ansible/latest/modules/debug_module.html)|変数をメッセージとして出力する|
|[linefile](https://docs.ansible.com/ansible/latest/modules/lineinfile_module.html)|ファイルの変更を行う|
|[sytemd](https://docs.ansible.com/ansible/latest/modules/systemd_module.html)|サービスの起動/停止の他に有効化/無効化も可能|
|[yum](https://docs.ansible.com/ansible/latest/modules/yum_module.html)|yumによるインストール|