web-dev-qa-db-ja.com

YAMLでAnsibleホスト/インベントリファイルを書くことは可能ですか?

ベストプラクティスページには、hostsファイルにhosts.ymlを使用する例があります。

YAML-based hosts file

ただし、ドキュメントでは、hostsファイルを記述するためのINI構文しか見つけることができません。

YAMLのインベントリファイルの構文は何ですか?

31
Behrang

はい。

非推奨 2012年のバージョン0.6で 再導入 2016年のバージョン2.1に最初に含まれたコミットです。

GitHubの サンプルファイル には、ガイドラインと例が含まれています。

  • コメントは「#」文字で始まります
  • 空白行は無視されます
  • 最上位のエントリはグループであると想定されます
  • ホストはグループのホストで指定する必要があります:そしてそれらはキーでなければなりません(:終了)
  • グループは子、ホスト、varsキーを持つことができます
  • ホストの下で定義されたものはすべてvarと見なされます
  • ホスト名またはIPアドレスを入力できます
  • ホスト名/ IPは複数のグループのメンバーになることができます

例1:グループ化されていないホスト、「グループ化されていない」グループに入れる

ungrouped:
  hosts:
      green.example.com:
          ansible_ssh_Host: 191.168.100.32
      blue.example.com:
      192.168.100.1:
      192.168.100.10:

例2:「webservers」グループに属するホストのコレクション

webservers:
  hosts:
      alpha.example.org:
      beta.example.org:
      192.168.1.100:
      192.168.1.110:

例3:範囲を使用してホストを作成し、グループに子グループと変数を追加できます。子グループは、通常グループに追加するものなら何でも定義できます

testing:
  hosts:
      www[001:006].example.com:
  vars:
      testing1: value1
  children:
      webservers:
          hosts:
              beta.example.org:
38
techraf

以前の回答は正しいですが、ここにスクリーンショットで並んでいるような単純なhosts.yamlとINIがあります。実際のhosts.yamlもここにコピーしていますので、コピーして貼り付けて編集したい場合はあなた自身

--- 
all: 
  hosts:               
    xmp: 
      ansible_connection: ssh
      ansible_Host: "192.1.0.1"
      ansible_port: 7822
      ansible_user: nanoseco

enter image description here

いくつかの詳細情報:

https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html

2
grepit

Ansible INI to YAML inventory converter on githubを発見しました。

このリポジトリには、Python形式のAnsibleインベントリをYAML形式に変換するためのINIスクリプトが含まれています。

何らかの理由で、表示された正しい[01:03]の代わりに=で区切られたホスト範囲(:)で変換が終了しました。

2
jitter