Project は、Tower に表示される Ansible Playbook の論理コレクションです。
Playbook および Playbook ディレクトリーをプロジェクトのベースパスに手動で配置するか、または Playbook を Tower がサポートするソースコード管理 (SCM) システム (例: Git、Subversion、Mercurial および Red Hat Insights) に配置することで、Playbook と Playbook ディレクトリーを管理できます。Red Hat Insights プロジェクトを作成するには、Insights プロジェクトの設定 を参照してください。
注釈
デフォルトで、プロジェクトのベースパスは /var/lib/awx/projects
ですが、Tower 管理者によって変更されている可能性があります。これは /etc/tower/conf.d/custom.py
で設定されます。設定が正しくないとインストールを無効にする可能性があるので、注意してこのファイルを編集してください。
このメニューでは、現在利用可能なプロジェクトリストを表示します。デフォルトビューは折りたたまれており (縮小)、プロジェクト名とステータスが表示されますが、展開して他の情報を表示できます。さまざまな条件でこのリストをソートし、検索で希望のプロジェクトに絞り込むことができます。
一覧表示される各プロジェクトについて、プロジェクトの横にあるそれぞれのアイコンを使用して、最新の SCM リビジョン () を取得して、プロジェクト属性をコピー ()、または削除 () できます。Ansible Tower 3.7 以降では、関連するジョブの実行中にプロジェクトを更新できます。大規模なプロジェクトがある場合には (約 10 GB)、/tmp
のディスク容量が問題になる可能性があります。
ステータス はプロジェクトの状態を示し、以下のいずれかになる可能性があります (特定のステータスタイプでビューをフィルターできることにも留意してください)。
保留中: ソースコントロールの更新は作成されていますが、まだキューに入れられていないか、または開始されていません。すべてのジョブ (ソースコントロールの更新に限らない) はシステムで実際に実行可能になるまで保留中の状態になります。ジョブが保留にされる理由には、依存関係にある実行中のジョブの終了を待機する必要があることや、設定された場所にジョブの実行容量が十分にないことがあります。
待機中: ソースコントロールの更新はキューに入れられており、実行を待機中です。
実行中: ソースコントロールの更新が進行中です。
成功: このプロジェクトの最後のソースコントロールの更新が成功しました。
失敗: このプロジェクトの最後のソースコントロールの更新が失敗しました。
エラー: 最後のソースコントロールの更新ジョブの実行に失敗しました (非推奨になる予定)。
取り消し: このプロジェクトの最後のソースコントロールの更新が取り消されました。
未更新: このプロジェクトはソースコントロール用に設定されていますが、更新されていません。
OK: プロジェクトはソースコントロール用に設定されていませんが、正常に実施されています (非推奨になる予定)。
不明: プロジェクトがプロジェクトベースパスの /var/lib/awx/projects
にありません (手動またはソースコントロールで管理されたプロジェクトで適用可能です)。
注釈
認証情報タイプが「手動」のプロジェクトでは、SCM タイプの認証情報として再設定されない限りソースコントロールベースのアクションを更新したり、スケジュールしたりすることはできません。
注釈
他の作業アイテムが使用するアイテムを削除する場合は、メッセージが開き、削除されるアイテムと、削除の確認を促すプロンプトが表示されます。画面によっては、無効なアイテムや、過去に削除されたアイテムが含まれる場合があるので、それらのアイテムは実行に失敗します。以下は、これらのメッセージ例です。
新規プロジェクトを作成するには、以下を実行します。
ボタンをクリックします。これにより、プロジェクトの作成 ウィンドウが起動します。
以下の必須フィールドに適切な情報を入力します。
名前
説明 (オプション)
組織: プロジェクトには 1 つ以上の組織がなければなりません。ここで 1 つの組織を選択してプロジェクトを作成し、プロジェクトの作成後にさらに組織を追加できます。
Ansible 環境 (オプション): ドロップダウンメニューリストから、このプロジェクトを実行するカスタムの仮想環境を選択します。このフィールドは、カスタムの環境がすでに作成されている場合のみ表示されます。『Ansible Tower Upgrade and Migration Guide』の「Ansible Tower での virtualenv の使用」を参照してください。
SCM タイプ: ドロップダウンメニューリストから、このプロジェクトに関連付けられている SCM タイプを選択します。後に続くセクションでは、選択したタイプにより、利用可能なオプションが異なります。詳細は、後続のセクションの 「Playbook の手動による管理」または「ソースコントロールの使用による Playbook の管理」を参照してください。
注釈
手動プロジェクトを追加する場合には、プロジェクトのルートフォルダー内の各プロジェクトパスは 1 つのプロジェクトにしか割り当てることができません。以下のメッセージが表示される場合には、すでにプロジェクトパスが既存プロジェクトのパスに割り当てられていないことを確認してください。
All of the project paths have been assigned to existing projects, or there are no directories found in the base path.
You will need to add a project path before creating a new project.
完了したら 保存 をクリックします。
Playbook を保管する 1 つ以上のディレクトリーをプロジェクトのベースパス (例: /var/lib/awx/projects/) に作成します。
Playbook ファイルを作成し、これを Playbook ディレクトリーにコピーします。
Playbook ディレクトリーおよびファイルが、Tower サービスを実行するのと同じ UNIX ユーザーおよびグループで所有されていることを確認します。
パーミッションが Playbook ディレクトリーおよびファイルについて適切であることを確認します。
プロジェクトパスを追加する際に問題がある場合は、プロジェクトディレクトリーおよびファイルのパーミッションおよび SELinux コンテキスト設定を確認します。
警告
Ansible Playbook ディレクトリーをベースプロジェクトパスに追加していない場合、Tower から以下のメッセージが送信されます。
適切な Playbook ディレクトリーを作成し、SCM から Playbook をチェックアウトするか、または Playbook を適切な Playbook ディレクトリーにコピーしてこの問題を修正します。
ソースコントロールを使用するように Playbook を設定するには、プロジェクトの 詳細 タブで以下を行います。
SCM タイプ ドロップダウンメニューリストから適切なオプション (Git、Subversion、または Mercurial) を選択します。
以下のフィールドに該当する詳細を入力します。
SCM URL: ヘルプ テキストの例を参照できます。
SCM ブランチ/タグ/コミット: オプションで、ソースコントロール (Git、Subversion、または Mercurial) からチェックアウトする SCM ブランチ、タグ、コミットハッシュ値、任意の参照 (ref)、リビジョン番号 (該当する場合) を入力します。コミットハッシュ値および参照の中には、次のフィールドでカスタムの refspec も指定しないと使用できないものがあります。
SCM Refspec: このフィールドは git ソースコントロール専用のオプションであり、git の知識があり、問題なく使用できる上級ユーザーのみが、リモートリポジトリーからダウンロードする参照を指定する必要があります。詳細については、「job branch overriding」を参照してください。
SCM Credential (SCM 認証情報): 認証が必要な場合には、適切な SCM 認証情報を選択します。
SCM 更新オプション で起動動作を任意で選択します (該当する場合)。
クリーニング: 更新の実行前にローカルの変更を削除します。
更新時の削除: 更新の実行前にローカルリポジトリーを完全に削除します。リポジトリーのサイズによっては、更新の完了までにかかる時間が大幅に増大します。
起動時のリビジョン更新: リモートソースコントロールのプロジェクトのリビジョンを現在のリビジョンに更新し、ロールディレクトリーを Galaxy または Collections からキャッシュします。Tower は、ローカルリビジョンが一致し、ロールおよびコレクションが最終更新で最新の状態になるようにします。また、プロジェクトの同期よりも迅速にジョブを起動した場合にジョブがオーバーフローになるのを回避するために、これを選択して、プロジェクトが同期するまでにキャッシュする具体的な秒数について、キャッシュのタイムアウトを設定できます。
ブランチの上書きを許可する: このプロジェクトを使用するジョブテンプレートが、指定の SCM ブランチまたは、プロジェクトのリビジョン以外のリビジョンで起動できるようにします。詳細については、「job branch overriding」を参照してください。
保存 をクリックしてプロジェクトを保存します。
ちなみに
GitHub リンクを使用すると、Playbook を簡単に使用できます。使用を開始するには、
helloworld.yml
ファイル (https://github.com/ansible/tower-example.git より利用可能) を使用します。このリンクから、Ansible Tower Quick Start Guide の説明に従って手動で作成されたものに非常に似ている Playbook を追加することができます。これを使用しても、システムが変更されたり、破損することはありません。
Red Hat Insights を使用するように Playbook を設定するには、プロジェクトの 詳細 タブで以下を実行します。
SCM タイプ ドロップダウンメニューリストから Red Hat Insights を選択します。
Red Hat Insights では、認証に認証情報が必要です。Red Hat Insights で使用できるように、認証情報 フィールドから適切な認証情報を選択します。
SCM 更新オプション で起動動作を任意で選択します (該当する場合)。
クリーニング: 更新の実行前にローカルの変更を削除します。
更新時の削除: 更新の実行前にローカルリポジトリーを完全に削除します。リポジトリーのサイズによっては、更新の完了までにかかる時間が大幅に増大します。
起動時のリビジョン更新: リモートソースコントロールのプロジェクトのリビジョンを現在のリビジョンに更新し、ロールディレクトリーを Galaxy または Collections からキャッシュします。Tower は、ローカルリビジョンが一致し、ロールおよびコレクションが最終更新で最新の状態になるようにします。また、プロジェクトの同期よりも迅速にジョブを起動した場合にジョブがオーバーフローになるのを回避するために、これを選択して、プロジェクトが同期するまでにキャッシュする具体的な秒数について、キャッシュのタイムアウトを設定できます。
保存 をクリックしてプロジェクトを保存します。
リモートアーカイブを使用する Playbook により、バージョン付けされたアーティファクトを生成するビルドプロセスまたはリリースに基づいてプロジェクトを提供することができます。これには、単一のアーカイブ内のそのプロジェクトのすべての要件が含まれます。
リモートアーカイブを使用するように Playbook を設定するには、プロジェクトの 詳細 タブで以下を行います。
SCM タイプ ドロップダウンメニューリストから リモートアーカイブ を選択します。
以下のフィールドに該当する詳細を入力します。
SCM URL - GitHub Release、Artifactory に保存されているビルドアーティファクトなど、リモートアーカイブへの URL を要求し、それをプロジェクトパスに展開して使用します。
SCM Credential (SCM 認証情報): 認証が必要な場合には、適切な SCM 認証情報を選択します。
SCM 更新オプション で起動動作を任意で選択します (該当する場合)。
クリーニング: 更新の実行前にローカルの変更を削除します。
更新時の削除: 更新の実行前にローカルリポジトリーを完全に削除します。リポジトリーのサイズによっては、更新の完了までにかかる時間が大幅に増大します。
起動時のリビジョン更新: このオプションは、プロジェクトのリビジョンをリモートソースコントロールの現在のリビジョンに更新し、ロールディレクトリーを Galaxy または Collections からキャッシュするため、推奨されません。
ブランチの上書きを許可する: このオプションは、このプロジェクトを使用するジョブテンプレートが、指定の SCM ブランチ、またはプロジェクトのリビジョン以外のリビジョンで起動できるようするため推奨されません。
注釈
この SCM タイプは、アーティファクトの変更のない概念をサポートすることが意図されているため、(少なくてもロールに対して) Galaxy 統合を無効にすることが推奨されます。
保存 をクリックしてプロジェクトを保存します。
プロジェクトを選択し、 ボタンをクリックして、既存の SCM ベースのプロジェクトを更新します。
注釈
ソースコントロールを使用するためにプロジェクト設定を追加した直後に「同期」が開始され、設定されたソースコントロールからプロジェクト詳細の取り込みが実行されることに注意してください。
ステータス にある丸い点 (左端のプロジェクト名の横) をクリックして、更新されたプロセスについての追加の詳細を確認します。
プロジェクト、インベントリー、ジョブテンプレートおよびその他の Tower 要素の読み取り、変更および管理機能を提供する、このプロジェクトに割り当てられるパーミッションのセット (ロールベースのアクセス制御) は権限とも呼ばれています。
詳細 タブのとなりの パーミッション タブを使用して、プロジェクトのパーミッションにアクセスします。この画面では、現在このプロジェクトに対してパーミッションがあるユーザー一覧を表示します。この一覧は、ユーザー、ロール または チームロール 別で並び替え、検索が可能です。
パーミッション タブでは、ユーザーおよびチームメンバーに関連付けられたパーミッションの確認、付与、編集および削除を実行できます。このリソースについて特定ユーザーにパーミッションを割り当てるには以下を行います。
パーミッション タブをクリックします。
ボタンをクリックして、ユーザー/チームの追加ウィンドウを開きます。
アクセス権のあるユーザーまたはチームを指定してから、これらのユーザーやチームに特定のロールを割り当てます。
ユーザーまたはチームの名前の横にある 1 つまたは複数のチェックボックスをクリックしてチェックマークを付け、これらを選択します。
注釈
ユーザー と チーム タブ間を保存せずに移動して、複数のユーザーとチームを同時に選択することができます。
選択を終えると、ウィンドウが展開され、ドロップダウンメニューの一覧から選択した各ユーザーまたはチームのロールを選択できるようになります。
上記の例では、インベントリー関連のオプションが表示されます。リソース毎に、利用できるオプションが異なります。
管理者 は権限の読み取り、実行および編集を許可します (すべてのリソースに適用)。
使用 は、ジョブテンプレートのリソースの使用を許可します (ジョブテンプレート以外の全リソースに適用)。
更新: SCM 更新でのプロジェクトの更新を許可します (プロジェクトおよびインベントリーに適用)。
アドホック: アドホックコマンドの使用を許可します (インベントリーに適用)。
実行 は、ジョブテンプレートの起動を許可します (ジョブテンプレートに適用)。
読み取り は、表示のみのアクセスを許可します (すべてのリソースに適用)。
ちなみに
ロールの選択ペインの キー ボタンを使用して、各ロールの説明を表示します。詳細情報は、本ガイドの「ロール」を参照してください。
選択したユーザーまたはチームに適用するロールを選択します。
注釈
ユーザー と チーム タブ間を保存せずに移動すると、複数のユーザーとチームにロールを割り当てることができます。
各ユーザーとチームのロールの割り当てを確認します。
完了したら 保存 をクリックすると、ユーザー/チームの追加ウィンドウが閉じ、各ユーザーやチームに割り当てられた更新済みのロールが表示されます。
特定ユーザーのパーミッションを削除するには、そのリソースの横にある「関連付けの解除」 (x) ボタンをクリックします。
これにより確認ダイアログが起動し、関連付けの解除を確定するように求められます。
通知 タブをクリックすると、設定した通知の統合を確認できます。
トグルを使用して、特定のプロジェクトで使用する通知を有効または無効にします。詳細については、「通知の有効化と無効化」を参照してください。
通知が設定されていない場合には、グレーのボックス内の 通知 リンクをクリックして新規通知を作成します。
さまざまな通知タイプの設定に関する追加の情報は、「通知タイプ」を参照してください。
ジョブテンプレート をクリックして、このプロジェクトに関連付けられているワークフローテンプレートまたはジョブテンプレートを追加し、レビューできます。展開 をクリックして、テンプレートで実行したジョブのステータス、他の有用な情報など、各テンプレートの情報を表示します。さまざまな条件でこのリストをソートし、検索を実行して希望のテンプレートに絞り込むことができます。
このビューからテンプレートの設定を起動 ()、コピー () または削除 () できます。注記: 上記の例は、展開ビューとなっています。
スケジュール をクリックすると、このプロジェクトに設定されているスケジュールを確認できます。
プロジェクト更新の終了時に、Tower は <project-top-level-directory>/roles/requirements.yml
の roles
ディレクトリーで requirements.yml
というファイルを検索します。このファイルが見つかると、以下のコマンドが自動的に実行されます。
ansible-galaxy role install -r roles/requirements.yml -p <project-specific cache location>/requirements_roles -vvv
このファイルを使用すると、Galaxy ロールや、他のリポジトリー内のロールを参照できます。このロールは、独自のプロジェクトと組み合わせてチェックアウトできます。この Ansible Galaxy サポートを追加することで、この結果を達成するために git サブモジュールを作成する必要がなくなります。SCM プロジェクト (およびロール/コレクション) がプライベートジョブ環境からプルされ、そこから実行される場合は、/tmp
内のプロジェクトに固有の <private job directory> がデフォルトで作成されます。ただし、Tower の設定ウィンドウのジョブの設定タブで、お使いの環境に基づいて別の ジョブの実行パス を指定することができます。
キャッシュディレクトリーはグローバルプロジェクトディレクトリー内のサブディレクトリーで、コンテンツはキャッシュの場所から <job private directory>/requirements_roles
の場所にコピーできます。
デフォルトでは、Ansible Tower にシステム全体の設定があり、この設定で SCM プロジェクト用に roles/requirements.yml
ファイルからロールを動的にダウンロードできます。ロールのダウンロードを有効にする の切り替えボタンを オフ にすることで、設定 () メニューの ジョブ タブにあるこの設定をオフにできます。
プロジェクトの同期が実行されるたびに、Tower は、プロジェクトのソースと、Galaxy や Collections のロールがプロジェクトで古くなっているかどうかを判断します。プロジェクトの更新により、更新内のロールがダウンロードされます。
ジョブがアップストリームロールに加えられた変更を取得する必要がある場合は、プロジェクトを更新すると、これが確実に行われます。ロールの変更は、新しいコミットが provision-role ソースコントロールにプッシュされたことを意味します。この変更をジョブで有効にするために、playbooks リポジトリーに新しいコミットをプッシュする必要はありませんが、ロールをローカルキャッシュにダウンロードするプロジェクトを更新する 必要があります。たとえば、ソースコントロールに 2 つの git リポジトリーがあるとします。1 つ目は playbooks で、Tower のプロジェクトはこの URL を指しています。2 つ目は provision-role であり、playbooks git リポジトリー内の roles/requirements.yml
ファイルにより参照されます。
つまり、ジョブは、すべてのジョブの実行前に最新のロールをダウンロードします。ロールとコレクションは、パフォーマンス上の理由でローカルでキャッシュされます。また、プロジェクトの SCM 更新オプション で 起動時のリビジョン更新 を選択し、各ジョブの実行前にアップストリームロールを再ダウンロードするようにする必要があります。
更新は同期よりもはるかに前のプロセスで行われるため、これによりエラーと詳細がより速く、より論理的な場所で詳細が表示されます。
requirements.yml
の構文に関する詳細情報と例については、Ansible ドキュメントの「role requirements section」を参照してください。
とくに公開する必要のあるディレクトリーがある場合には、「Configure Tower (Tower の設定)」画面の 分離されたジョブの公開するパス に指定するか、または設定ファイルで以下のエントリーを更新して指定することができます。
AWX_PROOT_SHOW_PATHS = ['/list/of/', '/paths']
注釈
Playbook が
/var/lib/awx/.ssh
で定義した鍵や設定を使用する必要がある場合には、このファイルを主要ファイルとして、AWX_PROOT_SHOW_PATHS
に追加してください。
設定ファイルに変更を加えた場合には、変更の保存後に ansible-tower-service restart
コマンドを使用してサービスを再起動するようにしてください。
Tower ユーザーインターフェースでは、ジョブ設定ウィンドウで、これらの設定を行うことができます。
注釈
プライマリー Galaxy Server のユーザー名* フィールドおよび プライマリー Galaxy Server のパスワード フィールドは Ansible Tower 3.8 では設定できなくなりました。Galaxy または Automation Hub にアクセスするには、代わりにトークンを使用することが推奨されます。
Tower は、ジョブの実行時におけるプロジェクト固有の Ansible コレクションをサポートします。SCM に collections/requirements.yml
という名前のコレクション要件ファイルを指定すると、Tower は、ジョブ実行前に暗黙的なプロジェクトを同期する際に、そのファイルで指定したコレクションをインストールします。コレクションの要件は次のように指定します。
ansible-galaxy collection install -r requirements.yml -p <job tmp location>
デフォルトでは、Ansible Tower にシステム全体の設定があり、この設定で SCM プロジェクト用に collections/requirements.yml
ファイルからコレクションを動的にダウンロードできます。コレクションのダウンロードを有効にする の切り替えボタンを オフ にすることで、設定 () メニューの ジョブ タブにあるこの設定をオフにできます。
ロールとコレクションはパフォーマンス上の理由からローカルにキャッシュされるため、以下を確実に行うためには、プロジェクトの SCM 更新オプションで 起動時のリビジョン更新 を選択する必要があります。
Tower のローカルの Automation Hub に公開されているコレクションを使用するには、以下を行います。
公開されているリポジトリーおよびそのトークンをローカルの Automation Hub の Repo Management ダッシュボードから取得した Automation Hub 認証情報を作成します。
異なる名前空間/コレクションを使用して異なるリポジトリーを作成できます。Automation Hub のリポジトリーごとに、異なる Automation Hub 認証情報を作成する必要があります。Automation Hub UI から「Ansible CLI URL」を、https://$<hub_url>/api/galaxy/content/<repo you want to pull from>
の形式で Galaxy Server URL フィールドに入力します。
Automation Hub UI 固有の手順については、「Managing Red Hat Certified and Ansible Galaxy Collections in Ansible Hub」を参照してください。
Automation Hub からコンテンツの同期が可能な組織に移動し、新しい Automation Hub 認証情報を組織に追加します。このステップでは、各組織を。コンテンツを使用できる Automation Hub 認証情報 (つまりリポジトリー) に関連付けることができます。
注釈
リポジトリーが 2 つあるとします。
Prod: Namespace 1
および Namespace 2
(それぞれコレクション A
および B
が含まれます (namespace1.collectionA:v2.0.0
および namespace2.collectionB:v2.0.0
)
Stage: コレクション A
のみがある Namespace 1
(Automation Hub の namespace1.collectionA:v1.5.0
)。Prod および Stage のリポジトリー URL があります。
それぞれに Automation Hub 認証情報を作成できます。次に、さまざまな組織にさまざまなレベルのアクセスを割り当てることができます。たとえば、開発者組織が両方のリポジトリーにアクセスできるのに対し、運用組織は |ah|の Prod リポジトリーにのみアクセスできるようにすることができます。
Automation Hub UI 固有の手順については、「Managing User Access in Ansible Hub」を参照してください。
Automation Hub に自己署名証明書がある場合は、Tower 設定の Ansible Galaxy SSL 証明書の検証を無視する をクリックして有効にします。これはグローバル設定であることに注意してください。
ソースリポジトリーが collections/requirements.yml
ファイルにある要件ファイルに必要なコレクションを指定するプロジェクトを作成します。Ansible のドキュメント https://docs.ansible.com/ansible/latest/user_guide/collections_using.html#install-multiple-collections-with-a-requirements-file で説明されている構文を参照してください。
プロジェクトリストのビューで をクリックして、このプロジェクトに対して更新を実行します。Tower は collections/requirements.yml
ファイルから Galaxy コレクションを取得し、それを変更されたものとして報告します。このプロジェクトを使用するジョブテンプレートに対してコレクションがインストールされます。
注釈
Galaxy またはコレクションから更新が必要な場合は、必要なロールをダウンロードし、/tmp ファイルでより多くの領域を消費する同期が実行されます。大規模なプロジェクト (約 10 GB) があると、/tmp
のディスク容量が問題になる可能性があります。
コレクションの詳細は、「Using Collections」を参照してください。Red Hat がこれらの公式コレクションのいずれかを公開する方法 (Tower のインストールを直接自動化するために使用できます) は、AWX Ansible Collection のドキュメントを参照してください。このページは、Red Hat Ansible Automation Platform サブスクリプションの一部として Red Hat のカスタマー認証情報を使用してアクセスできます。