Documentation

15. インベントリー

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

注釈

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

このタブには、現在利用できるインベントリーの一覧が表示されます。インベントリーの一覧は、名前タイプ、または 組織 で並べ替え、検索できます。

Inventories - home with examples

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

  • インベントリー同期 (sync-button): 緑はインベントリーの同期が成功したことを示し、赤は同期が失敗したことを示します。このアイコンをクリックすると、インベントリーに同期できるソースがある場合、直近の 5 回のインベントリーソースの同期ステータスとソース情報が表示されます。

_images/inventories-home-with-status.png
  • Status Dot (ステータスを示す丸い点): このインベントリーの最近のジョブのステータスを表示します。

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

  • タイプ: これが標準インベントリーか、またはスマートインベントリーであるかどうかを特定します。

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

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

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

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

    • 削除 (delete): 選択したインベントリーを削除します。この操作は取り消すことができません!

注釈

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

_images/warning-deletion-dependencies.png

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

スマートインベントリーは、保存した検索で定義されるホストのコレクションであり、標準インベントリーのように表示し、ジョブ実行で簡単に使用できます。組織管理者には、それぞれの組織内のインベントリーへの管理者パーミッションがあり、スマートインベントリーを作成できます。スマートインベントリーは KIND=smart で特定されます。スマートインベントリーは、Tower 検索で使用されるのと同じ方法で定義できます。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 別に並べ替えられます。

15.2. インベントリープラグイン

インベントリーの更新は、非推奨のインベントリースクリプトの使用から、それぞれのインベントリープラグインで解析される動的に生成された YAML ファイルの使用に変更になりました。Ansible Tower 3.8 では、ユーザーは以下のすべてのインベントリーソース source_vars のインベントリーソースを使用して、新しいスタイルのインベントリープラグイン設定を Tower に直接提供できるようになりました。

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

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

インベントリーソースをすでに設定している場合には、Tower は自動的にソースと Ansible バージョンに合わせてインベントリープラグインを使用するように切り替えられますが、これらのスクリプトに含まれていた同じ内容が確保されます。使用する Ansible のバージョンを制御する必要がある場合には、インベントリーソースに、カスタム仮想環境を使用できます。「Using virtualenv with Ansible Tower」を参照してください。

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

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

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

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

インベントリーのタイプは、ラベルや作成フォームの先頭にあるタブの行で識別できます。

Inventories_create_new - create new inventory

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

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

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

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

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

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

    _images/inventories-create-new-inventory-dynamic-hosts.png
  • Insights 認証情報: (標準インベントリーのみに適用) インベントリーが Insights と共に使用されている場合には、Insights の認証情報を入力します。

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

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

Inventories_create_new_saved - create new inventory

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

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

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

パーミッション タブでは、ユーザーおよびチームメンバーに関連付けられたパーミッションの確認、付与、編集および削除を実行できます。このリソースについて特定ユーザーにパーミッションを割り当てるには以下を行います。

  1. パーミッション タブをクリックします。

  2. add ボタンをクリックして、ユーザー/チームの追加ウィンドウを開きます。

Add Permissions Form
  1. アクセス権のあるユーザーまたはチームを指定してから、これらのユーザーやチームに特定のロールを割り当てます。

  1. ユーザーまたはチームの名前の横にある 1 つまたは複数のチェックボックスをクリックしてチェックマークを付け、これらを選択します。

注釈

ユーザーチーム タブ間を保存せずに移動して、複数のユーザーとチームを同時に選択することができます。

選択を終えると、ウィンドウが展開され、ドロップダウンメニューの一覧から選択した各ユーザーまたはチームのロールを選択できるようになります。

Roles Assignment for Selected Users

上記の例では、インベントリー関連のオプションが表示されます。リソース毎に、利用できるオプションが異なります。

  • 管理者 は権限の読み取り、実行および編集を許可します (すべてのリソースに適用)。

  • 使用 は、ジョブテンプレートのリソースの使用を許可します (ジョブテンプレート以外の全リソースに適用)。

  • 更新: SCM 更新でのプロジェクトの更新を許可します (プロジェクトおよびインベントリーに適用)。

  • アドホック: アドホックコマンドの使用を許可します (インベントリーに適用)。

  • 実行 は、ジョブテンプレートの起動を許可します (ジョブテンプレートに適用)。

  • 読み取り は、表示のみのアクセスを許可します (すべてのリソースに適用)。

ちなみに

ロールの選択ペインの キー ボタンを使用して、各ロールの説明を表示します。詳細情報は、本ガイドの「ロール」を参照してください。

  1. 選択したユーザーまたはチームに適用するロールを選択します。

注釈

ユーザーチーム タブ間を保存せずに移動すると、複数のユーザーとチームにロールを割り当てることができます。

Add Permissions - Examples of users and teams selected
  1. 各ユーザーとチームのロールの割り当てを確認します。

Add Permissions - Examples of roles applied
  1. 完了したら 保存 をクリックすると、ユーザー/チームの追加ウィンドウが閉じ、各ユーザーやチームに割り当てられた更新済みのロールが表示されます。

    Permissions tab with Role Assignments

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

_images/permissions-disassociate.png

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

_images/permissions-disassociate-confirm.png

15.3.2. グループの追加

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

  • 新規グループの作成

  • 新規ホストの作成

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

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

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

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

注釈

インベントリーソースはグループに関連付けられなくなりました。以前のバージョンでは、生成されるグループやホストはインベントリーソースグループの子となりました。現在、生成されるグループは最上位に置かれます。これらのグループには子グループを持たせることができ、これらの生成されるすべてのグループにホストを含めることができます。

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

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

Inventories_manage_group_add

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

  • 名前: 必須

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

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

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

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

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

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

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

  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.

Inventories add group subgroup emphasized

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

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

_images/inventories-groups-all-groups-view.png _images/inventories-groups-root-groups-view.png

依存関係を考慮せずにサブグループを削除できますが、root グループを削除する場合は、Tower は子グループやホストなど依存関係がないか検索します。削除する root グループに両依存関係が含まれる場合には、root グループおよび全サブグループとホストを削除するかどうか、またはホストとともに、トップgレベルになるようにサブグループをプロモートするかどうかの確認ダイアログが表示されます。

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

root グループに含まれるサブグループにホストがない場合には、単にすべて削除するか、グループをプロモートするかの確認ダイアログが表示されます。

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

15.3.3. ホストの追加

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

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

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

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

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

  • ホスト名: 必須

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

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

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

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

Inventories add group host

注釈

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

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

Inventories add existing host

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

6. To configure facts and 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. ファクト タブをクリックして、収集するファクトを入力します。ファクトについて詳しくは、「ファクトのキャッシング」セクションを参照してください。

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

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

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

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

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

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

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

15.3.4. ソースの追加

インベントリーソースはグループに関連付けられなくなりました。Ansible Tower 3.2 より前のバージョンでは、生成されるグループやホストはインベントリーソースグループの子となりました。現在、生成されるグループは最上位に置かれます。これらのグループには子グループを持たせることができ、これらの生成されるすべてのグループにホストを含めることができます。

ソースのインベントリーへの追加は、標準インベントリーのみに適用されます。スマートインベントリーの場合、それらが関連付けられている標準インベントリーからソースを継承します。インベントリーのソースを設定するには、以下を実行します。

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

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

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

Inventories create source

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

  • 名前: 必須

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

  • ソース: インベントリーのソースを選択します。それぞれのソースや適切な情報を入力する詳細な方法は、「インベントリーソース」セクションを参照してください。Ansible Tower バージョン 3.2 以降、Rackspace Cloud Servers のサポートは廃止されました。

  • Ansible 環境: このフィールドは、カスタムの仮想環境 (venv) が設定されている場合のみ表示されます。インベントリーのインポートを実行する venv を選択します。カスタムの venv の設定に関する詳細は、「Using virtualenv with Ansible Tower」を参照してください。

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

注釈

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

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

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

  3. 有効な変数 で Tower を指定して、指定のホスト変数のディクショナリーから有効な状態を取得します。有効な変数は、ドット表記を使用して「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 以外になっていると、Tower にインポートしたときにホストが無効になります。キーが見つからない場合は、ホストが有効になります。

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

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

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

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

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

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

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

注釈

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

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

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

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

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

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

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

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

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

Inventories view sources

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

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

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

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

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

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

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

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

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

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

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

  3. カスタムインベントリースクリプトに渡すには、オプションで 環境変数 フィールドに環境変数を設定できます。

Inventories - create source - sourced from project example

注釈

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

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

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

  • 認証情報: 必要に応じて、既存の認証情報から選択します。詳細は、認証情報 を参照してください。

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

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

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

Inventories - create source - AWS EC2 example

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

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

Inventories - create source - GCE example

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

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

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

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

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

Inventories - create source - Azure RM example

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

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

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

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

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

Inventories - create source - VMWare example

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

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

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

  4. ソース変数 フィールドを使用して、foreman.ini にあり、インベントリー更新スクリプトで使用される変数を上書きします。JSON 構文または YAML 構文のいずれかを使用して変数を入力します。2 つを切り替える場合はラジオボタンを使用します。これらの変数の詳細は、Ansible Collections GitHub リポジトリーの foreman.ini inventory script を参照してください。

注釈

foreman.ini からの want_factsTrue にハードコード化されており、今回は上書きできません。group_patternsgroup_prefix または want_hostcollections 変数を設定するには、satellite6 (例: satellite6_group_prefix: myprefix) などのプリフィックスを指定してください。

Inventories - create source - RH Satellite example

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

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

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

  4. ソース変数 フィールドを使用して、openstack.yml にあり、インベントリー更新スクリプトで使用される変数を上書きします。JSON 構文または YAML 構文のいずれかを使用して変数を入力します。2 つを切り替える場合はラジオボタンを使用します。これらの変数の詳細は、Ansible Collections GitHub リポジトリーの openstack.yml を参照してください。

Inventories - create source - OpenStack example

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

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

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

Inventories - create source - RHV example

注釈

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

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

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

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

_images/inventories-create-source-atower-example.png
15.3.4.1.10. カスタムスクリプト

Tower では、カスタム動的インベントリースクリプトを使用できます (管理者が追加している場合)。

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

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

  • 認証情報: カスタムソースの認証情報をオプションで指定できます。認証情報の種類は「クラウド」および「ネットワーク」に制限されます。詳細は、カスタム認証情報タイプ を参照してください。

  • カスタムインベントリースクリプト: 必須。既存のインベントリースクリプトから選択します (詳細は、カスタムインベントリースクリプト を参照してください)。

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

  2. 環境変数 フィールドを使用して、インベントリー更新スクリプトで使用される環境の変数を設定します。変数は作成したスクリプトに固有の変数である場合があります。JSON または YAML 構文のいずれかを使用して変数を入力します。ラジオボタンを使用して、これらの切り替えを行います。

Inventories - create source - custom script example

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

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

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

Inventories view completed jobs

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

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

use_fact_cache=True がジョブテンプレートごとに設定されている場合には、Tower はジョブテンプレートの実行時に 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) を有効にしたりするには、値を二重引用符で囲みます。これにより、Tower が誤って検索用語を文字列以外として解析するのを防ぐことができます。

host_filter=ansible_facts__packages__dnsmasq[]__version="2.66"

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

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

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

ad hoc-commands-inventory-home

  1. adhoc ボタンをクリックします。

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

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

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

    command

    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. launch-adhoc ボタンをクリックして、このアドホックコマンドを実行します。

この結果は詳細ペインおよび「標準出力」ウィンドウに表示されます。

ad hoc-commands-inventory-results-example