Exercise 1.0 - Anisbleのlab環境を確認してみよう

ラボを開始する前に、ぜひSlackに参加してみましょう! 今後のAnsibleの学習に役立つはずです。 ここでは日本のAnsibleユーザ会と2つのSlackチャンネルを紹介します。

Step 1

networking-workshop ディレクトリへ移動します。

[student1@ansible ~]$ cd networking-workshop/
[student1@ansible networking-workshop]$ pwd
/home/student1/networking-workshop

[student1@ansible networking-workshop]$

Step 2

ansible コマンドを --version オプションをつけて実行し、現在のコンフィグについて確認してみましょう。:

[student1@ansible networking-workshop]$ ansible --version
ansible 2.6.2
  config file = /home/student1/.ansible.cfg
  configured module search path = [u'/home/student1/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.5 (default, May  3 2017, 07:55:04) [GCC 4.8.5 20150623 (Red Hat 4.8.5-14)]

[student1@ansible networking-workshop]$

Note: 表示される ansible version は上記のものと異なる可能性があります。

このコマンドは、Ansibleのバージョン、実行ファイルの場所、Pythonのバージョン、利用するモジュールを検索する場所、ansible configuration fileの場所などが確認できます。

Step 3

cat コマンドを用いて、ansible.cfg ファイルの中身を見てみましょう。

[student1@ansible networking-workshop]$ cat ~/.ansible.cfg
[defaults]
connection = smart
timeout = 60
inventory = /home/student1/networking-workshop/lab_inventory/hosts
host_key_checking = False
private_key_file = /home/student1/.ssh/aws-private.pem
[student1@ansible networking-workshop]$

ansible.cfg ファイル内の以下のパラメータに注意してください。

Step 4

playbook内のplayにおいては、Anisbleのinventoryファイル内で定義されているターゲットホストのグループの制限を行うことができます。
Ansibleは複数のinventoryのタイプをサポートしています。 インベントリは、シンプルに定義されたホストのリストを定義することもできますし、(バックエンドのCMDBなどから)動的に実行されるスクリプトによって生成されるデバイスのリストでも構いません。

このラボでは、ini形式で書かれたファイルベースのインベントリを使用します。
実際に登録されているインベントリを確認するには catコマンドを使います:

[student1@ansible networking-workshop]$ cat ~/networking-workshop/lab_inventory/hosts
[all:vars]
ansible_port=22

[routers:children]
cisco

[cisco]
rtr1 ansible_host=13.112.229.114 private_ip=172.16.135.74
rtr2 ansible_host=13.115.23.185 private_ip=172.17.36.145
rtr3 ansible_host=13.112.120.227 private_ip=172.16.171.158
rtr4 ansible_host=3.112.2.222 private_ip=172.17.153.244

[cisco:vars]
ansible_user=ec2-user
ansible_network_os=ios

[dc1]
rtr1
rtr3

[dc2]
rtr2
rtr4

[hosts]
node1 ansible_host=52.194.213.203 ansible_user=ec2-user private_ip=172.17.193.235

[control]
ansible ansible_host=52.195.5.30 ansible_user=ec2-user private_ip=172.16.240.136

Step 5

出力結果を確認していきましょう。 [ ] は、グループを定義しています。 例えば、[dc1]dc1グループ において、 rtr1rtr3 の2つのホスト(ここではルーターですが)が含まれていることを示しています。

また、グループ定義は、ネスト構造 を取ることができます。 上記の例では、グループ [routers] は、 [cisco] との2つのグループが所属する親グループとなります。

親グループは、 children ディレクティブを用いて宣言されます。ネスト構造が可能なことで、構成や変数の割り当てに柔軟性を持たせることができます。

注意: all と定義されたグループがあります。このグループはデフォルトで定義されており、インベントリー内の全てのグループと全てのホストが含まれます。

また、グループやホストに変数を割り当てることができます。 例えば、ホスト変数はホスト自体と同じ行に宣言/定義されています。 rtr1 での例を見てみましょう:

rtr1 ansible_host=13.112.229.114 private_ip=172.16.135.74

[cisco:vars]のグループは、ciscoグループに所属するホストに大して共通の変数を定義しています。

Complete

お疲れ様でした。 lab exercise 1.0 は以上です。


ここをクリックすると Ansible Linklight - Networking Workshop へ戻ります