質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

Q&A

解決済

2回答

1514閲覧

AWX(Tower)のInventoryソースにプロジェクトにあるYAML形式のInventoryファイルを指定できない

yassan

総合スコア26

Ansible

Ansibleは、Python で書かれたサーバーの設定を管理するための 構成管理ツールです。

0グッド

0クリップ

投稿2022/06/06 10:14

編集2022/06/08 01:31

現象

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などは直接入力指定出来るようになっているので回避可能。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

Ansible Tower 3.8.6 で試してみました。
確かにファイルはプルダウンには出てこなかったんですけれども、ファイルパスを入力したらきちんと認識しました。
AWX では試せていませんがやってみてください。

イメージ説明

イメージ説明

投稿2022/06/07 10:45

SugiTK

総合スコア495

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yassan

2022/06/08 01:26

AWX 17.0.1では直接入力指定が出来ないので、ご提案頂いている対応では回避できませんでした。。。 ただ、ファイル名を inventory とすると認識するので、AWXをUpdateするまでは、ini形式か、ファイル名 inventoryのみでYAML形式を使うようにします。 情報ありがとうございました!!!
guest

0

結論

AWX 17.0.1では無理な話だった

回避策

AWXのVer.を上げる(21.0.0では回避可能であることは確認)

詳細

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などは直接入力指定出来るようになっているので回避可能。

また、以下のようなPRはあるけどOpenのまま。

Detect possible inventory plugin files by philipsd6 · Pull Request #4171 · ansible/awx

投稿2022/06/08 01:39

yassan

総合スコア26

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問