AnsibleのインベントリファイルはLinuxのhostsファイルとは違う

Pocket

***本記事にはプロモーションが含まれています。***

インベントリファイルはhostsという名前になっていることが多いです。

Ansibleを使い始めた時、Linuxの/etc/hostsファイルと一緒なのかと思っていました。

よく紹介されている例でも、IPアドレスが直書きされています。

それでも動くのですが、調べていくうち/etc/hostsファイルとは違うことがわかってきました。

インベントリファイルは、ホストの名前とその設定を書く場所です。

よくある例では、

[default]
192.168.33.10

と書かれています。これは、defaultグループに192,168.33.10でアクセスできるホストがあるという設定です。

でも、次のような書き方もあります。

host01 ansible_host=192.168.33.10

[webservers]
host02 ansible_host=192.168.33.20

このインベントリファイルの意味は、host01はグループに属していません。IPアドレスは、192.168.33.10です。webserversというグループにhost02という名前のマシンがあって、そのIPアドレスが192.168.33.20という意味です。

どうもインベントリファイルは、/etc/hostsファイルとは違って名前を設定するファイルのようです。

Ansibleのtutorialを見てみると、Getting Startedでは、

192.0.2.50
aserver.example.org
bserver.example.org

このように直書きしたものもありますが、Inventoryの説明では、

mail.example.com

[webservers]
foo.example.com
bar.example.com

[dbservers]
one.example.com
two.example.com
three.example.com

このようにすべて、名前で設定されています。

また、IPアドレスだけでなくいろいろな設定を書くことができます。

ansible_connectionで接続方法が設定できたり、ansible_userで接続時のユーザー名を設定できたりします。

foo.example.com ansible_host=192.168.33.10 ansible_connection=local ansible_user=foo

:varsという拡張子をつけることでグループを一括して設定を書くことができます。

[webservers]
foo.example.com
bar.examble.com

[webservers:vars]
ansible_connection=local
ansible_ssh_private_key_file=/home/example/.ssh/aws.pem

AnsibleのインベントリファイルはLinuxのhostsファイルとは違うという話でした。

Pocket

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください