Ansible Tower では、Tower API からのジョブテンプレートをもとに、あるいは tower-cli コマンドラインツールを使用してジョブを簡単に起動できます。
ジョブテンプレートを起動すると、以下の設定が行われます。
ランタイムデータは、ジョブテンプレートの ask_ _on_launch が True に設定されている場合にジョブテンプレートデータより優先されます。たとえば、ランタイムの認証情報は、ジョブテンプレートで ask_credential_on_launch が True に設定されている場合のみ受け入れられます。
API 経由でジョブテンプレートを起動する場合には、以下のワークフローに従ってください。
GET https://your.tower.server/api/v1/job_templates/<your job template id>/launch/: 応答には、ジョブテンプレートに関する情報を提供する job_template_data および defaults などのデータが含まれます。
返されたデータに起動に必要なランタイムデータがないか確認します。また、起動エンドポイントの OPTIONS を検査すると、POST フィールドで許可されている内容を推測しやすくなる場合があります。
警告
特定のランタイム認証情報を指定すると、
passwords_needed_to_startで提示されていないパスワードが必要になってくる場合があります。
passwords_needed_to_start: 必要なパスワードの一覧credential_needed_to_start: ブール値inventory_needed_to_start: ブール値variables_needed_to_start:extra_vars欄内に渡す必要のあるフィールド一覧
ユーザーが求めたランタイムデータでオプションで許可できるものがあるか、返されたデータを確認します。
ask_variables_on_launch: extra_vars 内の Ansible に渡す追加の変数を入力するようにユーザーに求めるかどうかを指定するブール値ask_tags_on_launch: 起動時にjob_tagsの入力をユーザーに求めるかどうかを指定するブール値 (便宜上skip_tagsの使用が可能)ask_job_type_on_launch: 起動時にjob_typeの入力をユーザーに求めるかどうかを指定するブール値ask_limit_on_launch: 起動時にlimitの入力をユーザーに求めるかどうかを指定するブール値ask_inventory_on_launch: 起動時に関連のinventoryフィールドの入力をユーザーに求めるかどうかを指定するブール値ask_credential_on_launch: 起動時に関連のcredentialフィールドの入力をユーザーに求めるかどうかを指定するブール値survey_enabled: 以下のジョブテンプレートのsurvey_specQ&A 形式に準拠する追加のextra_varsの入力をユーザーに求めるかどうかを指定するブール値
以前の手順で収集した必須データを使用して POST https://your.tower.server/api/v1/job_templates/<your job template id>/launch/ を実行します。このアクションの要求データで渡すことができる変数には以下が含まれます。
extra_vars: 調査の質問への回答など、ユーザーが指定する変数を含む JSON または YAML 形式のディクショナリーで表現する文字列 (エスケープした括弧)。job_tags: 実行するプレイブックにコンマ区切りのタグ一覧を表現する文字列limit: 稼働するホストまたはグループ (コンマ区切りリスト) を表現する文字列inventory: このジョブランで使用するインベントリーの外部キーの整数値credential: このジョブランで使用する認証情報の外部キーの整数値
POST は、ジョブに関するデータと、ランタイムデータが受け入れられるかどうかの情報を返します。ジョブ ID は、3.0 以前に記述されたツールとの互換性を保つために job フィールドで指定します。応答は以下のようになります。
{
"ignored_fields": {
"credential": 2,
"job_tags": "setup,teardown"
}
"id": 4,
...more data about the job...
"job": 4,
}
この例では、credential および job_tags の値を指定し、ジョブテンプレートの ask_credential_on_launch と ask_tags_on_launch は False と指定しました。ジョブテンプレートの作成者がランタイムの値を使用する許可を行わなかったので、これらは却下されました。
この応答でジョブに関する詳細を確認できます。更新済みのステータスを取得するには、ジョブページ /jobs/4 への GET 要求を行うか、応答内の url リンクに従う必要があります。キャンセル、再起動などの関連のリンクも含まれます。
注釈
非実行ノードでジョブをクエリーすると、result_stdout フィールドおよび関連の stdout ページでエラーメッセージ「stdout capture is missing」が表示されます。stdout を生成するには、関連の stdout ページに format=txt_download クエリーパラメーターを使用してください。これにより、stdout ファイルが作成され、ジョブへの更新がされるか、関連の std がジョブ出力に表示されます。
注釈
スキャンジョブに対して起動する際には、新規インベントリーを割り当てることはできません。スキャンジョブは固定のインベントリーに紐付けする必要があります。
注釈
このタイプの “scan” に/から起動する際は、ジョブタイプを変更できません。ask_job_type_on_launch オプションのみが起動時に “run” と “check” の切り替えが可能です。
tower-cli ジョブテンプレートの起動¶Tower コマンドラインから、ジョブテンプレートの起動方法として tower-cli を使用できます。
tower-cli の起動に関するヘルプは以下を使用します。
tower-cli job launch --help.
ジョブテンプレートから起動するには、以下と同様に tower-cli を呼び出します。
API の使用例として、-v フラグを追加することもできます。
tower-cli job launch --job-template=4 -v