Documentation

13. プロジェクト

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

このメニューは、現在利用可能なプロジェクトの一覧を表示します。プロジェクトの一覧は、表示されているテーブルヘッダー別に並び替え、検索が可能です。

Projects - home with example project

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

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

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

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

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

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

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

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

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

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

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

Actions コラムの適切なアイコンを使用して、表示のプロジェクトごとに、プロジェクトプロパティーの編集 (edit-icon)、プロジェクト属性のコピー (copy)、最新の SCM リビジョンの取得 (refresh) またはプロジェクトの削除 (delete-icon) が可能です。

注釈

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

注釈

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

_images/warning-deletion-dependencies.png

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

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

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

Projects - create new project

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

  • 名前

  • 説明 (オプション)

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

  • Ansible 環境 (オプション): このプロジェクトの実行先となるカスタムの仮想環境を、ドロップダウンメニュー一覧から選択します。

  • 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. 完了したら 保存 をクリックします。

13.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 ディレクトリーにコピーしてこの問題を修正します。

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

  1. SCM タイプ ドロップダウンメニューの一覧から適切なオプションを選択します。

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

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

  • SCM ブランチ: オプションで Mercurial の SCM ブランチ、SCM ブランチ、タグまたは Git のリビジョンを入力します。

  • リビジョン #: オプションで Subversion のリビジョン # を入力します。

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

  • SCM 更新オプション:

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

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

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

Projects - create SCM project

  1. 保存 をクリックしてプロジェクトを保存します。

ちなみに

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

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

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

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

注釈

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

projects - list all

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

Project - update status

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

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

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

Projects - permissions list for example project

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

13.3. 通知の使用

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

_images/projects-notifications-example-list.png

新しい通知を作成するには、通知一覧ビューの右上から 通知 リンクをクリックします。通知が設定されていない場合には、グレーのボックスの上または、中から 通知 リンクをクリックして新規通知を追加し、通知を作成します。

詳細は、通知 を参照してください。

_images/job-template-completed-notifications-view.png

13.4. ジョブテンプレートでの作業

ジョブテンプレート をクリックし、ジョブテンプレートや、このプロジェクトに関連付けられているワークフローテンプレートを確認できます。

_images/projects-templates-example-list.png

このビューから、テンプレートの設定を起動またはコピーできます。

13.5. スケジュールの使用

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

_images/projects-schedules-example-list.png

このビューから、編集するスケジュールの選択、スケジュールのオン/オフ、削除するスケジュールの複数選択などが可能です。

この画面には、選択された プロジェクト で現在利用できるスケジュールの一覧が表示されます。スケジュールの一覧は、名前 で並べ替えできます。

スケジュールの一覧には以下が含まれます。

  • 名前: スケジュール名をクリックすると、スケジュールの編集 ダイアログが開きます。

  • 初回実行日時: このタスクの最初にスケジュールされる実行

  • 次回実行日時: このタスクの次回にスケジュールされる実行

  • 最終実行日時: タスクに終了日時が設定されている場合、これはタスクの最後にスケジュールされている実行になります。

  • 最終変更時: スケジュールが最後に変更された時間

13.5.1. 新規スケジュールの追加

新規スケジュールを作成するには、以下を実行します。

  1. add ボタンをクリックすると、Add Schedule (スケジュールの追加) ダイアログが開きます。

Projects - create new schedule

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

  • 名前 (必須)

  • 開始日 (必須)

  • 開始時間 (必須)

  • ローカルタイムゾーン: 入力した開始時間はこのタイムゾーンの時間になります。

  • UTC Start Time (UTC 開始時間): 開始時間 + ローカルタイムゾーンで計算されます。

  • 繰り返しの頻度: 選択する頻度に応じて適切なスケジュールオプションが表示されます。

SCHEDULE DESCRIPTION (スケジュールの説明): 選択したローカルタイムゾーンで設定されたスケジュールとスケジュールされたオカレンスの一覧を確認できます。

注意

ジョブは UTC でスケジュールされます。ジョブが 1 日の特定の時間に繰り返し実行される場合には、夏時間 (DST) へ/からの切り替えがあると、ローカルタイムゾーンに合わせてこれらのジョブのスケジュールは移動する場合があります。基本的に、Tower はスケジュールの保存時に UTC に対してローカルタイムゾーンベースの時間を解決します。スケジュールを正確に設定するには、スケジュールを UTC 時間で設定する必要があります。

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

ON/OFF 切り替えを使用して、アクティブなスケジュールを停止したり、停止したスケジュールをアクティブにしたりできます。

プロジェクトのスケジュール概要画面には、初回、次回および最終実行のスケジュールについても表示されます。

Projects - newly created schedule

13.5.2. 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 ドキュメントの Advanced Control Over Role Requirements を参照してください。

とくに公開する必要のあるディレクトリーがある場合には、「Configure Tower (Tower の設定)」画面の 分離されたジョブの公開するパス に指定するか、または設定ファイルで以下のエントリーを更新して指定することができます。

AWX_PROOT_SHOW_PATHS = ['/list/of/', '/paths']

注釈

Playbook が /var/lib/awx/.ssh で定義された鍵や設定を使用する必要がある場合には、/var/lib/awx/.ssh を主要ファイルとして、AWX_PROOT_SHOW_PATHS に追加してください。

設定ファイルに変更を加えた場合には、変更の保存後に ansible-tower-service restart コマンドを使用してサービスを再起動するようにしてください。