第5章 インベントリーファイルのインポート
Automation Controller を使用すると、インベントリーファイルを最初から作成するのではなく、ソースコントロールから選択できます。ファイルは編集不可であり、ソースでインベントリーが更新されると、関連付けられている group_vars ファイルや host_vars ファイル、またはディレクトリーを含むプロジェクト内のインベントリーも、それに応じて更新されます。SCM タイプは、インベントリーファイルとスクリプトの両方を使用できます。インベントリーファイルとカスタムインベントリータイプはどちらもスクリプトを使用します。
インポートされたホストには、デフォルトで imported という説明があります。これは、特定のホストで _awx_description 変数を設定することでオーバーライドできます。たとえば、ソースの .ini ファイルからインポートする場合は、次のホスト変数を追加できます。
[main] 127.0.0.1 _awx_description="my host 1" 127.0.0.2 _awx_description="my host 2"
[main]
127.0.0.1 _awx_description="my host 1"
127.0.0.2 _awx_description="my host 2"
同様に、グループの説明もデフォルトでは imported ですが、_awx_description でオーバーライドすることもできます。
ソース管理で古いインベントリースクリプトを使用するには、自動化実行の使用 の 古いインベントリースクリプトのエクスポート を参照してください。
5.1. ソースコントロール管理インベントリーソースフィールド リンクのコピーリンクがクリップボードにコピーされました!
使用するソースのフィールドは以下のとおりです。
-
source_project: 使用するプロジェクト。 -
source_path: ディレクトリーまたはファイルを示すプロジェクト内の相対パス。空白のままにしても、"" はプロジェクトの root ディレクトリーを示す相対パスを表します。 -
source_vars: "file" タイプのインベントリーソースに設定されている場合には、実行時に環境変数に渡されます。
補足
- プロジェクトを更新すると、そのプロジェクトが使用されているインベントリーの更新が自動的にトリガーされます。
- プロジェクトの更新は、インベントリーソースの作成直後にスケジュールされます。
- インベントリー更新もプロジェクト更新も、関連ジョブの実行中にブロックされることはありません。
-
大規模なプロジェクト (約 10 GB) がある場合、
/tmpのディスク領域が問題になる可能性があります。
インベントリーの Add source ページから、Automation Controller UI で場所を手動で指定できます。インベントリーソースの作成手順は、ソースの追加 を参照してください。
プロジェクトの更新時に、リストを更新して最新のソースコントロール管理 (SCM) 情報を使用します。インベントリーソースが SCM インベントリーソースとしてプロジェクトを使用しない場合、更新時にインベントリーのリストが更新されない可能性があります。
インベントリーが SCM ソースを含む場合、インベントリー更新のジョブの Details ページに、プロジェクト更新のステータスインジケーターとプロジェクト名が表示されます。
ステータスインジケーターはプロジェクト更新ジョブにリンクします。
プロジェクト名はプロジェクトにリンクします。
関連ジョブの実行中にインベントリーの更新を実行できます。
5.1.1. サポートされるファイルの構文 リンクのコピーリンクがクリップボードにコピーされました!
Automation Controller は、Ansible の ansible-inventory モジュールを使用してインベントリーファイルを処理し、Automation Controller で必要となる有効なインベントリー構文をすべてサポートします。
インベントリースクリプトを Python で記述する必要はありません。ソースフィールドには任意の実行可能ファイルを入力できます。そのファイルに対して chmod +x を実行し、Git にチェックインする必要があります。
以下は、Automation Controller がインポート用に読み取ることができる JSON 出力の実際の例です。