インフラ

Ansibleのインベントリをyamlで書いてみる

yaml インベントリ

こんにちは、ちゃりおです。

ansibleのインベントリyamlで書けるのを最近しりました。
(既存がiniでコピペして使ってたので。。)

今回は、yamlでのインベントリの書き方についてまとめてみます。

ちゃりお
ちゃりお
インベントリのyamlでの書き方について

インベントリファイルとは

Ansibleを実行する対象をリストにしたファイルです。
このファイルにサーバやネットワーク機器の情報を書きます。

対象に与える変数を定義することもできます。
サーバAにはntpAの設定、サーバBにはntpBの設定をいれるなど。

Ansible Inventory

iniで書いた場合

mail.example.com

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

[dbservers]
one.example.com
two.example.com
three.example.com
  • 可読性が高い(シンプルにホストだけ書くならiniのほうが個人的に読みやすいです)
  • 書くのが簡単
  • デフォルトがini(/etc/ansible/hosts)

ymlで書いた場合

all:
  hosts:
    mail.example.com:
  children:
    webservers:
      hosts:
        foo.example.com:
        bar.example.com:
    dbservers:
      hosts:
        one.example.com:
        two.example.com:
        three.example.com:

ymlで書く場合、リストを使うことができます。
同じことをiniでやる場合、ファイルを分割する必要があります。

all:
  children:
    webservers:
      hosts:
        foo.example.com:
      vars:
        logrotate:
          conf_names:
            - syslog
            - nginx

  • リストが使える
  • ymlで統一できる

まとめ 結局どっちで書くのがいいの

新しく書くならymlのほうがいい気がします。
リストが使えるのでより柔軟にインベントリ書くことができます。
また、サポートされるようになったのもyml形式のほうが新しいです。

既存でiniを使っている場合、無理に移行する必要はないと思います。
ファイルを分ければ、特にiniでできないこともないです。

参考

Working with Inventory
[Ansible] インベントリファイルを YAML 形式で書く

関連記事

Ansibleでamazon-extrasを使ってphpをインストールするこんにちは、ちゃりおです。 今回は、amazon-extras(amazonが管理しているパッケージ群)を使ってphpをインストールし...
【Ansible】playbookを分割してユーザ作成・グループ作成をする以前、ユーザの作成をやってみたのですが、今回はplaybookを分けてやってみます。 playbookを分けると、再利用性や可読性が高...
効率よく公開鍵を配布する方法 Ansibleで複数のサーバとユーザに公開鍵を登録する複数のユーザを作成して、それぞれ公開鍵を配置したい時がたまにあります。 sshして公開鍵を置くのは、面倒です。1台とかだったらいいかもし...

Amazonで「Ansible」の本をみてみる!!