Ansibleの第一歩


はじめに

Ansibleを触ったことがなかったので、まずはインストールからやってみます。
インストールするのはAWS上に構築したUbuntu 16.04です。

Ansibleのインストール

公式手順通りに以下のコマンドを実行します。

$ sudo apt update
$ sudo apt install software-properties-common
$ sudo apt-add-repository --yes --update ppa:ansible/ansible
$ sudo apt install ansible

インストール後の確認

インストールできているか確認します。

$ ansible --version
ansible 2.9.6
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/home/ubuntu/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/dist-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.12 (default, Oct  8 2019, 14:14:10) [GCC 5.4.0 20160609]

動作確認の内容

以下の2点を確認したいと思います。
 ①自身(ローカルホスト)に対してのping応答
 ②ノードに対してのping応答

設定

動作確認のための設定を行います。任意のディレクトリにインベントリファイルを作成します。
node-1, node-2は自身をノードとして扱うようにするため、localhostと同じくループバックアドレスを記載します。

inventoryファイル

[localhost]
127.0.0.1 ansible_connection=local

[nodes]
node-1 ansible_host=127.0.0.1 ansible_connection=local
node-2 ansible_host=127.0.0.1 ansible_connection=local

ローカルホストに対する動作確認

まずは自身に対してpingを打つansibleコマンドを実行します。"pong"と返ってくれば成功のようです。

$ ansible localhost -i inventory -m ping -o
127.0.0.1 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "deprecations": 
[{"msg": "Distribution Ubuntu 16.04 on host 127.0.0.1 should use /usr/bin/python3, but is using /usr/bin/python for backward
 compatibility with prior Ansible releases. A future Ansible release will default to using the discovered platform python for this
 host. See https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information", "version":
 "2.12"}], "ping": "pong"}

警告が出た

"pong"が返ってきましたが、警告が出ています。インタプリタにPython3を使うべきらしいです。現在はPythonがインタプリタに使われているようですので、インベントリファイルで指定します。

[localhost]
127.0.0.1 ansible_connection=local
127.0.0.1 ansible_python_interpreter=/usr/bin/python3

リトライ

再度pingを実行してみます。警告がなくなりました。

$ ansible localhost -i inventory -m ping -o
127.0.0.1 | SUCCESS => {"changed": false, "ping": "pong"}

ノードに対する動作確認

ノード2つに対してpingを打ってみます。警告が出ました。ノードごとのインタプリタ設定についてはわかったら更新します。

$ ansible all -i inventory -m ping -o
node-2 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "deprecations": 
[{"msg": "Distribution Ubuntu 16.04 on host node-2 should use /usr/bin/python3, but is using /usr/bin/python for backward 
compatibility with prior Ansible releases. A future Ansible release will default to using the discovered platform python for this
 host. See https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information", "version":
 "2.12"}], "ping": "pong"}

node-1 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "deprecations": 
[{"msg": "Distribution Ubuntu 16.04 on host node-1 should use /usr/bin/python3, but is using /usr/bin/python for backward 
compatibility with prior Ansible releases. A future Ansible release will default to using the discovered platform python for this 
host. See https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information", "version": 
"2.12"}], "ping": "pong"}