現象
YAML形式で作成したInventoryファイルがAWXのプロジェクトのInventory fileとして認識しない。
(ini形式の場合は認識する)
詳細
AWXにて、プロジェクトを以下の設定で作成しています。
Source Control Type: Git
Source Control URL: GitリポジトリのURL
Source Control Branch: test
その後、Inventoryを追加する際に、Sourceを「Sourced from a Project」とし、上記で作成したプロジェクトを指定しました。
すると、Inventory filesのリストにYAML形式のInventoryだけが出てきません(ini形式のInventoryファイルやリポジトリ中の関係のないシェルスクリプトやpythonスクリプトは出てきます)。
表示しないYAML形式のファイルは、以下の様にして認識出来るかチェックしています(yamllintも問題無し)。
❯ ansible-inventory -i inventories/hoge_inventory.yaml --list --export
また、AWXで表示できないYAML形式のInventoryは以下の様になっています。
YAML
1--- 2all: 3 children: 4 hoge_group_all: 5 hosts: 6 hoge[01:03].example.com: 7 hoge-lb01.example.com: 8 hoge: 9 hosts: 10 hoge[01:03].example.com: 11 hoge_lb: 12 hosts: 13 hoge-lb01.example.com:
また、ansible-playbookコマンドで実行する場合に指定すると正常に実行出来ました。
補足
hoge_inventory.yaml として拡張子を指定していますが、インベントリーの構築方法 — Ansible Documentation にある通り、そもそも拡張子の指定も不要な認識です。
環境
AWX 17.0.1
ansible v2.9.17
追記1
ansible.cfgに以下のようにしてInventoryプラグインを指定したり、inventoryファイル自体を指定してみましたが、AWX上のリストの候補は代わりませんでした
[defaults] stdout_callback = yaml inventory = inventories/hoge_inventory.yaml [inventory] enable_plugins = yaml, ini, host_list, script, auto ignore_patterns = collections, deploy_files, group_vars, host_vars, roles, sample, scripts, wf_playbooks
追記2
twitterで頂いた情報
https://twitter.com/sky_jokerxx/status/1534133491733962752?s=20&t=7Za3gfFSKiNeHhOwE8x4OA
上記にある通り、そもそも無理な話だった。
https://github.com/ansible/awx/blob/f5102ed24daefcf442077bf42eab21af55f2c3e9/awx/main/models/projects.py#L219-L237
https://github.com/ansible/awx/blob/f5102ed24daefcf442077bf42eab21af55f2c3e9/awx/main/utils/ansible.py#L67-L98
上記のAWXのコードを確認したところ、AWXの仕様でInventoryのリストに挙げる候補は以下の通り
- roles、tasks、dotフォルダ、group_vars、hosts_varsは対象外
- InventoryファイルのリストはMAX50まで
- ファイル名が inventory, hosts は必ず認識
*.ini
は常に認識- 最初の10行ファイルを見て正規表現で
^[a-zA-Z0-9_.=\[\]]
にハマれば対象
と言う事で、現行のAWX17.0.1では任意のInventoryファイル名の指定は出来ない。
しかし、AWX 21.0.0だと以下の様にInventory及びPlaybookなどは直接入力指定出来るようになっているので回避可能。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/06/08 01:26