【連載01】210.HOSTSを設定する

<b><font color="#ff6633">当記事はケーススタディの連載となっています。目次は[【こちら】](http://qiita.com/CsFactoryitter/items/6b8308b96afafd61ce5f
)です。</font></b>
<b><font color="#ff6633">最新のソースコードは[【GitHub】](https://github.com/csfactorygihubblog001/blogansible)で公開中です。</font></b>
サーバの責務は<b>[こちら](http://qiita.com/CsFactoryitter/items/032cc339048e52ee3586)</b>で確認ください。

##1.hosts設定概要
各サーバに設定するhostsファイルを指定する。

![image](https://qiita-image-store.s3.amazonaws.com/0/98085/7efd488c-9eca-137f-1651-b98f7bb9e026.png)

##2.playbookファイルの相関

![image](https://qiita-image-store.s3.amazonaws.com/0/98085/28b033cc-5c19-7e16-b36d-1b148d71d966.png)

##3.playbook(site.yml)
${ANSIBLE_HOME}/site.yml
[メインとなるplaybook(site.yml)](http://qiita.com/CsFactoryitter/items/3112c6d504d3b5a58011#3%E3%83%A1%E3%82%A4%E3%83%B3%E3%81%A8%E3%81%AA%E3%82%8Bplaybooksiteyml)参照

##4.hosts設定のplaybook(/operations/0075_hosts.yml)

${ANSIBLE_HOME}/operations/0075_hosts.yml

hosts設定のplaybookは以下の通り。playbook中のコメントの補足に関しては「[5.補足説明](#5%E8%A3%9C%E8%B6%B3%E8%AA%AC%E6%98%8E)」を参照。

```yaml:
# ===================
# hostsファイルにhost情報を書き込み
# ===================
- hosts: all
  sudo: no
  remote_user: root
  tasks:

# ===================
# /etc/hosts内に
# 192.16..134.195がなかったら192.168.134.195 managetermを記述する
# 192.16..134.196がなかったら192.168.134.196 apserv01を記述する
# 192.16..134.197がなかったら192.168.134.197 dbserv01を記述する
# 192.16..134.198がなかったら192.168.134.198 adminserv01を記述する
# ===================
    - debug: msg="HOST設定ファイルは環境依存します。環境変更時は切り替える必要有"
    - lineinfile: state=present dest=/etc/hosts regexp='^192.168.134.195' line='192.168.134.195 manageterm' create=yes　　#【4.A:/etc/hostsにサーバ情報を追記する】
    - lineinfile: state=present dest=/etc/hosts regexp='^192.168.134.196' line='192.168.134.196 apserv01' create=yes
    - lineinfile: state=present dest=/etc/hosts regexp='^192.168.134.197' line='192.168.134.197 dbserv01' create=yes
    - lineinfile: state=present dest=/etc/hosts regexp='^192.168.134.198' line='192.168.134.198 adminserv01' create=yes
```

##5.補足説明
【4.A:/etc/hostsにサーバ情報を追記する】コメント

/etc/hostsはインストール直後は大体以下のようになっている。

![image](https://qiita-image-store.s3.amazonaws.com/0/98085/f98d1be2-0cdf-5e9a-690e-e625fd500159.png)

>
127.0.0.1   adminserv01 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    <font color="#0066cc">- lineinfile: state=present dest=/etc/hosts regexp=</font><font color="#339900"><b>'^192.168.134.195'</b></font> <font color="#0066cc">line=</font><font color="#ff6600"><b>'192.168.134.195 manageterm'</b></font> <font color="#0066cc">create=<font color="#ff0000">yes</font></font>

lineinfileは正規表現にて該当する文字列が見つかった場合に行を置換する。

今回はhostsファイルに【<font color="#339900"><b>192.168.134.195から始まる文字列</b></font>】を探し出し<font color="#ff6600"><b>192.168.134.195 manageterm</b></font>に置換する。
もし該当する行がなければ<font color="#ff0000"><b>create=yes</b></font>で追記を行う。
デフォルトは「create=no」なので正規表現に該当しない場合は追記されない。

![image](https://qiita-image-store.s3.amazonaws.com/0/98085/1ab61414-033f-a9bb-e787-dc6ed0716189.png)

>
127.0.0.1   adminserv01 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.134.195 manageterm
192.168.134.196 apserv01
192.168.134.197 dbserv01
192.168.134.198 adminserv01

0075_hosts.ymlを実行するとhostsファイルが更新される。

1度目は該当せず追記。2度目以降は該当するが同じ値に置換されるだけなので冪等性は保つことが出来る。

##6.補足の補足
今回はymlファイルに直接IPアドレスを記述しているが、IP、ディレクトリ、host名、ポート等は環境依存しやすい情報の為、実際は外部ファイルに外出しする方がおすすめ。（[202.Ansible実行端末からのCentOSサーバ群を構築する（Ansible準備編）](http://qiita.com/CsFactoryitter/items/3112c6d504d3b5a58011#vansible-var%E3%82%BB%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3var_filesvars)参照）

次回は「[211.NFSをインストールし管理サーバ(adminserv01)とAPサーバ(apserv01)・DBサーバ(dbserv01)から接続する](http://qiita.com/CsFactoryitter/items/f951549c9beb962badcb)」について。

<b><font color="#ff6633">連載の目次は[【こちら】](http://qiita.com/CsFactoryitter/items/6b8308b96afafd61ce5f
)です。</font></b>