4.2. SCM インベントリーソースのフィールド
使用するソースのフィールドは以下のとおりです。
-
source_project
: 使用するプロジェクト。 -
source_path
: ディレクトリーまたはファイルを示すプロジェクト内の相対パス。空白のままにしても、"" はプロジェクトの root ディレクトリーを示す相対パスを表します。 -
source_vars
: "file" タイプのインベントリーソースに設定されている場合には、実行時に環境変数に渡されます。
補足
- プロジェクトを更新すると、そのプロジェクトが使用されているインベントリーの更新が自動的にトリガーされます。
- プロジェクトの更新は、インベントリーソースの作成直後にスケジュールされます。
- インベントリー更新もプロジェクト更新も、関連ジョブの実行中にブロックされることはありません。
-
大規模なプロジェクト (約 10 GB) がある場合、
/tmp
のディスク領域が問題になる可能性があります。
Automation Controller UI の Create Inventory Source ページから、手動で場所を指定できます。インベントリーソースの作成手順については、ソースの追加 を参照してください。
プロジェクトの更新時には、最新の SCM 情報を使用するようにリストを更新します。インベントリーソースが SCM インベントリーソースとしてプロジェクトを使用しない場合、更新時にインベントリーのリストが更新されない可能性があります。
インベントリーが SCM ソースを含む場合、インベントリー更新の Job Details ページには、プロジェクト更新のステータスインジケータとプロジェクト名が表示されます。
ステータスインジケーターはプロジェクト更新ジョブにリンクします。
プロジェクト名はプロジェクトにリンクします。
関連ジョブの実行中にインベントリーの更新を実行できます。
4.2.1. サポートされるファイルの構文
Automation Controller は、Ansible の ansible-inventory
モジュールを使用してインベントリーファイルを処理し、Automation Controller で必要となる有効なインベントリー構文をすべてサポートします。
Python でシェルスクリプトを記述する必要はありません。ソースフィールドに実行ファイルを入力し、そのファイルの chmod +x
を実行して Git に確認します。
以下は、Automation Controller がインポート用に読み取ることができる JSON 出力の有効な例です。
{ "_meta": { "hostvars": { "host1": { "fly_rod": true } } }, "all": { "children": [ "groupA", "ungrouped" ] }, "groupA": { "hosts": [ "host1", "host10", "host11", "host12", "host13", "host14", "host15", "host16", "host17", "host18", "host19", "host2", "host20", "host21", "host22", "host23", "host24", "host25", "host3", "host4", "host5", "host6", "host7", "host8", "host9" ] } }
関連情報
- インベントリーファイルの例については、test-playbooks/inventories を参照してください。
- その中のシェルスクリプトの例は、inventory /changes.py を参照してください。
- シェルスクリプトの実装方法は、サポート記事 How to migrate inventory scripts from Red Hat Ansible tower to Red Hat Ansible Automation Platform? を参照してください。