10.6. リモートジョブの設定および実行
リモートホストで適用するコマンドはジョブテンプレートとして定義する必要があります。ジョブテンプレートを定義した後はこれを複数回使用することができます。
10.6.1. ジョブテンプレートのセットアップ リンクのコピーリンクがクリップボードにコピーされました!
Satellite は、ジョブ実行に使用可能なデフォルトのジョブテンプレートを提供します。ジョブテンプレートの一覧を表示するには、ホスト > ジョブテンプレート に移動します。変更せずにテンプレートを使用する場合には、「ジョブの実行」 に進んでください。
デフォルトテンプレートは独自のテンプレートを作成するためのベースとして使用することができます。デフォルトのジョブテンプレートは、編集できないようにロックされています。テンプレートのクローンを作成して、作成したクローンを編集します。
- テンプレートのクローンを作成するには、アクション コラムで、クローン を選択します。
- クローンに一意名を指定して、送信 をクリックして変更を保存します。
ジョブテンプレートは、Embedded Ruby (ERB) 構文を使用します。テンプレートの作成に関する詳細は、付録A テンプレート作成の参照を参照してください。
Ansible の考慮事項
Ansible ジョブテンプレートを作成するには、以下の手順を使用し、ERB 構文ではなく YAML 構文を使用します。テンプレートを --- で開始し、1 行目に - hosts: all を追加する必要があります。Ansible playbook YAML ファイルをジョブテンプレートの本文に埋め込みます。また、ERB 構文を追加して、YAML Ansible テンプレートをカスタマイズすることも可能です。Satellite に Ansible Playbook をインポートすることも可能です。詳細は、13章テンプレートリポジトリーの同期 を参照してください。
パラメーター変数
ランタイム時に、ジョブテンプレートはホストに定義するパラメーター変数を受け取ることができます。ホストの編集ページの パラメーター タブで表示されるパラメーターのみが、ジョブテンプレートの入力パラメーターとして使用できる点にご留意ください。ランタイム時に Ansible ジョブテンプレートがパラメーター変数を受け取らない場合には、Satellite Web UI で 管理 > 設定 に移動して、Ansible タブをクリックします。トップレベルの Ansible 変数 の行で、Value パラメーターを No に変更します。
ジョブテンプレートの作成方法:
- ホスト > ジョブテンプレート に移動します。
- 新規ジョブテンプレート をクリックします。
- テンプレート タブをクリックして、名前 フィールドにジョブテンプレートの一意名を入力します。
- デフォルト を選択して、テンプレートをすべての組織およびロケーションで利用できるようにします。
- テンプレートエディターで直接テンプレートを作成するか、インポート をクリックしてテキストファイルからテンプレートをアップロードします。
- オプション: 監査コメント フィールドで、変更に関する情報を追加します。
- ジョブ タブをクリックして、ジョブカテゴリー フィールドに独自のカテゴリー を入力するか、表10.1「デフォルトのジョブテンプレートカテゴリー」 に記載のデフォルトカテゴリーから選択します。
-
オプション: 説明形式 フィールドで説明テンプレートを入力します。(例:
Install package %{package_name})。また、テンプレートでは%{template_name}および%{job_category}も使用できます。 - プロバイダータイプ リストから、Shell スクリプトに SSH を、Ansible タスクまたは Playbook に Ansible を選択します。
- オプション: Timeout to kill フィールドで、ジョブが完了しない場合に、ジョブを中断するタイムアウトの値を入力します。
- オプション: 入力を追加 をクリックし、入力パラメーターを定義します。ジョブの実行時にパラメーターを要求し、テンプレートに定義する必要はありません。各種サンプルについては、ヘルプ タブを参照してください。
- オプション: 外部入力セット をクリックして、このジョブの他のテンプレートを追加します。
-
オプション: 実効ユーザー エリアで、コマンドでデフォルトの
remote_execution_effective_user設定を使用できない場合に、ユーザーを設定します。 - オプション: このテンプレートをスニペットとして他のテンプレートに追加する場合は、タイプ タブをクリックして、スニペット を選択します。
- ロケーション タブをクリックして、テンプレートを使用するロケーションを追加します。
- 組織 タブをクリックして、テンプレートを使用する組織を追加します。
- 送信 をクリックして変更を保存します。
テンプレートの構文に他のテンプレートを追加して、詳細なテンプレートを作成できます。詳細は、「詳細テンプレートの作成」 を参照してください。
たとえば、電源関連のアクションを実行するには、高度なテンプレートが必要です。電源アクションの追加方法は 例10.4「テンプレートにパワー操作を組み込む」 を参照してください。カスタムテンプレートに Power Action - SSH Default template を含める方法についての情報は、を参照してください。
CLI をご利用の場合
テンプレート定義ファイルを使用してジョブテンプレートを作成するには、以下のコマンドを使用します。
# hammer job-template create \
--file "path_to_template_file" \
--name "template_name" \
--provider-type SSH \
--job-category "category_name"
| ジョブテンプレートのカテゴリー | 説明 |
|---|---|
| Packages | パッケージ関連のアクションを実行するためのテンプレートです。デフォルトで、インストール、更新、および削除アクションが含まれています。 |
| Puppet | ターゲットホストで Puppet ホストを実行するためのテンプレートです。 |
| Power | パワー関連のアクションを実行するためのテンプレートです。デフォルトで、再起動およびシャットダウンアクションが含まれます。 |
| Commands | リモートホストでカスタムコマンドを実行するためのテンプレートです。 |
| Services | サービス関連のアクションを実行するためのテンプレートです。デフォルトで、開始、停止、再起動、およびステータスアクションが含まれます。 |
| Katello | コンテンツ関連のアクションを実行するためのテンプレートです。これらのテンプレートは主として Satellite Web UI の各種の場所 (たとえば、コンテンツホストの一括操作のための UI など) で使用されますが、エラータのインストールなどの各種操作を実行するために個別に使用できます。 |
例10.1 restorecon テンプレートの作成
この例は、Run Command - restorecon というテンプレートを作成する方法を示します。これは、ターゲットホストで選択したディレクトリー内の全ファイルに対して、デフォルトの SELinux コンテキストを復元します。
- ホスト > ジョブテンプレート に移動します。新規ジョブテンプレート をクリックします。
名前 フィールドに Run Command - restorecon と入力します。デフォルト を選択して、テンプレートをすべての組織で利用できるようにします。以下のテキストをテンプレートエディターに追加します。
restorecon -RvF <%= input("directory") %><%= input("directory") %>の文字列は、ジョブの呼び出し時にユーザー定義のディレクトリーに置き換えられます。-
ジョブ タブで、ジョブカテゴリー を
Commandsに設定します。 -
入力を追加 をクリックして、ジョブのカスタマイズを可能にします。名前 フィールドに
directoryと入力します。入力する名前は、テンプレートエディターで指定した値と一致している必要があります。 - 必須 をクリックし、ユーザーがパラメーターを指定しなければコマンドが実行しないようにします。
-
入力タイプ リストから ユーザー入力 を選択します。ジョブの呼び出し中に表示する説明を入力します (例:
Target directory for restorecon)。 - Submit をクリックします。
このテンプレートに基づいてジョブを実行する方法は、例10.2「複数のホストでの restorecon テンプレートの実行」 を参照してください。