Documentation

4. インベントリーファイルのインポート

コントローラーでは、ゼロからインベントリーファイルを作成するのではなく、ソースコントロールからインベントリーファイルを選択できる機能が導入されました。この機能は、コンテンツのブラウザーを編集するのではなく、コンテンツをソースコントロールから取得する以外は、カスタムのインベントリースクリプトと同じです。つまり、このファイルは編集できず、group_vars ファイル、host_vars ファイル、またはこの 2 つのファイルに関連付けられているディレクトリーなど、ソースでインベントリーがソースで更新されるのに従い、プロジェクト内のインベントリーも同様に更新されます。SCM タイプは、インベントリーファイルもスクリプトも両方消費し、両方に含まれるインベントリーファイルやカスタムタイプで重複がある場合は複数のスクリプトが実行されます。

インポートされたホストには、デフォルトでインポート済み (imported) という説明があります。これは、特定のホスト上の _awx_description 変数でオーバーライドできます。たとえば、ソースの .ini ファイルからインポートする場合は、次のホスト変数を追加できます。

[main]
127.0.0.1 _awx_description="my host 1"
127.0.0.2 _awx_description="my host 2"

同様に、グループの説明もデフォルトで「imported」ですが、_awx_description で上書きすることもできます。

ソース管理に古いインベントリースクリプトを使用するには、Automation Controller User Guide古いインベントリースクリプトをエクスポートする を参照してください。

4.1. カスタムの動的インベントリースクリプト

バージョン管理に保存されているカスタムの動的インベントリースクリプトは、インポートして、実行することができます。この機能により、コントローラーにコピーアンドペーストし、ソースコントロールから直接プルしてから実行する必要なく、インベントリースクリプトへの変更がより簡単に加えられるようになりました。スクリプトは、作業の実行に必要な認証情報を処理するために記述する必要があるので、スクリプトに必要な Python ライブラリーをインストールする必要があります (これは、カスタムの動的インベントリースクリプトと同じ要件です)。また、ユーザー定義のインベントリーソーススクリプトと SCM ソースは Playbook に関する Ansible virtualenv の要件に準拠する必要があるため、これはどちらにも当てはまります。

SCM インベントリーソース自体を編集する場合は、環境変数を指定することができます。スクリプトによってはこれで十分ですが、この方法では、クラウドプロバイダーやインベントリーへのアクセスを可能にする機密情報が安全に保存されません。

より良い方法として、使用予定のインベントリースクリプトの新規認証タイプを作成してください。認証タイプでは、入力する情報に必要なタイプをすべて指定する必要があります。このタイプの認証情報を作成する場合には、シークレットは暗号化形式で保存されます。インベントリーソースにその認証情報を適用する場合、スクリプトは、環境変数やファイルなどの入力データにアクセスできます。

詳細については、「Credential types」を参照してください。

4.2. SCM インベントリーソースのフィールド

使用するソースのフィールドは以下のとおりです。

  • source_project: 使用するプロジェクト

  • source_path: ディレクトリーまたはファイルを示すプロジェクト内の相対パス。これが空のままの場合は、" " はプロジェクトの root ディレクトリーを指す相対パスを表します

  • source_vars: "file" タイプのインベントリーソースに設定されている場合には、実行時に環境変数に渡されます

プロジェクトを更新すると、そのプロジェクトが使用されているインベントリーの更新が自動的に発生します。プロジェクトの更新は、インベントリーリソースの作成直後にスケジュールされます。関連ジョブの実行中は、インベントリー更新もプロジェクト更新もブロックされません。大規模なプロジェクト (約10 GB) がある場合は、/tmp のディスク領域が問題になる可能性があります。

コントローラーユーザーインターフェースのインベントリーソースの作成ページに場所を指定できます。インベントリーソースの作成方法は、『Automation Controller User Guide』の「インベントリー」セクションを参照してください。

この一覧は、プロジェクトが更新されたら最新の SCM 情報にリフレッシュする必要があります。インベントリーソースが SCM インベントリーソースとしてプロジェクトを使用しない場合には、インベントリーの一覧は更新時にはリフレッシュされません。

インベントリーに SCM ソースが含まれる場合に、インベントリー更新のジョブ詳細ページに、プロジェクト更新のステータスインジケーターと、プロジェクト名が表示されます。ステータスインジケーターは、プロジェクト更新ジョブにリンクされ、プロジェクト名はプロジェクトにリンクされます。

_images/jobs-details-scm-sourced-inventories.png

関連するジョブの実行中にインベントリーの更新を実行できます。

4.2.1. サポートされるファイルの構文

automation controller は、Ansible の ansible-inventory モジュールを使用してインベントリーファイルを処理し、コントローラーで必要な有効なインベントリー構文をすべてサポートします。