Documentation

12. プロジェクト

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 にありません (手動またはソースコントロールで管理されたプロジェクトで適用可能です)。

アクション では、以下のアクションを選択できます。

  • 更新: このプロジェクトに設定されている場合は、ソースコントロールから即時の更新を起動します。
  • スケジュール: このプロジェクトに設定されている場合は、ソースコントロールから更新をスケジュールします。
  • 編集: プロジェクトを編集します。
  • 削除: プロジェクトを削除します。

注釈

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

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

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

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

Projects - create new project

  1. 以下のフィールドに該当する詳細を入力します。
  • 名前
  • 説明 (オプション)
  • 組織 (プロジェクトには 1 つ以上の組織がなければなりません。ここで 1 つの組織を選択してプロジェクトを作成し、プロジェクトの作成後にさらに組織を追加できます。)
  • SCM タイプ (手動、Git、Subversion、または Mercurial のいずれかを選択します)。詳細は、本書の 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. 完了したら 保存 をクリックします。

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

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

この画面には、選択されたユーザーに対して現在利用できる権限の一覧が表示されます。権限の一覧は、名前タイプ、または ロール で並べ替え、検索できます。

Projects - permissions list for example project

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

12.3. 通知の使用

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

_images/notifications-template-example-list.png

add notifications ボタンをクリックして通知を作成します。

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

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

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

12.5. ソースコントロールの使用による 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 を追加することができます。これを使用しても、システムが変更されたり、破損することはありません。

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

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

注釈

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

projects - list all

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

Project - update status

3. To set a schedule for updating the project from SCM, click the schedule button. This will navigate to the Schedules screen.

Project - update started

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

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

  • 名前: スケジュール名をクリックすると、スケジュールの編集 ダイアログが開きます。
  • 初回実行日時: このタスクの最初にスケジュールされる実行
  • 次回実行日時: このタスクの次回にスケジュールされる実行
  • 最終実行日時: タスクに終了日時が設定されている場合、これはタスクの最後にスケジュールされている実行になります。

スケジュール 画面の右上にあるボタンを使用して以下のアクションを実行できます。

  • 新規スケジュールの作成
  • このビューの更新
  • アクティビティーストリームの表示

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

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

  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

12.8. 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 を参照してください。