Documentation

15. インベントリー

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

注釈

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

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

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 があり、このフィールドではホストが関連付けられているすべてのスマートインベントリーのセットを特定するメンバーシップルックアップテーブルを使用します。メンバーシップはタスク別に生成されます。タスクは以下の場合に起動します。

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

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

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

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

注釈

update_host_smart_inventory_memberships タスクは、AWX_REBUILD_SMART_MEMBERSHIP が True に設定されている場合のみ実行されます (デフォルトは False)。

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

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

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

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

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

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

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

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

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

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

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

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

3.5 以降、Ansible 2.8 を実行する Ansible Tower は、ソースタイプに合わせて、(スクリプトではなく) インベントリープラグインを使用するように自動的に切り替えられます。Ansible 2.8 で有効になったプラグインは以下のとおりです。

以下はプラグインを実行せず、そのままスクリプトを使用します。

インベントリーソースをすでに設定している場合には、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. グループの追加

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

  • 新規グループの作成

  • 新規ホストの作成

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

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

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

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

注釈

Ansible Tower 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

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

サブグループの下に追加のグループおよびホストを設定するには、グループの一覧からサブグループの名前をクリックし、このセクションの説明にある同じ手順を繰り返します。

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 ボタンを選択して、ジョブの実行中にこのホストを組み込むかどうかを指定します。

注釈

インベントリーに指定されている組織が、設定されているライセンス付きホストの上限に到達した場合には、ホストをこれ以上追加できません。保存しようとすると、以下のエラーメッセージが表示されます。

_images/organizations-max-hosts-error.png
  1. 必須およびオプションのフィールドに該当する詳細を入力します。

  • ホスト名: 必須

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

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

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

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

Inventories add group host

注釈

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

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

Inventories add existing host

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

ホストのファクトおよび追加グループを設定するには、ホストの一覧からホストの名前をクリックします。

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 の設定に関する詳細は、「 Using virtualenv with Ansible Tower 」を参照してください。

_images/inventories-edit-source-details-venv.png
  1. 選択した認証情報ソースに必要な情報を入力してから、インベントリーソースの更新ジョブの出力レベルは、詳細 ドロップダウンメニューから適切なオプションを選択して設定できます。

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

  • 上書き: 詳細は、画面上のヒント (tooltip) を参照してください。3.2 の移行後の動作の一貫性を確保するには、True に設定しないようにします。

  • 変数の上書き: 詳細は、画面上のヒント (tooltip) を参照してください。

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

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

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

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

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 から取得されるインベントリーを設定するには、「ソース」フィールドから ソース: プロジェクト を選択します。

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

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

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

  • リージョン: リージョンフィールドをクリックして、クラウドプロバイダーのリージョンの一覧を表示します。複数のリージョンを選択するか、または「すべて」を選択してすべてのリージョンを組み込むことができます。Tower は選択されたリージョンに関連付けられたホストの場合にのみ更新されます。

  • インスタンスフィルター: Amazon EC2 インベントリー全体をインポートする代わりに、各種のメタデータに基づいてインベントリースクリプトで返されるインスタンスをフィルターします。ホストがここに入力されるフィルターのいずれかに一致する場合にインポートされます。

例:

  • タグ TowerManaged を持つホストに制限するには、tag-key=TowerManaged を入力します。

  • キー名 staging または production を使用するホストに制限するには、key-name=staging, key-name=production を入力します。

  • Name タグが test で開始されるホストに制限するには、tag:Name=test* を入力します。

ここで使用可能なフィルターに関する詳細は、Amazon の「 Describe Instances 」ドキュメントを参照してください。

  • グループ化のみ: デフォルトで、Tower は以下の Amazon EC2 パラメーターに基づいてグループを作成します。

    • アベイラビリティーゾーン

    • イメージ ID

    • インスタンス ID

    • インスタンスタイプ

    • キー名

    • リージョン

    • セキュリティーグループ

    • タグ (名前別)

    • VPC ID

    • タグ None

    これらすべてのグループを作成する必要がない場合、デフォルトで作成する必要のあるグループの一覧をドロップダウンから選択します。さらに``Instance ID`` を選択し、インスタンスのインスタンス ID に基づいてグループを作成することもできます。

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

Inventories - create source - AWS EC2 example

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

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

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

  • リージョン: リージョンフィールドをクリックして、クラウドプロバイダーのリージョンの一覧を表示します。複数のリージョンを選択するか、または「すべて」を選択してすべてのリージョンを組み込むことができます。Tower は選択されたリージョンに関連付けられたホストの場合にのみ更新されます。

Inventories - create source - GCE example

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

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

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

  • リージョン: リージョンフィールドをクリックして、クラウドプロバイダーのリージョンの一覧を表示します。複数のリージョンを選択するか、または「すべて」を選択してすべてのリージョンを組み込むことができます。Tower は選択されたリージョンに関連付けられたホストの場合にのみ更新されます。

Inventories - create source - Azure RM example

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

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

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

  • インスタンスフィルター: VMWare インベントリー全体をインポートする代わりに、各種のメタデータに基づいてインベントリースクリプトで返されるインスタンスをフィルターします。ここに入力されるフィルターのいずれかに一致するホストはインポートされます。

ここで使用可能なフィルターに関する詳細は、VMware の「 Quick Filters Available for vSphere Objects 」ドキュメントを参照してください。

  • グループ化のみ: デフォルトで、Tower はユーザー指定の VMWare パラメーターに基づいてグループを作成します。たとえば、Instance ID を入力してインスタンスのインスタンス ID に基づいてグループを作成します。

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

注釈

VMware のインベントリースクリプトは Ansible Tower 3.1.2 で更新され、host_filters または groupby_patterns パラメーターの設定が可能になりました。「グループの作成」画面または「グループの編集」画面の ソース変数 テキストフィールドでそれらの値を指定します。以下は例になります。

_images/inventories-create-vmware-group-source-variables.png

Inventories - create source - VMWare example

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

  2. 「ソースの作成」ウィンドウは追加フィールドと共に展開されます。

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

  • ソース変数 フィールドを使用して、foreman.ini にあり、インベントリー更新スクリプトで使用される変数を上書きします。

注釈

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

JSON または YAML 構文のいずれかを使用して変数を入力します。ラジオボタンを使用してこれら 2 つの間の切り替えを行います。これらの変数に関する詳細は、「 view foreman.ini in the Ansible GitHub repo」を確認してください。

Inventories - create source - RH Satellite example

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

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

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

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

Inventories - create source - RH CloudForms example

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

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

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

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

Inventories - create source - OpenStack example

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

  2. 「ソースの作成」ウィンドウは追加のフィールドと共に展開されます。認証情報 は必須です。既存の認証情報から選択します (詳細は、認証情報 を参照してください)。

Inventories - create source - RHV example

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

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

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

  • インスタンスフィルター: Tower インベントリー全体をインポートする代わりに、インベントリー ID/名前でインスタンスをフィルターします。インベントリースクリプトはそのインベントリーを他の Tower インスタンスから返します。

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

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

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

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

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

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

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

Inventories - create source - custom script example

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

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

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

Inventories view completed jobs

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

インベントリーのホストを設定する際に検索フィルターを使用できます。ファクトの検索機能を使用するこの機能は Ansible Tower 3.2 で導入されました。

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