Documentation

14. プロジェクト

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 で設定されます。設定が正しくないとインストールを無効にする可能性があるので、注意してこのファイルを編集してください。

このメニューでは、現在利用可能なプロジェクトリストを表示します。デフォルトビューは折りたたまれており (縮小)、プロジェクト名とステータスが表示されますが、展開して他の情報を表示できます。さまざまな条件でこのリストをソートし、検索で希望のプロジェクトに絞り込むことができます。

Projects - home with example project

_images/projects-list-all-expanded.png

一覧表示される各プロジェクトについて、プロジェクトの横にあるそれぞれのアイコンを使用して、最新の SCM リビジョン (refresh) を取得して、プロジェクト属性をコピー (copy)、または削除 (delete-icon) できます。Ansible Tower 3.7 以降では、関連するジョブの実行中にプロジェクトを更新できます。大規模なプロジェクトがある場合には (約 10 GB)、/tmp のディスク容量が問題になる可能性があります。

ステータス はプロジェクトの状態を示し、以下のいずれかになる可能性があります (特定のステータスタイプでビューをフィルターできることにも留意してください)。

  • 保留中: ソースコントロールの更新は作成されていますが、まだキューに入れられていないか、または開始されていません。すべてのジョブ (ソースコントロールの更新に限らない) はシステムで実際に実行可能になるまで保留中の状態になります。ジョブが保留にされる理由には、依存関係にある実行中のジョブの終了を待機する必要があることや、設定された場所にジョブの実行容量が十分にないことがあります。

  • 待機中: ソースコントロールの更新はキューに入れられており、実行を待機中です。

  • 実行中: ソースコントロールの更新が進行中です。

  • 成功: このプロジェクトの最後のソースコントロールの更新が成功しました。

  • 失敗: このプロジェクトの最後のソースコントロールの更新が失敗しました。

  • エラー: 最後のソースコントロールの更新ジョブの実行に失敗しました (非推奨になる予定)。

  • 取り消し: このプロジェクトの最後のソースコントロールの更新が取り消されました。

  • 未更新: このプロジェクトはソースコントロール用に設定されていますが、更新されていません。

  • OK: プロジェクトはソースコントロール用に設定されていませんが、正常に実施されています (非推奨になる予定)。

  • 不明: プロジェクトがプロジェクトベースパスの /var/lib/awx/projects にありません (手動またはソースコントロールで管理されたプロジェクトで適用可能です)。

注釈

認証情報タイプが「手動」のプロジェクトでは、SCM タイプの認証情報として再設定されない限りソースコントロールベースのアクションを更新したり、スケジュールしたりすることはできません。

注釈

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

_images/warning-deletion-dependencies.png

14.1. 新規プロジェクトの追加

新規プロジェクトを作成するには、以下を実行します。

  1. add ボタンをクリックします。これにより、プロジェクトの作成 ウィンドウが起動します。

Projects - create new project

  1. 以下の必須フィールドに適切な情報を入力します。

  • 名前

  • 説明 (オプション)

  • 組織: プロジェクトには 1 つ以上の組織がなければなりません。ここで 1 つの組織を選択してプロジェクトを作成し、プロジェクトの作成後にさらに組織を追加できます。

  • Ansible 環境 (オプション): ドロップダウンメニューリストから、このプロジェクトを実行するカスタムの仮想環境を選択します。このフィールドは、カスタムの環境がすでに作成されている場合のみ表示されます。『Ansible Tower Upgrade and Migration Guide』の「Using virtualenv with Ansible Tower」を参照してください。

  • 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.

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

14.1.1. Playbook の手動による管理

  • Playbook を保管する 1 つ以上のディレクトリーをプロジェクトのベースパス (例: /var/lib/awx/projects/) に作成します。

  • Playbook ファイルを作成し、これを Playbook ディレクトリーにコピーします。

  • Playbook ディレクトリーおよびファイルが、Tower サービスを実行するのと同じ UNIX ユーザーおよびグループで所有されていることを確認します。

  • パーミッションが Playbook ディレクトリーおよびファイルについて適切であることを確認します。

プロジェクトパスを追加する際に問題がある場合は、プロジェクトディレクトリーおよびファイルのパーミッションおよび SELinux コンテキスト設定を確認します。

警告

Ansible Playbook ディレクトリーをベースプロジェクトパスに追加していない場合、Tower から以下のメッセージが送信されます。

Projects - create new warning

適切な Playbook ディレクトリーを作成し、SCM から Playbook をチェックアウトするか、または Playbook を適切な Playbook ディレクトリーにコピーしてこの問題を修正します。

14.1.2. ソースコントロールの使用による Playbook の管理

注釈

デフォルトでは、Ansible Tower にシステム全体の設定があり、この設定で SCM プロジェクト用に requirements.yml ファイルからロールを動的にダウンロードできます。ロールのダウンロードを有効にする の切り替えボタンを オフ にすることで、設定 (settings) メニューの ジョブ タブにあるこのオプションをオフにできます。

_images/configure-tower-jobs-download-roles.png
  1. SCM タイプ ドロップダウンメニューの一覧から適切なオプションを選択します。

Projects - create SCM project

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

  • SCM URL: ヘルプ help テキストの例を参照できます。

  • SCM ブランチ/タグ/コミット: オプションで、ソースコントロール (Git、Subversion、または Mercurial) からチェックアウトする SCM ブランチ、タグ、コミットハッシュ値、任意の参照 (ref)、リビジョン番号 (該当する場合) を入力します。コミットハッシュ値および参照の中には、次のフィールドでカスタムの refspec も指定しないと使用できないものがあります。

  • SCM Refspec: このフィールドは git ソースコントロール専用のオプションであり、git の知識があり、問題なく使用できる上級ユーザーのみが、リモートリポジトリーからダウンロードする参照を指定する必要があります。詳細については、「job branch overriding」を参照してください。

  • SCM Credential (SCM 認証情報): 認証が必要な場合には、適切な SCM 認証情報を選択します。

  • SCM 更新オプション:

  • クリーニング: 更新の実行前にローカルの変更を削除します。

  • 更新時の削除: 更新の実行前にローカルリポジトリーを完全に削除します。リポジトリーのサイズによっては、更新の完了までにかかる時間が大幅に増大します。

  • 起動時のリビジョン更新: 起動時の更新: このプロジェクトを使用してジョブを実行する場合には、ジョブの開始前にローカルリポジトリーの更新を実行します。プロジェクトの同期速度よりジョブの起動速度が上回る場合のジョブのオーバーフローを避けるため、これを選択して、プロジェクトが同期するまでにキャッシュする具体的な秒数について、キャッシュのタイムアウトを設定できます。

  • ブランチの上書きを許可する: このプロジェクトを使用するジョブテンプレートが、指定の SCM ブランチまたは、プロジェクトのリビジョン以外のリビジョンで起動できるようにします。詳細については、「job branch overriding」を参照してください。

_images/projects-create-scm-project-branch-override-checked.png
  1. 保存 をクリックしてプロジェクトを保存します。

ちなみに

GitHub リンクを使用すると、Playbook を簡単に使用できます。使用を開始するには、helloworld.yml ファイル (https://github.com/ansible/tower-example.git より利用可能) を使用します。

このリンクから、Ansible Tower Quick Start Guide の説明に従って手動で作成されたものに非常に似ている Playbook を追加することができます。これを使用しても、システムが変更されたり、破損することはありません。

14.1.2.1. ソースコントロールからのプロジェクトの更新

  1. プロジェクトを選択し、update ボタンをクリックして、既存の SCM ベースのプロジェクトを更新します。

注釈

ソースコントロールを使用するためにプロジェクト設定を追加した直後に「同期」が開始され、設定されたソースコントロールからプロジェクト詳細の取り込みが実行されることに注意してください。

projects - list all

  1. ステータス にある丸い点 (左端のプロジェクト名の横) をクリックして、更新されたプロセスについての追加の詳細を確認します。

Project - update status

14.2. パーミッションの使用

プロジェクト、インベントリー、ジョブテンプレートおよびその他の Tower 要素の読み取り、変更および管理機能を提供する、このプロジェクトに割り当てられるパーミッションのセット (ロールベースのアクセス制御) は権限とも呼ばれています。

詳細 タブのとなりの パーミッション タブを使用して、プロジェクトのパーミッションにアクセスします。この画面では、現在このプロジェクトに対してパーミッションがあるユーザー一覧を表示します。この一覧は、ユーザーロール または チームロール 別で並び替え、検索が可能です。

Projects - permissions list for example project

14.2.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

14.3. 通知の使用

通知 タブをクリックすると、設定した通知の統合を確認できます。

_images/projects-notifications-example-list.png

トグルを使用して、特定のプロジェクトで使用する通知を有効または無効にします。詳細については、「通知の有効化と無効化」を参照してください。

通知が設定されていない場合には、グレーのボックス内の 通知 リンクをクリックして新規通知を作成します。

_images/project-notifications-empty.png

さまざまな通知タイプの設定に関する追加の情報は、「通知タイプ」を参照してください。

14.4. ジョブテンプレートの使用

ジョブテンプレート をクリックして、このプロジェクトに関連付けられているワークフローテンプレートまたはジョブテンプレートを追加し、レビューできます。展開 をクリックして、テンプレートで実行したジョブのステータス、他の有用な情報など、各テンプレートの情報を表示します。さまざまな条件でこのリストをソートし、検索を実行して希望のテンプレートに絞り込むことができます。

_images/projects-templates-example-list.png

このビューからテンプレートの設定を起動 (launch)、コピー (copy) または削除 (delete-icon) できます。注記: 上記の例は、展開ビューとなっています。

14.5. スケジュールの使用

スケジュール をクリックすると、このプロジェクトに設定されているスケジュールを確認できます。

_images/projects-schedules-example-list.png

14.5.1. プロジェクトのスケジュール

プロジェクトの実行をスケジュールするには、スケジュール タブをクリックします。

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

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

14.6. Ansible Galaxy サポート

プロジェクト更新の終了時に、Tower は <project-top-level-directory>/roles/requirements.ymlroles ディレクトリーで requirements.yml というファイルを検索します。このファイルが見つかると、以下のコマンドが自動的に実行されます。

ansible-galaxy install -r roles/requirements.yml -p ./roles/ --force

このファイルにより、Galaxy ロールや、独自のプロジェクトと共にチェックアウトできる他のリポジトリー内のロールを参照できます。Ansible Galaxy サポートの追加により、これを実行するために git サブモジュールを作成する必要はなくなります。

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 ユーザーインターフェースでは、ジョブ設定ウィンドウで上記のオプションを設定できます。詳細については、各フィールドの (tooltips) アイコンをクリックしてください。

_images/configure-tower-jobs-galaxy-options.png

14.7. コレクションのサポート

Towerはジョブの実行時におけるプロジェクト固有のAnsibleコレクションをサポートします。SCM内の collections/requirements.yml というコレクション要件ファイルを指定すると、Towerはジョブの実行前の暗黙的なプロジェクトの同期時に、そのファイルで指定したコレクションをインストールします。コレクションの要件は次のように指定します。

ansible-galaxy collection install -r requirements.yml -p <job tmp location>

注釈

Ansible Tower 3.6 以降、このプロジェクトフォルダーは各ジョブ実行に対してコピーされるようになります。これにより、Playbook は、他のジョブに干渉することなく、一時ファイルの作成などの利便性のために、ソースツリーに対してローカルの変更ができるようになります。

詳細については、「Using Collections」を参照してください。

注釈

Galaxy またはコレクションから更新が必要な場合は、必要なロールをダウンロードし、/tmp ファイルでより多くの領域を消費する同期が実行されます。大規模なプロジェクト (約 10 GB) があると、/tmp のディスク容量が問題になる可能性があります。