Documentation

17. インベントリー

Inventory (インベントリー) は、ジョブを起動できるホストのコレクションです (Ansible インベントリーファイルと同様)。インベントリーはグループに分類され、それらのグループには実際のホストが含まれます。グループは、ホスト名を automation controller に入力して手動で取得することも、サポートされるクラウドプロバイダーから取得することもできます。

注釈

カスタム動的インベントリースクリプト、またはコントローラーでネイティブにサポートされていないクラウドプロバイダーがある場合に、それをコントローラーにインポートすることもできます。Automation Controller Administration Guide の「インベントリーファイルのインポート」を参照してください。

インベントリウィンドウは、現在利用できるインベントリーの一覧が表示されます。インベントリーの一覧は、名前と検索タイプ、組織、説明、インベントリーの所有者と変更者、または必要に応じて追加の基準で並べ替えることができます。

Inventories - home with examples

インベントリーの詳細の一覧には、以下が含まれます。

  • 名前: インベントリー名。インベントリー名をクリックすると、選択したインベントリーのプロパティー画面に移動します。ここでは、インベントリーのグループおよびホストが表示されます (このビューは edit button アイコンからアクセスすることもできます)。

  • ステータス

ステータスは以下のとおりです。

  • 成功: インベントリーソースの同期が正常に完了した時

  • 無効: インベントリーに追加されたインベントリーソースがない

  • エラー: インベントリーソースの同期がエラーを出して完了する場合

各種の状態のインベントリーの例。これには、無効の状態の詳細が含まれます。

_images/inventories-home-with-status.png
  • タイプ: これが標準インベントリーか、またはスマートインベントリーであるかどうかを特定します。

  • 組織: インベントリーが属する組織。

  • アクション: 以下のアクションを選択したインベントリーについて実行できます。

    • 編集 (edit button): 選択したインベントリーのプロパティーを編集します。

    • コピー (copy): 新しいインベントリーの作成用のテンプレートとして、既存のインベントリーのコピーを作成します。

注釈

他の作業アイテムが使用するアイテムを削除する場合は、メッセージが開き、削除されるアイテムと、削除の確認を促すプロンプトが表示されます。画面によっては、無効なアイテムや、過去に削除されたアイテムが含まれる場合があるので、それらのアイテムは実行に失敗します。以下は、これらのメッセージ例です。

_images/warning-deletion-dependencies.png

17.1. スマートインベントリー

スマートインベントリーは、保存した検索で定義されるホストのコレクションであり、標準インベントリーのように表示し、ジョブ実行で簡単に使用できます。組織管理者には、それぞれの組織内のインベントリーへの管理者パーミッションがあり、スマートインベントリーを作成できます。スマートインベントリーは KIND=smart で特定されます。スマートインベントリーは、検索で使用されるのと同じ方法で定義できます。InventorySource はインベントリーに直接関連付けられます。

Inventory モデルには、以下のように、デフォルトで空白となっている新規フィールドが含まれていますが、スマートインベントリー向けに以下のように設定されます。

  • スマートインベントリーの場合には、 kindsmart に設定される

  • スマートインベントリーの場合には、 host_filterkindsmart に設定される

host モデルには関連するエンドポイント (ホストが関連付けられているすべてのスマートインベントリーのセットを識別する smart_inventories) があります。メンバーシップテーブルは、スマートインベントリーに対してジョブが実行されるたびに更新されます。

注釈

メンバーシップをより頻繁に更新するには、ファイルベースの設定 AWX_REBUILD_SMART_MEMBERSHIPTrue (デフォルトは False) に変更します。これにより、次のイベントのメンバーシップが更新されます。

  • 新規ホストが追加される

  • 既存ホストが変更される (更新または削除される)

  • 新規スマートインベントリーが追加される

  • 既存スマートインベントリーが変更される (更新または削除される)

実際のインベントリーは、編集可能にせずに表示することができます。

  • ホストおよびグループの名前はインベントリーソースの同期の結果として作成されます。

  • グループのレコードは編集したり、移動したりすることはできません。

通常のインベントリーと同様に、スマートインベントリーのホストエンドポイント (/inventories/N/hosts/) からホストを作成することはできません。スマートインベントリーの管理者には、名前、説明、変数および削除機能などのフィールドを編集するパーミッションがありますが、host_filter を変更するパーミッションはありません。これを変更すると、(別のインベントリー内にプライマリーメンバーシップを有する) ホストの中のどのホストがスマートインベントリーに組み込まれるかに影響があるためです。host_filter はスマートインベントリーの組織内のインベントリーに含まれるホストのみに適用されることに注意してください。

host_filter を変更するには、インベントリーの組織の組織管理者である必要があります。組織管理者には組織内のすべてのインベントリーへの暗黙的な「管理」アクセスをすでに有しているため、組織管理者が有していないパーミッションが必要になることはありません。

スマートインベントリーの管理者は、(組織の管理者ではない) 他のユーザーに対し、スマートインベントリーへの「使用」や「アドホック」などのパーミッションを付与することができ、これらのパーミッションは、他の標準インベントリーの場合と同様にロールが示唆する各種アクションを許可します。ただし、これにより、これらの管理者に (異なるインベントリーにある) ホストへの特別なパーミッションが付与される訳ではありません。それらの管理者は、スマートインベントリーホストの一覧でホストを閲覧できますが、ホストの直接の読み取りパーミッションが付与される訳ではなく、/#/hosts/ で追加のホストを確認できる訳でもありません。

ある状況では、以下を変更することができます。

  • インベントリーソースを使ってインベントリーで手動で作成された新規ホスト

  • インベントリーソースの同期の結果として作成されたグループ

  • 変更可能なホストおよびグループの変数

スマートインベントリーに関連付けられたホストは表示される際に明示されます。スマートインベントリーの結果に同じホスト名を持つ複数のホストが含まれる場合、一致するホストの 1 つのみがスマートインベントリーの一部として組み込まれ、ホスト ID 別に並べ替えられます。

17.2. inventory プラグイン

インベントリーの更新は、それぞれのインベントリープラグインで解析される動的に生成された YAML ファイルを使用します。Automation Controller Version 4.1.0 では、ユーザーは以下のすべてのインベントリーソースの source_vars インベントリーソースを使用して、新しいスタイルのインベントリープラグイン設定をコントローラーに直接提供できるようになりました。

インベントリーソースに新規に作成された設定には、デフォルトのプラグイン設定値が含まれます。3.8 で新たに作成されたインベントリーソースを 3.7 ソースの出力に一致させるには、そのソースに特定の設定値セットを適用する必要があります。後方互換性を確保するために、コントローラーはこれらのソースごとに「テンプレート」を使用して、インベントリープラグインの出力をレガシー形式で使用します。新しいスタイルインベントリープラグインの出力に移行するのに役立つ各ソースおよびそのテンプレートについては、本書の「サポートされているインベントリープラグインテンプレート」を参照してください。

トップレベルキーとして plugin: foo.bar.baz が含まれる source_vars では、InventorySource ソースに基づいてランタイム時に適切な完全修飾インベントリープラグイン名に置き換えられます。たとえば、実行時に InventorySource に ec2 が選択されると、プラグインが amazon.aws.aws_ec2 に設定されます。

17.3. 新規インベントリーの追加

新規インベントリーの追加には、複数のコンポーネントが必要です。以下をクリックして、各コンポーネントに移動します。

新規インベントリーまたはスマートインベントリーを作成するには、以下を実行します。

  1. 追加 ボタンをクリックし、作成するインベントリーのタイプを選択します。

インベントリーのタイプは、作成フォームの上部に識別されます。

Inventories_create_new - create new inventory

  1. 以下のフィールドに該当する詳細を入力します。

  • 名前: このインベントリーに適した名前を入力します。

  • 説明: 任意の説明を入力します (オプション)。

  • 組織: 必須。利用可能な組織から選択します。

  • スマートホストフィルター: (スマートインベントリーのみに適用) search ボタンをクリックして別個の動的ホストウィンドウを開き、このインベントリーのホストをフィルターします。これらのオプションは、選択した組織に基づくものです。

    フィルターは、タグを使用して該当の名前を含むホストをフィルターする点で、タグに似ています。そのため、スマートホストフィルター フィールドにデータを投入するには、実際にホスト自体を選択するのではなく、希望のホストを含むタグを指定します。検索 フィールドにタグを入力して、[Enter] を押します。 フィルターでは、大文字と小文字が区別されます。詳細は、「スマートホストフィルター」セクションを参照してください。

  • インスタンスグループ: search ボタンをクリックして別個のウィンドウを開きます。このインベントリーの実行に使用するインスタンスグループを選択します。一覧に多くのオプションが含まれる場合、検索を使用してオプションの範囲を絞ります。

  • 変数: このインベントリーのすべてのホストに適用される変数の定義および値。JSON または YAML 構文を使用して変数を入力します。ラジオボタンを使用してこれら 2 つの間の切り替えを行います。

Inventories_create_new_saved - create new inventory

  1. 完了したら 保存 をクリックします。

新規インベントリーが保存された後に、パーミッション、グループ、ホスト、およびソースの設定や、完了したジョブの表示に進みます (インベントリーのタイプに応じて適用可能な場合)。詳細の説明については、後続のセクションを参照してください。

17.3.1. パーミッションの追加

  1. アクセス タブで 追加 ボタンをクリックします。

  2. 追加するユーザーまたはチームを選択し、**次へ**をクリックします。

  3. リストから 1 つまたは複数のユーザーを選択します。これには、メンバーとして追加するユーザーの隣にあるチェックボックスをクリックして、次へ をクリックします。

_images/organizations-add-users-for-example-organization.png

この例では、追加するユーザーが 2 つ選択されています。

  1. 選択したユーザーやチームに割り当てるロールを選択します。役割の一覧は、下にスクロールして確認してください。リソースによって利用できるオプションが異なります。

_images/organizations-add-users-roles.png
  1. 保存 ボタンをクリックすると、選択したユーザーまたはチームにロールが適用され、メンバーとして追加されます。

ユーザー/チームの追加ウィンドウが閉じ、各ユーザーやチームに割り当てられた更新済みのロールが表示されます。

Permissions tab with Role Assignments

特定ユーザーのロールを削除するには、そのリソースの横にある「関連付けの解除」(x) ボタンをクリックします。

_images/permissions-disassociate.png

これにより確認ダイアログが起動し、関連付けの解除を確定するように求められます。

_images/permissions-disassociate-confirm.png

17.3.2. グループの追加

インベントリーは、ホストおよび他のグループか、またはホストが含まれるグループに分類されます。グループは標準インベントリーのみに適用され、スマートインベントリーから直接設定することはできません。既存グループは、標準インベントリーで使用されるホストに関連付けることができます。標準インベントリーで選択可能なアクションには以下が含まれます。

  • 新規グループの作成

  • 新規ホストの作成

  • 選択したインベントリーでのコマンドの実行

  • インベントリープロパティーの編集

  • グループおよびホストのアクティビティーストリームの表示

  • インベントリーの構築に関するヘルプの取得

注釈

インベントリーソースはグループに関連付けられていません。生成されたグループは最上位であり、依然として子グループを持つ可能性があり、生成されるすべてのグループにホストを含めることができます。

インベントリーの新規グループを作成するには、以下を実行します。

  1. 追加 ボタンをクリックして、グループの作成 ウィンドウを開きます。

Inventories_manage_group_add

  1. 必須およびオプションのフィールドに該当する詳細を入力します。

  • 名前: 必須

  • 説明: 任意の説明を入力します (オプション)。

  • 変数: このグループのすべてのホストに適用される定義および値を入力します。JSON または YAML 構文のいずれかを使用して変数を入力します。ラジオボタンを使用してこれら 2 つの間の切り替えを行います。

  1. 完了したら、保存 をクリックします。

17.3.2.1. グループ内でのグループの追加

グループ内にグループを追加するには、以下を実行します。

  1. 関連するグループ タブをクリックします。

  2. 追加 ボタンをクリックして、設定にすでに存在するグループを追加するか、新規グループを作成するかどうかを選択します。

  3. 新規グループを作成する場合、該当する詳細情報を必須およびオプションフィールドに入力します。

  • 名前: 必須

  • 説明: 任意の説明を入力します (オプション)。

  • 変数: このグループのすべてのホストに適用される定義および値を入力します。JSON または YAML 構文のいずれかを使用して変数を入力します。ラジオボタンを使用してこれら 2 つの間の切り替えを行います。

  1. 完了したら、保存 をクリックします。

グループの作成 ウィンドウが閉じ、新規に作成されたグループが、元のグループに関連付けられたグループの一覧のエントリーとして表示されます。

Inventories add group subgroup

既存グループを追加する選択をした場合、選択可能なグループが別個の選択ウィンドウに表示されます。

Inventories add group existing subgroup

グループが選択されると、グループに関連付けられたグループの一覧のエントリーとして表示されます。

5. To configure additional groups and hosts under the subgroup, click on the name of the subgroup from the list of groups and repeat the same steps described in this section.

17.3.2.2. インベントリーグループの表示または編集

リストビューは、一度にすべてのインベントリーグループを表示するか、フィルタリングして root グループのみを表示できるようになりました。インベントリーグループは、別のグループのサブセットでない場合には、root グループとみなされます。

コントローラは子グループやホストなどの依存関係を検索するため、依存関係を気にせずにサブグループを削除できる場合があります。存在する場合は、確認ダイアログが表示され、ルートグループとそのすべてのサブグループおよびホストを削除するかどうかを選択できます。または、ホストとともにトップレベルのインベントリグループになるようにサブグループをプロモートします。

_images/inventories-groups-delete-root-with-children.png

17.3.3. ホストの追加

ホストをインベントリー、グループおよびグループ内のグループ用に設定することができます。ホストを設定するには、以下を実行します。

  1. ホスト タブをクリックします。

  2. 追加 ボタンをクリックして、設定にすでに存在するホストを追加するか、新規ホストを作成するかどうかを選択します。

  3. 新規ホストを作成する場合は、toggle button ボタンを選択して、ジョブの実行中にこのホストを組み込むかどうかを指定します。

  1. 必須およびオプションのフィールドに該当する詳細を入力します。

  • ホスト名: 必須

  • 説明: 任意の説明を入力します (オプション)。

  • 変数: このグループのすべてのホストに適用される定義および値を入力します。JSON または YAML 構文のいずれかを使用して変数を入力します。ラジオボタンを使用してこれら 2 つの間の切り替えを行います。

  1. 完了したら、保存 をクリックします。

ホストの作成 ウィンドウが閉じ、新規に作成されたホストが、元のグループに関連付けられたホストの一覧のエントリーとして表示されます。

Inventories add group host

既存ホストを追加する選択をした場合、選択可能なホストが別個の選択ウィンドウに表示されます。

Inventories add existing host

ホストを選択すると、グループに関連付けられたホストの一覧のエントリーとして表示されます。ホストを選択して、関連付けの解除 ボタンをクリックして、この画面からホストの関連付けを解除できます。

注釈

この画面からアドホックのコマンドを実行することもできます。詳細は、「アドホックコマンドの実行」を参照してください。

6. To configure additional groups for the host, click on the name of the host from the list of hosts.

Inventories add group host emphasized

これにより、選択したホストの「詳細」タブが開きます。

Inventories add group host details

  1. グループ タブをクリックして、ホストのグループを設定します。

  1. 追加 ボタンをクリックして、ホストを既存グループに関連付けます。

選択可能なグループが別個の選択ウィンドウに表示されます。

_images/inventories-add-group-hosts-add-groups.png
  1. クリックして、ホストに関連付けるグループを選択し、保存 をクリックします。

グループが関連付けられると、そのグループがホストに関連付けられたグループの一覧にエントリーとして表示されます。

  1. ホストがジョブの実行に使用されている場合には、このジョブの詳細は、ホストの 完了したジョブ タブで確認できます。各ジョブの詳細を表示するには、展開 をクリックします。

_images/inventories-add-host-view-completed-jobs.png

17.3.4. ソースの追加

インベントリーソースはグループに関連付けられていません。生成されたグループは最上位であり、依然として子グループを持つ可能性があり、生成されるすべてのグループにホストを含めることができます。ソースのインベントリーへの追加は、標準インベントリーのみに適用されます。スマートインベントリーの場合、それらが関連付けられている標準インベントリーからソースを継承します。インベントリーのソースを設定するには、以下を実行します。

  1. ソースを追加するインベントリーで、ソース タブをクリックします。

  2. 追加 ボタンをクリックします。

これにより、「ソースの作成」ウィンドウが開きます。

Inventories create source

  1. 必須およびオプションのフィールドに該当する詳細を入力します。

  • 名前: 必須

  • 説明: 任意の説明を入力します (オプション)。

  • 実行環境: 必要に応じて、検索 (search)、またはインベントリーのインポートを実行する実行環境の名前を入力します。実行環境の構築に関する詳細は、Execution Environments を参照してください。

  • ソース: インベントリーのソースを選択します。それぞれのソースや適切な情報を入力する詳細な方法は、「インベントリーソース」セクションを参照してください。

  1. 選択した inventory source の情報を入力したら、必要に応じて、詳細、ホストフィルター、変数などのその他の共通パラメーターも指定します。

注釈

フィールドの リージョンインスタンスフィルター、および グループ化のみ は automation controller 3.8 で削除されました。

  1. 詳細 ドロップダウンメニューから、インベントリーソースの更新ジョブで適切な出力レベルを選択します。

  2. ホストフィルター フィールドを使用して、コントローラーにインポートされる一致するホスト名のみを指定します。

  3. 有効な変数 でコントローラーを指定して、指定のホスト変数のディクショナリーから有効な状態を取得します。有効な変数は、ドット表記を使用して「foo.bar」として指定することで、ルックアップはネストされたディクショナリー (from_dict.get('foo', {}).get('bar', default) と同等) に移動します。

  4. 有効な変数 フィールドでホスト変数のディクショナリーを指定した場合は、インポート時に有効にする値を指定できます。たとえば、enabled_var='status.power_state' および enabled_value='powered_on' で以下のホスト変数を使用する場合は、ホストが有効とマークされます。

{
"status": {
"power_state": "powered_on",
"created": "2020-08-04T18:13:04+00:00",
"healthy": true
},
"name": "foobar",
"ip_address": "192.168.2.1"
}

power_statepowered_on 以外になっていると、コントローラーにインポートしたときにホストが無効になります。キーが見つからない場合は、ホストが有効になります。

  1. すべてのクラウドインベントリーソースには、以下の更新オプションがあります。

  • 上書き: チェックが付いている場合、以前は外部ソースにあり、現在は削除されているホストおよびグループがコントローラーインベントリーから削除されます。インベントリーソースで管理されていなかったホストおよびグループは次に手動で作成されるグループにプロモートされるか、またはプロモート先となる手動で作成されたグループがない場合は、それらはインベントリーの「すべて」のデフォルトグループに残ります。

チェックが付けられていない場合、外部ソースにないローカルの子ホストおよびグループは、インベントリーの更新プロセスによって処理されないままになります。

  • 変数の上書き: チェックが付いている場合、子グループおよびホストの変数はすべて削除され、外部ソースで見つかったものに置き換えられます。チェックが付いていないと、マージが実行し、ローカル変数と、外部ソースで見つかったものが組み合わされます。

  • 起動時の更新: このインベントリーを使用してジョブを実行するたびに、ジョブタスクの実行前に選択したソースからインベントリーの更新が実行されます。ジョブの生成速度がインベントリーの同期速度を上回る場合のジョブのオーバーフローを避けるために、これを選択して、特定の期間 (秒単位) 以前のインベントリーの同期をキャッシュするよう**キャッシュタイムアウト**を設定できます。

「起動時の更新」の設定は、プロジェクトおよびインベントリーの依存関係システムを参照しますが、特に 2 つのジョブが同時に実行されないようにする訳ではありません。キャッシュのタイムアウトを指定した場合には、2 番目のジョブの依存関係が作成され、最初のジョブで起動したプロジェクトおよびインベントリーの更新が使用されます。両方のジョブは、プロジェクトおよび/またはインベントリーの更新が終了するまで待機してから次に進みます。これらのジョブで異なるジョブテンプレートを使用しており、システムの容量がある場合には、両ジョブを同時に開始し、実行することができます。動的インベントリソースを使用するコントローラーのプロビジョニングコールバック機能を使用する場合には、インベントリーグループの "起動時に更新" を設定しておく必要があります。

  1. 実行後にエントリーおよび選択を確認し、保存 をクリックします。これにより、スケジュールや通知など、詳細をさらに設定することができます。

  2. このインベントリーソースに関連付けられているスケジュールを設定するには、スケジュール タブをクリックします。

  1. スケジュールがすでに設定されている場合には、スケジュールの設定をレビュー、編集、または有効化/無効化します。

  2. スケジュールが設定されていない場合には、詳細情報を「スケジュール」で参照してください。

注釈

通知 タブは、新しく作成したソースを保存した後にのみ表示されます。

_images/inventories-create-source-with-notifications-tab.png
  1. ソースの通知を設定するには、通知 タブをクリックします。

  1. 通知がすでに設定されている場合は、トグルを使用して、特定のソースで使用する通知を有効または無効にします。詳細については「通知の有効化と無効化」を参照してください。

  2. 通知が設定されていない場合には、詳細情報を「通知」で参照してください。

  1. 実行後にエントリーおよび選択を確認し、保存 をクリックします。

ソースが定義されると、インベントリーに関連付けられたソースの一覧のエントリーとして表示されます。ソース タブから、単一ソースに対して同期を実行することも、1 度にすべての同期を実行することもできます。また、同期プロセスのスケジュールやソースの編集または削除など、追加のアクションを実行することもできます。

Inventories view sources

17.3.4.1. インベントリーソース

ホストを入力できるインベントリータイプに一致するソースを選択します。

17.3.4.1.1. ソース: プロジェクト

プロジェクトから取得されるインベントリーは、それが関連付けられているプロジェクトの SCM タイプを使用します。たとえば、プロジェクトのソースが GitHub にある場合、インベントリーは同じソースを使用します。

  1. プロジェクトから取得されるインベントリーを設定するには、「ソース」フィールドから ソース: プロジェクト を選択します。

  2. 「ソースの作成」ウィンドウは追加フィールドと共に展開されます。以下の詳細を入力します。

  • 認証情報: 必要に応じて、このソースに使用する認証情報を指定します。

  • プロジェクト: 必須。このインベントリーがソースとして使用しているプロジェクトを指定します。search ボタンをクリックしてプロジェクトの一覧から選択します。一覧に多くのオプションが含まれる場合、検索を使用してオプションの範囲を絞ります。

  • インベントリーファイル: 必須。取得されたプロジェクトに関連付けられたインベントリーファイルを選択します。データが入力されていない場合には、ドロップダウンメニューのテキストフィールドに、データを入力して異種のファイルタイプをフィルタリングします。フラットファイルインベントリー以外に、ディレクトリーやインベントリースクリプトを参照することもできます。

_images/inventories-create-source-sourced-from-project-filter.png
  1. 必要に応じて、adding a source の主な手順で説明されているように、詳細、ホストフィルター、有効な変数/値、および更新オプションを指定できます。

  2. クラウドインベントリーソースで選択できる更新オプションのほかに、プロジェクトの変更時に更新するかどうかを指定できます。Update on Project Update オプションにチェックを付けて、SCM リビジョンが変更されるプロジェクトの毎回の更新後に、選択されたソースのインベントリーを更新してからジョブのタスクを実行します。詳細は、『Automation Controller Administration Guide』の「Update on Project Update」を参照してください。

  3. カスタムインベントリースクリプトに渡すには、オプションで 環境変数 フィールドに環境変数を設定できます。また、インベントリースクリプトをソースコントロールに配置してから、プロジェクトからこれを実行することもできます。詳細は、Automation Controller Administration Guideインベントリーファイルのインポート を参照してください。

Inventories - create source - sourced from project example

注釈

SCM からカスタムのインベントリースクリプトを実行する場合には、アップストリームのソース管理のスクリプトに実行の部分 (例 :chmod +x) を設定してください。設定していない場合には、実行時にコントローラーは [Errno 13] Permission denied のエラーを送出します。

17.3.4.1.2. Amazon Web Services EC2
  1. AWS EC2 から取得されるインベントリーを設定するには、「ソース」フィールドから Amazon EC2 を選択します。

  2. 「ソースの作成」ウィンドウは追加フィールドと共に展開されます。以下の詳細を入力します。

  • 認証情報: 必要に応じて、既存の AWS 認証情報から選択します (詳細は「認証情報」を参照)。

    コントローラーが割り当てられた IAM ロールを使って EC2 インスタンスで実行されている場合は、認証情報を省略でき、インスタンスメタデータのセキュリティー認証情報が代わりに使用されます。IAM ロールの使用についての詳細は、IAM_Roles_for_Amazon_EC2_documentation_at_Amazon を参照してください。

  1. 必要に応じて、adding a source の主な手順で説明されているように、詳細、ホストフィルター、有効な変数/値、および更新オプションを指定できます。

  2. ソース変数 フィールドを使用して、aws_ec2 インベントリー更新プラグインで使用される変数を上書きします。JSON または YAML 構文のいずれかを使用して変数を入力します。ラジオボタンを使用してこれら 2 つの間の切り替えを行います。これらの変数の詳細は、aws_ec2 inventory plugin documenation を参照してください。

Inventories - create source - AWS EC2 example

注釈

include_filters のみを使用する場合、AWS プラグインは常にすべてのホストを返します。これを適切に使用するには、or の最初の条件を filters に配置してから、OR の一覧で残りの include_filters 条件をビルドします。

17.3.4.1.3. Google Compute Engine
  1. Google から取得されるインベントリーを設定するには、「ソース」フィールドから Google Compute Engine を選択します。

  2. 「ソースの作成」ウィンドウで必要な 認証情報 フィールドが展開されるため、既存の GCE 認証情報から選択してください。詳細は「認証情報」を参照してください。

Inventories - create source - GCE example

  1. 必要に応じて、adding a source の主な手順で説明されているように、詳細、ホストフィルター、有効な変数/値、および更新オプションを指定できます。

  2. ソース変数 フィールドを使用して、gcp_compute インベントリー更新プラグインで使用される変数を上書きします。JSON または YAML 構文のいずれかを使用して変数を入力します。ラジオボタンを使用してこれら 2 つの間の切り替えを行います。これらの変数の詳細は、gcp_compute inventory plugin documenation を参照してください。

17.3.4.1.4. Microsoft Azure Resource Manager
  1. Azure Resource Manager から取得されるインベントリーを設定するには、「ソース」フィールドから Microsoft Azure Resource Managee を選択します。

  2. 「ソースの作成」ウィンドウで必要な 認証情報 フィールドが展開されるため、既存の Azure 認証情報から選択してください。詳細は「認証情報」を参照してください。

  3. 必要に応じて、adding a source の主な手順で説明されているように、詳細、ホストフィルター、有効な変数/値、および更新オプションを指定できます。

  4. ソース変数 フィールドを使用して、azure_rm インベントリー更新プラグインで使用される変数を上書きします。JSON または YAML 構文のいずれかを使用して変数を入力します。ラジオボタンを使用してこれら 2 つの間の切り替えを行います。これらの変数の詳細は、azure_rm inventory plugin documentation を参照してください。

Inventories - create source - Azure RM example

17.3.4.1.5. VMware vCenter
  1. VMWare から取得されるインベントリーを設定するには、「ソース」フィールドから VMware vCenter を選択します。

  2. 「ソースの作成」ウィンドウで必要な 認証情報 フィールドが展開されるため、既存の VMware 認証情報から選択してください。詳細は「認証情報」を参照してください。

  3. 必要に応じて、adding a source の主な手順で説明されているように、詳細、ホストフィルター、有効な変数/値、および更新オプションを指定できます。

  4. ソース変数 フィールドを使用して、vmware_inventory インベントリー更新プラグインで使用される変数を上書きします。JSON または YAML 構文のいずれかを使用して変数を入力します。ラジオボタンを使用してこれら 2 つの間の切り替えを行います。これらの変数の詳細は、vmware_inventory inventory plugin を参照してください。

Ansible 2.9 で、VMWare プロパティーが小文字から camelCase に変更になりました。コントローラーはトップレベルのキーのエイリアスを提供しますが、ネストされたプロパティーの小文字のキーは廃止になりました。Ansible 2.9 以降のバージョンでサポートされているプロパティーの一覧は、GitHub の プライマリー documentation for hostvars from VMWare inventory imports を参照してください。

Inventories - create source - VMWare example

17.3.4.1.6. Red Hat Satellite 6
  1. Red Hat Satellite から取得されるインベントリーを設定するには、「ソース」フィールドから Red Hat Satellite を選択します。

  2. 「ソースの作成」ウィンドウで必要な 認証情報 フィールドが展開されるため、既存の Satellite 認証情報から選択してください。詳細は「認証情報」を参照してください。

  3. 必要に応じて、adding a source の主な手順で説明されているように、詳細、ホストフィルター、有効な変数/値、および更新オプションを指定できます。

  4. **ソース変数**フィールドを使用して、foreman インベントリーソースが使用するパラメータを指定します。JSON または YAML 構文のいずれかを使用して変数を入力してください。以下の変数の詳細な説明は、Ansible ドキュメントの theforeman.foreman.foreman – Foreman inventory source を参照してください。

Inventories - create source - RH Satellite example

コントローラーインベントリーで Satellite から「関連グループ」が含まれない場合には、インベントリーソースでこれらの変数を定義する必要がある場合があります。詳細は、Ansible Automation Platform Installation and Reference GuideRed Hat Satellite 6 を参照してください。

"no foreman.id" variable(s) when syncing the inventory メッセージが表示される場合は、Red Hat カスタマーポータルの https://access.redhat.com/solutions/5826451 ソリューションを参照してください。お客様の認証情報でログインして、完全な記事にアクセスするようにしてください。

17.3.4.1.7. Red Hat Insights
  1. Red Hat Insights から取得されるインベントリーを設定するには、「ソース」フィールドから Red Hat Insights を選択します。

  2. 「ソースの作成」ウィンドウで必要な 認証情報 フィールドが展開されるため、既存の Insights 認証情報から選択してください。詳細は「認証情報」を参照してください。

  3. 必要に応じて、adding a source の主な手順で説明されているように、詳細、ホストフィルター、有効な変数/値、および更新オプションを指定できます。

  4. ソース変数 フィールドを使用して、insights インベントリー更新プラグインで使用される変数を上書きします。JSON または YAML 構文のいずれかを使用して変数を入力します。ラジオボタンを使用してこれら 2 つの間の切り替えを行います。これらの変数の詳細は、insights inventory plugin を参照してください。

Inventories - create source - RH Insights example

17.3.4.1.8. OpenStack
  1. OpenStack から取得されるインベントリーを設定するには、「ソース」フィールドから OpenStack を選択します。

  2. 「ソースの作成」ウィンドウで必要な 認証情報 フィールドが展開されるため、既存の OpenStack 認証情報から選択してください。詳細は「認証情報」を参照してください。

  3. 必要に応じて、adding a source の主な手順で説明されているように、詳細、ホストフィルター、有効な変数/値、および更新オプションを指定できます。

  4. Use the Source Variables field to override variables used by the openstack inventory plugin. Enter variables using either JSON or YAML syntax. Use the radio button to toggle between the two. For a detailed description of these variables, view the openstack inventory plugin in the Ansible collections documentation.

Inventories - create source - OpenStack example

17.3.4.1.9. Red Hat Virtualization
  1. Red Hat Virtualization から取得されるインベントリーを設定するには、「ソース」フィールドから Red Hat Virtualization を選択します。

  2. 「ソースの作成」ウィンドウで必要な 認証情報 フィールドが展開されるため、既存の Red Hat Virtualization 認証情報から選択してください。詳細は「認証情報」を参照してください。

  3. 必要に応じて、adding a source の主な手順で説明されているように、詳細、ホストフィルター、有効な変数/値、および更新オプションを指定できます。

  4. ソース変数 フィールドを使用して、ovirt インベントリー更新プラグインで使用される変数を上書きします。JSON または YAML 構文のいずれかを使用して変数を入力します。ラジオボタンを使用してこれら 2 つの間の切り替えを行います。これらの変数の詳細は、ovirt inventory plugin を参照してください。

Inventories - create source - RHV example

注釈

Red Hat Virtualization (ovirt) インベントリーのソース要求はデフォルトで保護されています。このデフォルト設定を変更するには、source_variables のキー ovirt_insecuretrue に設定します。これは /api/v2/inventory_sources/N/ エンドポイントのインベントリーソースの API の詳細からしか入手できません。

17.3.4.1.10. Red Hat Ansible Automation Platform
  1. automation controller から取得されるインベントリーを設定するには、「ソース」フィールドから Red Hat Ansible Automation Platform を選択します。

  2. 「ソースの作成」ウィンドウで必要な 認証情報 フィールドが展開されるため、既存の Ansible Automation Platform 認証情報から選択してください。詳細は「認証情報」を参照してください。

  3. 必要に応じて、adding a source の主な手順で説明されているように、詳細、ホストフィルター、有効な変数/値、および更新オプションを指定できます。

_images/inventories-create-source-rhaap-example.png
  1. ソース変数 フィールドを使用して、controller インベントリー更新プラグインで使用される変数を上書きします。JSON または YAML 構文のいずれかを使用して変数を入力します。ラジオボタンを使用してこれら 2 つの間の切り替えを行います。これらの変数の詳細は、controller inventory plugin を参照してください (Red Hat Customer ログインが必要になります)。

17.3.4.2. 古いインベントリースクリプトをエクスポートする

カスタムインベントリースクリプト API を削除すると、スクリプトはデータベースに保存されます。このセクションで説明するコマンドにより、後でソースコントロールへのチェックに適した形式でスクリプトを回復できます。使用方法は以下のようになります。

$ awx-manage export_custom_scripts --filename=my_scripts.tar
Dump of old custom inventory scripts at my_scripts.tar

出力を活用します。

$ mkdir my_scripts
$ tar -xf my_scripts.tar -C my_scripts

スクリプトの名前は _<pk>__<name> です。これは、プロジェクトフォルダーに使用される命名スキームです。

$ ls my_scripts
_10__inventory_script_rawhook             _19__                                       _30__inventory_script_listenhospital
_11__inventory_script_upperorder          _1__inventory_script_commercialinternet45   _4__inventory_script_whitestring
_12__inventory_script_eastplant           _22__inventory_script_pinexchange           _5__inventory_script_literaturepossession
_13__inventory_script_governmentculture   _23__inventory_script_brainluck             _6__inventory_script_opportunitytelephone
_14__inventory_script_bottomguess         _25__inventory_script_buyerleague           _7__inventory_script_letjury
_15__inventory_script_wallisland          _26__inventory_script_lifesport             _8__random_inventory_script_
_16__inventory_script_wallisland          _27__inventory_script_exchangesomewhere     _9__random_inventory_script_
_17__inventory_script_bidstory            _28__inventory_script_boxchild
_18__p                                    _29__inventory_script_wearstress

各ファイルにはスクリプトが含まれます。スクリプトには bash/python/ruby/more を指定できるため、拡張子は含まれます。スクリプトはすべて直接実行可能です(スクリプトが機能することを前提とします)。スクリプトを実行すると、インベントリーデータがダンプされます。

$ ./my_scripts/_11__inventory_script_upperorder
{"group_\ud801\udcb0\uc20e\u7b0e\ud81c\udfeb\ub12b\ub4d0\u9ac6\ud81e\udf07\u6ff9\uc17b": {"hosts":
["host_\ud821\udcad\u68b6\u7a51\u93b4\u69cf\uc3c2\ud81f\uddbe\ud820\udc92\u3143\u62c7",
"host_\u6057\u3985\u1f60\ufefb\u1b22\ubd2d\ua90c\ud81a\udc69\u1344\u9d15",
"host_\u78a0\ud820\udef3\u925e\u69da\ua549\ud80c\ude7e\ud81e\udc91\ud808\uddd1\u57d6\ud801\ude57",
"host_\ud83a\udc2d\ud7f7\ua18a\u779a\ud800\udf8b\u7903\ud820\udead\u4154\ud808\ude15\u9711",
"host_\u18a1\u9d6f\u08ac\u74c2\u54e2\u740e\u5f02\ud81d\uddee\ufbd6\u4506"], "vars": {"ansible_host": "127.0.0.1", "ansible_connection":
"local"}}}

ansible-inventory で機能を検証すると、同じデータが提供されますが、再フォーマットされます。

$ ansible-inventory -i ./my_scripts/_11__inventory_script_upperorder --list --export

上記の例では、cdmy_scripts に移動してから、git init コマンドを実行し、必要なスクリプトを追加して、これをソースコントロールにプッシュしてから、automation controller ユーザーインターフェースに SCM インベントリーソースを作成します。

カスタムインベントリースクリプトの同期または使用についての詳細は、Automation Controller Administration Guideインベントリーファイルのインポート を参照してください。

17.3.5. 完了したジョブの表示

インベントリーがジョブの実行に使用されている場合には、このジョブの詳細は、インベントリーの 完了したジョブ タブで確認できます。各ジョブの詳細を表示するには、展開 をクリックします。

Inventories view completed jobs

17.3.5.1. スマートホストフィルター

検索フィルターを使用してインベントリーのホストを設定できます。この機能では、ファクト検索機能を利用できます。

use_fact_cache=True がジョブテンプレートごとに設定されている場合には、automation controller は、ジョブテンプレートの実行時に Ansible Playbook で生成されるファクトをデータベースに保存します。新規ファクトは既存ファクトにマージされ、ホストごとに設定されます。保存したこれらのファクトは、GET クエリーパラメーター host_filter を使用して、/api/v2/hosts エンドポイント経由でホストのフィルターに使用できます。例: /api/v2/hosts?host_filter=ansible_facts__ansible_processor_vcpus=8

host_filter パラメーターでは、以下が可能です。

  • () でのグループ化

  • ブール値および演算子の使用:

    • __: 関連付けられたフィールドの関連フィールドを参照します。

    • __: JSON キーパスでキーを分離するために ansible_facts で使用されます。

    • []: パスの指定で json アレイを表すために使用されます。

    • "": 値にスペースが必要な場合、その値に使用されます。

  • 「標準的な」Django クエリーを host_filter に組み込むことができる

例:

/api/v2/hosts/?host_filter=name=localhost
/api/v2/hosts/?host_filter=ansible_facts__ansible_date_time__weekday_number="3"
/api/v2/hosts/?host_filter=ansible_facts__ansible_processor[]="GenuineIntel"
/api/v2/hosts/?host_filter=ansible_facts__ansible_lo__ipv6[]__scope="host"
/api/v2/hosts/?host_filter=ansible_facts__ansible_processor_vcpus=8
/api/v2/hosts/?host_filter=ansible_facts__ansible_env__PYTHONUNBUFFERED="true"
/api/v2/hosts/?host_filter=(name=localhost or name=database) and (groups__name=east or groups__name="west coast") and ansible_facts__an

host_filter はホスト名、グループ名、および Ansible ファクト別に検索できます。

グループ検索の形式は以下のようになります。

groups.name:groupA

ファクト検索の形式は以下の ようになります。

ansible_facts.ansible_fips:false

また、ホスト名とホストの説明で構成されるスマート検索の検索を実行することもできます。

host_filter=name=my_host

host_filter の検索用語が文字列タイプの場合には、値を数値 (例: 2.66) にしたり、JSON キーワード (例: nulltrue または false) を有効にしたりするには、値を二重引用符で囲みます。これにより、コントローラーが誤って検索用語を文字列以外として解析するのを防ぐことができます。

host_filter=ansible_facts__packages__dnsmasq[]__version="2.66"

17.4. アドホックコマンドの実行

アドホックコマンドを実行するには、以下を実行します。

  1. ホストまたはグループの一覧からインベントリーソースを選択します。インベントリーソースは単一グループまたはホストにすることも、複数のホストのセレクションや複数グループのセレクションにすることもできます。

ad hoc-commands-inventory-home

  1. コマンド実行 ボタンをクリックします。

コマンドの実行ウィンドウが開きます。

_images/ad-hoc-run-execute-command.png
  1. 以下のフィールドに詳細を記入します。

  • モジュール: automation controller がコマンドの実行での使用をサポートしているモジュールのいずれかを選択します。

    コマンド

    apt_repository

    mount

    win_service

    shell

    apt_rpm

    ping

    win_updates

    yum

    service

    selinux

    win_group

    apt

    group

    setup

    win_user

    apt_key

    user

    win_ping

  • 引数: 選択したモジュールで使用する引数を指定します。

  • 制限: インベントリー内でホストをターゲットとして使用できる上限を入力します。インベントリー内の全ホストをターゲットに設定するには、all または * を入力するか、またはフィールドを空白にします。これは、起動ボタンをクリックする前のビューで選択した内容が自動的に投入されます。

  • マシンの認証情報: コマンドを実行するためにリモートホストにアクセスする際に使用する認証情報を選択します。Ansible がリモートホストにログインするのに必要なユーザー名および SSH キーまたはパスワードが含まれる認証情報を選択します。

  • 詳細: 標準出力の詳細レベルを選択します。

  • フォーク: 必要な場合には、コマンドの実行中に使用する並列または同時プロセスの数を選択します。

  • 変更の表示: 選択して標準出力での Ansible の変更の表示を有効にします。デフォルトはオフになります。

  • 権限昇格の有効化: 有効な場合には、Playbook は管理者権限を使用して実行されます。これは --become オプションを ansible コマンドに渡すのと同等です。

  • 追加変数: このインベントリーの実行時に適用される追加のコマンドライン変数を指定します。JSON または YAML 構文のいずれかを使用して変数を入力します。ラジオボタンを使用してこれら 2 つの間の切り替えを行います。

ad hoc-commands-inventory-run-command

  1. 次へ をクリックして、アドホックコマンドを実行する execution environment を選択します。

_images/ad-hoc-commands-inventory-run-command-ee.png
  1. 次へ をクリックして、使用する認証情報を選択し、起動 ボタンをクリックします。

結果は、モジュールのジョブウィンドウの 出力 タブに表示されます。

ad hoc-commands-inventory-results-example