Inventory (インベントリー) は、ジョブを起動できるホストのコレクションです (Ansible インベントリーファイルと同様)。インベントリーはグループに分類され、それらのグループには実際のホストが含まれます。グループは、ホスト名を Tower に入力して手動で取得することも、Ansible Tower のサポートされるクラウドプロバイダーから取得することもできます。
注釈
カスタム動的インベントリースクリプト、または Tower でネイティブにサポートされていないクラウドプロバイダーがある場合、それを Tower にインポートすることもできます。Tower Administration Guide を参照してください。
このタブには、現在利用できるインベントリーの一覧が表示されます。インベントリーの一覧は、名前、タイプ、または 組織 で並べ替え、検索できます。
インベントリーの詳細の一覧には、以下が含まれます。
タイプ: これが標準インベントリーか、またはスマートインベントリーであるかどうかを特定します。
組織: インベントリーが属する組織。
アクション: 以下のアクションを選択したインベントリーについて実行できます。
- 編集: 選択したインベントリーのプロパティーを編集します。
- 削除: 選択したインベントリーを削除します。この操作は取り消すことができません!
スマートインベントリーは、保存された検索で定義されるホストのコレクションであり、標準インベントリーのように表示し、ジョブ実行で簡単に使用することができます。組織管理者には、それぞれの組織内のインベントリーへの管理者パーミッションがあり、スマートインベントリーを作成できます。スマートインベントリーは KIND=smart
で特定されます。スマートインベントリーは、Tower 検索で使用されるのと同じ方法で定義できます。InventorySource
はインベントリーに直接関連付けられます。
Inventory
モデルには、デフォルトで空白にされる以下の新規フィールドがありますが、スマートインベントリーについては以下のように設定されます。
kind
は smart
に設定host_filter
が設定され、kind
は smart
に設定される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 別に並べ替えられます。
host_filter
検索¶host_filter
はホスト名、グループ名、および Ansible ファクト別に検索できます。
グループ検索の形式は以下のようになります。
groups.name:groupA
ファクト検索の形式は以下の ようになります。
ansible_facts.ansible_fips:false
また、ホスト名とホストの説明で構成されるスマート検索の検索を実行することもできます。
host_filter=name=my_host
host_filter
の検索用語が文字列タイプの場合、値を数値 (例: 2.66
) にしたり、JSON キーワード (例: null
、true
または false
) を有効にしたりするには、値を二重引用符で囲みます。これにより、Tower が誤って検索用語を非文字列として解析するのを防ぐことができます。
host_filter=ansible_facts__packages__dnsmasq[]__version="2.66"
新規インベントリーまたはスマートインベントリーを作成するには、以下を実行します。
インベントリーのタイプは、ラベルや作成フォームの先頭にあるタブの行で識別できます。
名前: このインベントリーに適した名前を入力します。
説明: 任意の説明を入力します (オプション)。
組織: 必須。利用可能な組織から選択します。
スマートホストフィルター: (スマートインベントリーのみに適用) ボタンをクリックして別個の動的ホストウィンドウを開き、このインベントリーのホストをフィルターします。これらのオプションは、選択した組織に基づくものです。
フィルターは、該当の名前を含むホストをフィルターするためにタグを使用する点でタグに似ています。フィルターでは、大文字と小文字が区別されます。詳細は、スマートホストフィルター セクションを参照してください。
Insights 認証情報: (標準インベントリーのみに適用) インベントリーが Insights と共に使用されている場合には、Insights の認証情報を入力します。
インスタンスグループ: ボタンをクリックして別個のウィンドウを開きます。このインベントリーの実行に使用するインスタンスグループを選択します。一覧に多くのオプションが含まれる場合、検索を使用してオプションの範囲を絞ります。
変数: このインベントリーのすべてのホストに適用される変数の定義および値。JSON または YAML 構文を使用して変数を入力します。ラジオボタンを使用してこれら 2 つの間の切り替えを行います。
Tower で新規インベントリーが保存された後に、パーミッション、グループ、ホスト、ソースの設定や、完了したジョブの表示に進みます (インベントリーのタイプに応じて適用可能な場合)。詳細の説明については、後続のセクションを参照してください。
パーミッション タブでは、ユーザーおよびチームメンバーに関連付けられたパーミッションの確認、付与、編集および削除を実行できます。このリソースについて特定ユーザーにパーミッションを割り当てるには以下を行います。
- クリックして、ユーザーまたはチームの名前の横にある 1 つまたは複数のチェックボックスを選択してこれらを選択します。
注釈
ユーザー と チーム タブ間を保存せずに切り換えることで、複数のユーザーとチームを同時に選択することができます。
選択を終えると、ウィンドウが展開され、ドロップダウンメニューの一覧から選択した各ユーザーまたはチームのロールを選択できるようになります。
上記の例では、インベントリーに関連付けられたオプションが表示されます。リソースごとに利用できるオプションが異なります。
- 管理者: 権限の読み取り、実行および編集を許可します (すべてのリソースに適用)。
- 使用: ジョブテンプレートのリソースの使用を許可します (ジョブテンプレート以外の全リソースに適用)。
- 更新: SCM 更新でのプロジェクトの更新を許可します (プロジェクトおよびインベントリーに適用)。
- アドホック: アドホックコマンドの使用を許可します (インベントリーに適用)。
- 実行: ジョブテンプレートの起動を許可します (ジョブテンプレートに適用)。
ちなみに
ロールの選択ペインの キー ボタンを使用して、各ロールの説明を表示します。
- 選択したユーザーまたはチームに適用するロールを選択します。
注釈
ユーザー と チーム タブ間を保存せずに切り換えることで、複数のユーザーとチームにロールを割り当てることができます。
完了したら 保存 をクリックすると、ユーザー/チームの追加ウィンドウが閉じ、各ユーザーやチームに割り当てられた更新済みのロールが表示されます。
特定ユーザーのパーミッションを削除するには、そのリソースの横にある「関連付けの解除」 (x) ボタンをクリックします。
これにより確認ダイアログが起動し、関連付けの解除の確認が求められます。
インベントリーは、ホストおよび他のグループか、またはホストが含まれるグループに分類されます。グループは標準インベントリーのみに適用され、スマートインベントリーから直接設定することはできません。既存グループは、標準インベントリーで使用されるホストに関連付けることができます。標準インベントリーで選択可能なアクションには以下が含まれます。
注釈
Ansible Tower 3.2 より、インベントリーソースはグループに関連付けられなくなりました。これ以前のバージョンでは、生成されるグループやホストはインベントリーソースグループの子となりました。現在、生成されるグループは最上位に置かれます。これらのグループには子グループを持たせることができ、これらの生成されるすべてのグループにホストを含めることができます。
インベントリーの新規グループを作成するには、以下を実行します。
グループ内にグループを追加するには、以下を実行します。
グループの作成 ウィンドウが閉じ、新規に作成されたグループが、元のグループに関連付けられたグループの一覧のエントリーとして表示されます。
既存グループを追加する選択をした場合、選択可能なグループが別個の選択ウィンドウに表示されます。
グループが選択されると、グループに関連付けられたグループの一覧のエントリーとして表示されます。
ホストをインベントリー、グループおよびグループ内のグループ用に設定することができます。ホストを設定するには、以下を実行します。
ホストの作成 ウィンドウが閉じ、新規に作成されたホストが、元のグループに関連付けられたホストの一覧のエントリーとして表示されます。
既存ホストを追加する選択をした場合、選択可能なホストが別個の選択ウィンドウに表示されます。
ホストが選択されると、そのホストがグループに関連付けられたホストの一覧のエントリーとして表示されます。
これにより、選択したホストの「詳細」タブが開きます。
- ボタンをクリックして、ホストを既存グループに関連付けます。
選択可能なグループが別個の選択ウィンドウに表示されます。
- クリックして、ホストに関連付けるグループを選択し、保存 をクリックします。
グループが関連付けられると、そのグループがホストに関連付けられたグループの一覧にエントリーとして表示されます。
インベントリーソースはグループに関連付けられなくなりました。Ansible Tower 3.2 より前のバージョンでは、生成されるグループやホストはインベントリーソースグループの子となりました。現在、生成されるグループは最上位に置かれます。これらのグループには子グループを持たせることができ、これらの生成されるすべてのグループにホストを含めることができます。
ソースのインベントリーへの追加は、標準インベントリーのみに適用されます。スマートインベントリーの場合、それらが関連付けられている標準インベントリーからソースを継承します。インベントリーのソースを設定するには、以下を実行します。
これにより、「ソースの作成」ウィンドウが開きます。
注釈
Ansible Tower バージョン 3.2 より、Rackspace クラウドサーバーのサポートは中止されました。
True
に設定しないようにします。「起動時の更新」の設定は、プロジェクトおよびインベントリーの依存関係システムを参照しますが、とくに 2 つのジョブが同時に実行されないようにする訳ではありません。キャッシュのタイムアウトが指定される場合には、2 番目のジョブの依存関係が作成され、最初のジョブが生成したプロジェクトおよびインベントリーの更新が使用されます。それらの両方のジョブがプロジェクトおよび/またはインベントリーの更新の終了を待機し、次に進みます。これらが異なるジョブテンプレートを使用する場合、システムの容量がある場合にはそれらを同時に開始し、実行することができます。
注釈
Tower のプロビジョニングコールバック機能を動的インベントリーソースと共に使用する場合、「起動時の更新」をインベントリーグループに対して設定する必要があります。
ソースが定義されると、インベントリーに関連付けられたソースの一覧のエントリーとして表示されます。ソース タブから、単一ソースに対して同期を実行することも、1 度にすべての同期を実行することもできます。また、同期プロセスのスケジュールやソースの編集または削除など、追加のアクションを実行することもできます。
- 通知がすでに設定されている場合は、通知の設定を選択します。
- 通知が設定されていない場合、通知 で詳細を確認してください。
インベントリーがジョブの実行に使用されている場合、それらのジョブの詳細は、インベントリーの 完了したジョブ タブで確認できます。
インベントリーのホストを設定する際に検索フィルターを使用できます。ファクトの検索機能を使用するこの機能は Ansible Tower 3.2 で導入されました。
use_fact_cache=True
がジョブテンプレートごとに設定されている場合、ジョブテンプレートの実行時に Ansible Playbook で生成されるファクトは、Tower によってデータベースに保存されます。新規ファクトは既存ファクトにマージされ、ホストごとに設定されます。これらの保存されるファクトは、GET
クエリーパラメーター host_filter
を使用し、/api/v2/hosts
エンドポイント経由でホストをフィルターする際に使用できます。例: /api/v2/hosts?host_filter=ansible_facts__ansible_processor_vcpus=8
host_filter
パラメーターは以下を許可します。
__
: 関連付けられたフィールドの関連フィールドを参照します。__
: JSON キーパスでキーを分離するために ansible_facts で使用されます。[]
: パスの指定で json アレイを表すために使用されます。""
: 値にスペースが必要な場合、その値に使用されます。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
Topics:
ホストを入力できる認証情報タイプに一致するソースを選択します。
プロジェクトから取得されるインベントリーは、それが関連付けられているプロジェクトの SCM タイプを使用します。たとえば、プロジェクトのソースが GitHub にあるか、または Red Hat Insights プロジェクトである場合、インベントリーは同じソースを使用します。
- 認証情報: このソースに使用する認証情報を指定します。
- プロジェクト: 必須。このインベントリーがソースとして使用しているプロジェクトを指定します。 ボタンをクリックしてプロジェクトの一覧から選択します。一覧に多くのオプションが含まれる場合、検索を使用してオプションの範囲を絞ります。
- インベントリーファイル: 必須。取得されたプロジェクトに関連付けられたインベントリーファイルを選択します。
認証情報: 既存の認証情報から選択します (詳細は、認証情報 を参照してください)。
Tower が割り当てられた IAM ロールを使って EC2 インスタンスで実行されている場合は、認証情報を省略でき、インスタンスメタデータのセキュリティー認証情報が代わりに使用されます。IAM ロールの使用についての詳細は、IAM_Roles_for_Amazon_EC2_documentation_at_Amazon <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam- roles-for-amazon-ec2.html> _を参照してください。
リージョン: リージョンフィールドをクリックして、クラウドプロバイダーのリージョンの一覧を表示します。複数のリージョンを選択するか、または「すべて」を選択してすべてのリージョンを組み込むことができます。Tower は選択されたリージョンに関連付けられたホストの場合にのみ更新されます。
インスタンスフィルター: Amazon EC2 インベントリー全体をインポートする代わりに、各種のメタデータに基づいてインベントリースクリプトで返されるインスタンスをフィルターします。ホストがここに入力されるフィルターのいずれかに一致する場合にインポートされます。
例:
- タグ
TowerManaged
を持つホストに制限するには、tag-key=TowerManaged
を入力します。- キー名
staging
またはproduction
のいずれかを使用するホストに制限するには、key-name=staging, key-name=production
を入力します。Name
タグがtest
で開始するホストに制限するには、tag:Name=test*
を入力します。ここで使用できるフィルターについての詳細は、Amazon の Describe Instances <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html> _ドキュメントを参照してください。
グループ化のみ: デフォルトで、Tower は以下の Amazon EC2 パラメーターに基づいてグループを作成します。
- アベイラビリティーゾーン
- イメージ ID
- インスタンス ID
- インスタンスタイプ
- キー名
- リージョン
- セキュリティーグループ
- タグ (名前別)
- VPC ID
- タグ None
これらすべてのグループを作成する必要がない場合、デフォルトで作成する必要のあるグループの一覧をドロップダウンから選択します。さらに
インスタンス ID
を選択し、インスタンスのインスタンス ID に基づいてグループを作成することもできます。
ec2.ini
にあり、インベントリー更新スクリプトで使用される変数を上書きします。JSON または YAML 構文のいずれかを使用して変数を入力します。ラジオボタンを使用してこれら 2 つの間の切り替えを行います。これらの変数についての詳細は、Ansible GitHub リポジトリーの ec2.ini <https://github.com/ansible/ansible/blob/devel/contrib/inventory/ec2.ini> __を参照してください。
- 認証情報: 必須。既存の認証情報から選択します。詳細は、認証情報 を参照してください。
- リージョン: リージョンフィールドをクリックして、クラウドプロバイダーのリージョンの一覧を表示します。複数のリージョンを選択するか、または「すべて」を選択してすべてのリージョンを組み込むことができます。Tower は選択されたリージョンに関連付けられたホストの場合にのみ更新されます。
- 認証情報: 必須。既存の認証情報から選択します。詳細は、認証情報 を参照してください。
- リージョン: リージョンフィールドをクリックして、クラウドプロバイダーのリージョンの一覧を表示します。複数のリージョンを選択するか、または「すべて」を選択してすべてのリージョンを組み込むことができます。Tower は選択されたリージョンに関連付けられたホストの場合にのみ更新されます。
- 認証情報: 必須。既存の認証情報から選択します。詳細は、認証情報 を参照してください。
- リージョン: リージョンフィールドをクリックして、クラウドプロバイダーのリージョンの一覧を表示します。複数のリージョンを選択するか、または「すべて」を選択してすべてのリージョンを組み込むことができます。Tower は選択されたリージョンに関連付けられたホストの場合にのみ更新されます。
- 認証情報: 必須。既存の認証情報から選択します (詳細は、認証情報 を参照してください)。
- インスタンスフィルター: VMWare インベントリー全体をインポートする代わりに、各種のメタデータに基づいてインベントリースクリプトで返されるインスタンスをフィルターします。ここに入力されるフィルターのいずれかに一致するホストはインポートされます。
ここで使用できるフィルターについての詳細は、VMware の Quick Filters Available for vSphere Objects <https://docs.vmware.com/en/VMware-vSphere/6.5/com.vmware.vsphere.vcenterhost.doc/GUID-2B6A1637-384D-4597-B453-B575F0ECD8A7.html> _ ドキュメントを参照してください。
- グループ化のみ: デフォルトで、Tower はユーザー指定の VMWare パラメーターに基づいてグループを作成します。たとえば、
インスタンス ID
を入力してインスタンスのインスタンス ID に基づいてグループを作成します。
vmware.ini
にあり、インベントリー更新スクリプトで使用される変数を上書きします。JSON または YAML 構文のいずれかを使用して変数を入力します。ラジオボタンを使用してこれら 2 つの間の切り替えを行います。これらの変数についての詳細は、Ansible GitHub リポジトリーの vmware_inventory.ini <https://github.com/ansible/ansible/blob/devel/contrib/inventory/vmware_inventory.ini> __を参照してください。注釈
VMware のインベントリースクリプトは Ansible Tower 3.1.2 で更新され、host_filters
または groupby_patterns
パラメーターの設定が可能になりました。「グループの作成」画面または「グループの編集」画面の ソース変数 テキストフィールドでそれらの値を指定します。以下は例になります。
- 認証情報: 必須。既存の認証情報から選択します (詳細は、認証情報 を参照してください)。
- ソース変数 フィールドを使用して、
foreman.ini
にあり、インベントリー更新スクリプトで使用される変数を上書きします。JSON または YAML 構文のいずれかを使用して変数を入力します。ラジオボタンを使用してこれら 2 つの間の切り替えを行います。これらの変数についての詳細は、Ansible GitHub リポジトリーの foreman.ini <https://github.com/ansible/ansible/blob/devel/contrib/inventory/foreman.ini> __を参照してください。
- 認証情報: 必須。既存の認証情報から選択します (詳細は、認証情報 を参照してください)。
- ソース変数 フィールドを使用して、
cloudforms.ini
にあり、インベントリー更新スクリプトで使用される変数を上書きします。JSON または YAML 構文のいずれかを使用して変数を入力します。ラジオボタンを使用してこれら 2 つの間の切り替えを行います。これらの変数についての詳細は、Ansible GitHub リポジトリーの cloudforms.ini <https://github.com/ansible/ansible/blob/devel/contrib/inventory/cloudforms.ini> __を参照してください。
- 認証情報: 必須。既存の認証情報から選択します (詳細は、認証情報 を参照してください)。
- ソース変数 フィールドを使用して、
openstack.yml
にあり、インベントリー更新スクリプトで使用される変数を上書きします。JSON または YAML 構文のいずれかを使用して変数を入力します。ラジオボタンを使用してこれら 2 つの間の切り替えを行います。これらの変数についての詳細は、Ansible GitHub リポジトリーの openstack.yml <https://github.com/ansible/ansible/blob/devel/contrib/inventory/openstack.yml> __を参照してください。
- 認証情報: 必須。既存の認証情報から選択します (詳細は、認証情報 を参照してください)。
- インスタンスフィルター: Tower インベントリー全体をインポートする代わりに、インベントリー ID/名前でインスタンスをフィルターします。インベントリースクリプトはそのインベントリーを他の Tower インスタンスから返します。
Tower では、カスタム動的インベントリースクリプトを使用できます (管理者が追加している場合)。
- 認証情報: カスタムソースの認証情報をオプションで指定できます。認証情報の種類は「クラウド」および「ネットワーク」に制限されます。詳細は、カスタム認証情報タイプ を参照してください。
- カスタムインベントリースクリプト: 必須。既存のインベントリースクリプトから選択します (詳細は、カスタムインベントリースクリプト を参照してください)。
- 環境変数: インベントリー更新スクリプトで使用される環境の変数を設定します。変数は作成したスクリプトに固有の変数である場合があります。JSON または YAML 構文のいずれかを使用して変数を入力します。ラジオボタンを使用して、これらの切り替えを行います。
カスタムインベントリースクリプトの同期または使用についての詳細は、Ansible Tower Administration Guide の カスタムインベントリースクリプト を参照してください。
アドホックコマンドを実行するには、以下を実行します。
「コマンドの実行」ウィンドウが開きます。
モジュール: 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 つの間の切り替えを行います。
結果は「Job Results (ジョブの結果)」および「標準出力」ウィンドウに表示されます。