Red Hat Training
A Red Hat training course is available for Red Hat Satellite
12.2. リモートコマンドの設定および実行
リモートホストで実行するコマンドはジョブテンプレートとして定義する必要があります。ジョブテンプレートを定義した後はこれを複数回使用することができます。
12.2.1. ジョブテンプレートのセットアップ
Satellite はジョブの実行に使用できる数多くのデフォルトジョブテンプレートを提供します。それらは、ホスト → ジョブテンプレート の下にあります。デフォルトテンプレートの中でそれぞれのニーズに合うテンプレートを見つけた場合は、「ジョブの実行」 に進みます。
デフォルトテンプレートは独自のテンプレートを作成するためのベースとして使用することもできます。デフォルトジョブテンプレートは編集用にロックされるので、テンプレートを変更するにはまずこのクローンを作成する必要があります。
手順12.1 ジョブテンプレートのクローンを作成するには、以下を実行します。
- ホスト → ジョブテンプレート に移動します。
- 新規ジョブテンプレート をクリックします。または、アクション 列のドロップダウンメニューで クローン を選択して既存のテンプレートを変更できます。
- ジョブテンプレートを設定します。
- テンプレート タブで、ジョブテンプレートの固有の名前を入力します。デフォルト を選択すると、テンプレートをすべての組織およびロケーションで利用可能にできます。テンプレートエディター を使用してテンプレートを手動で入力することも、参照 をクリックしてテキストファイルからアップロードすることもできます。テンプレートは Embedded Ruby (ERB) テンプレート構文を使用します。詳細は、「詳細テンプレートの作成」 を参照してください。パワー関連のアクションを実行する場合などには詳細なテンプレートが必要になります。Power Action - SSH Default テンプレートをカスタムテンプレートに組み込む方法については、例12.4「テンプレートにパワー操作を組み込む」 を参照してください。
- Job (ジョブ) タブで、ジョブカテゴリーを定義 (独自のカテゴリーを定義するか、表12.1「デフォルトのジョブテンプレートカテゴリー」 に一覧表示されているデフォルトカテゴリーから選択する) したり、実効ユーザーを定義したりすることができます。これらの設定は、ジョブの起動時にも設定できます (手順12.2「リモートジョブを実行するには、以下を実行します。」 を参照してください)。また、テンプレートコマンドの入力パラメーターを定義できます。これらのパラメーターはジョブの実行時に要求されます。
- 残りのタブでは、テンプレートのタイプ、組織およびロケーションの設定、およびテンプレート履歴の表示を実行できます。
- 送信 をクリックします。ページの更新時に、新規のテンプレートがジョブテンプレートの一覧に表示されるはずです。
重要
ホストの編集ページの パラメーター タブでのみ表示できるパラメーターはジョブテンプレートの入力パラメーターとして使用できることに注意してください。
表12.1 デフォルトのジョブテンプレートカテゴリー
|
ジョブテンプレートのカテゴリー
|
説明
|
|---|---|
| Packages | パッケージ関連のアクションを実行するためのテンプレートです。デフォルトで、インストール、更新、および削除アクションが含まれています。 |
| Puppet | ターゲットホストで Puppet ホストを実行するためのテンプレートです。 |
| Power | パワー関連のアクションを実行するためのテンプレートです。デフォルトで、再起動およびシャットダウンアクションが含まれます。 |
| Commands | リモートホストでカスタムコマンドを実行するためのテンプレートです。 |
| Services | サービス関連のアクションを実行するためのテンプレートです。デフォルトで、開始、停止、再起動、およびステータスアクションが含まれます。 |
| Katello | コンテンツ関連のアクションを実行するためのテンプレートです。これらのテンプレートは主として Satellite Web UI の各種の場所で使用されます (たとえば、コンテンツホストの一括操作のための UI など)が、エラータのインストールなどの各種操作を実行するために個別に使用できます。 |
例12.1 restorecon テンプレートの作成
この例は、Run Command - restorecon というテンプレートを作成する方法を示します。これは、ターゲットホストのすべてのファイル用にデフォルトの
SELinux コンテキストを復元します。
- ホスト → ジョブテンプレート に移動します。新規ジョブテンプレート をクリックします。
- 名前 フィールドに Run Command - restorecon を挿入します。デフォルト を選択してテンプレートをすべての組織で利用できるようにします。以下のテキストを テンプレートエディター に追加します。
restorecon -RvF <%= input("directory") %><%= input("directory") %>の文字列は、ジョブの呼び出し時にユーザー定義のディレクトリーに置き換えられます。 - Job (ジョブ) タブで、以下のアクションを実行します。
- ジョブカテゴリー を
Commandsに設定します。 - 入力を追加 をクリックして、ジョブのカスタマイズを可能にします。
ディレクトリーを Name (名前) フィールドに挿入します。入力名は テンプレートエディター で指定される値と一致している必要があります。 - Required をクリックし、コマンドがユーザー指定のパラメーターなしでは実行されないようにします。
- Input type ドロップダウンリストから
ユーザー入力を選択します。また、Target directory for restorecon などのようにジョブの呼び出しの際に表示される Description (説明) を指定します。
- 送信 をクリックします。
このテンプレートに基づいてジョブを実行する方法については、例12.2「複数のホストでの restorecon テンプレートの実行」 を参照してください。
12.2.2. ジョブの実行
このセクションでは、1 つ以上のホストに対してジョブテンプレートに基づくジョブを実行する方法を説明します。
手順12.2 リモートジョブを実行するには、以下を実行します。
- ホスト → すべてのホスト に移動し、ジョブのターゲットホストを選択します。検索フィールドを使用してホストの一覧の範囲を制限することができます。
- 画面右上の アクションを選択 メニューから ジョブを実行 を選択します。これにより、ジョブ呼び出し ページに移動します。または、ターゲットが 1 つのホストのみである場合、その名前をクリックし、ホスト情報ページで ジョブを実行 をクリックします。実行 ボタンを使用して ジョブテンプレート ページからジョブを起動することもできます。
- ジョブ呼び出し ページで、主なジョブ設定を定義します。
- 使用する ジョブカテゴリー および ジョブテンプレート を選択します。これらの設定は必須です。
- オプションとして、ブックマーク の一覧で保存された検索文字列を選択してターゲットホストを指定します。
- オプションとして、Search query を入力し、ターゲットホストの範囲をさらに狭めることができます。解決 行には、クエリーの影響を受けるホストの数が表示されます。更新ボタンを押して、クエリーの変更後の数の再計算を実行します。プレビューアイコンにはターゲットホストが一覧表示されます。
- 残りの設定は、選択したジョブテンプレートによって異なります。カスタムパラメーターをテンプレートに追加する方法については、手順12.1「ジョブテンプレートのクローンを作成するには、以下を実行します。」 を参照してください。
- オプションとして、詳細フィールドを表示 をクリックします。一部の詳細設定はジョブテンプレートによって異なります。以下は一般的な設定です。
- 実効ユーザー: ジョブを実行するためにユーザーを定義します。デフォルトは SSH ユーザーです。
- 同時実行レベル: 1 度に実行されるジョブの最大数を定義します。タイムスパン では、定義された期間にジョブの実行を分散できます。これらの設定は、インフラストラクチャー上での大規模なジョブ実行の負荷分散に役立ちます。
- クエリーのタイプ: 検索クエリーが評価される時を定義します。これは、クエリーをスケジュールされるタスクに対して常に最新の状態に保つのに役立ちます。
- ジョブをすぐに実行する場合は、スケジュール が
今すぐ実行に設定されていることを確認します。さらに 1 回限りの将来のジョブを定義したり、再帰的に実行されるジョブをセットアップすることもできます。再帰的に実行されるジョブについては、開始日と終了日、実行の回数と頻度を定義することができます。また cron 構文を施与うして繰り返しを定義することもできます。 - 送信 をクリックします。これにより、Job Overview (概要) ページが表示され、ジョブの完了時にはジョブのステータスも表示されます。
例12.2 複数のホストでの restorecon テンプレートの実行
以下の例では、複数のホストで 例12.1「restorecon テンプレートの作成」 で作成されたテンプレートに基づいて、複数のホストに対してジョブを実行する方法を示します。このジョブは
/home/ ディレクトリーの下にあるすべてのファイルで SELinux コンテキストを復元します。
- ホスト → すべてのホスト に移動し、ターゲットホストを選択します。アクションの選択 ドロップダウンリストから ジョブを実行 を選択します。
- ジョブ呼び出し ページで、
Commandsジョブカテゴリーを選択し、Run Command - restoreconジョブテンプレートを選択します。 - directory フィールドに
/homeを入力します。 - スケジュール を
今すぐ実行に設定します。 - 送信 をクリックします。ジョブ呼び出し ページに移動します。ここでジョブ実行のステータスを監視できます。
12.2.3. ジョブの監視
実行中のジョブの進捗を監視できます。これは、トラブルシューティングが必要になる場合に役立ちます。
手順12.3 ジョブを監視するには、以下を実行します。
- ジョブのページに移動します。このページは、
今すぐ実行が設定されているジョブをトリガーすると自動的に表示されます。スケジュールされたジョブを監視するには、モニター → ジョブ に移動して、検査するジョブ実行を選択します。 - 「ジョブ」ページで ホスト タブをクリックします。これにより、ジョブが実行されているホストの一覧が表示されます。
- ホスト 列で、検査するホストの名前をクリックします。これにより、ジョブの実行をリアルタイムでモニターできる Detail of Commands (コマンドの詳細) ページが表示されます。
- いつでも ジョブに戻る をクリックして Job Details (ジョブの詳細) ページに戻ることができます。
12.2.4. 詳細テンプレートの作成
ジョブテンプレートの作成時に、既存テンプレートを テンプレートエディター フィールドにインポートできます。これは レンダリング と呼ばれています。これにより、テンプレートを組み合わせたり、一般的なテンプレートからより具体的なテンプレートを作成したりすることができます。
以下のテンプレートを使ってデフォルトのテンプレートを組み合わせ、
httpd サービスを Red Hat Enterprise Linux システムにインストールし、これを起動できます。
<%= render_template 'Package Action - SSH Default', :action => 'install', :package => 'httpd' %> <%= render_template 'Service Action - SSH Default', :action => 'start', :service_name => 'httpd' %>
上記のテンプレートはレンダリングされるテンプレートのパラメーター値を直接指定します。ユーザーがジョブ実行時にレンダリングされたテンプレートの入力を定義できるようにする
input() メソッドを使用することもできます。たとえば、以下の構文を使用できます。
<%= render_template 'Package Action - SSH Default', :action => 'install', :package => input("package") %>
上記のテンプレートを使用して、レンダリングされたテンプレートからパラメーター定義をインポートする必要があります。これを実行するには、ジョブ タブに移動し、外部入力セットを追加 をクリックしてから Target template (ターゲットテンプレート) ドロップダウンリストでレンダリングされたテンプレートを選択します。すべてのパラメーターをインポートするか、またはコンマ区切りの一覧を指定することができます。
例12.3 restorecon テンプレートのレンダリング
この例は、例12.1「restorecon テンプレートの作成」 で作成される Run command - restorecon テンプレートに派生するテンプレートを作成する方法を示しています。このテンプレートでは、ジョブ実行時のユーザー入力は不要で、ターゲットホストの
/home/ ディレクトリー下のすべてのファイルで SELinux コンテキストを復元します。
「ジョブテンプレートのセットアップ」 で説明されている新規テンプレートを作成し、テンプレートエディター 画面で以下の文字列を指定します。
<%= render_template("Run Command - restorecon", :directory => "/home") %>例12.4 テンプレートにパワー操作を組み込む
以下の例では、再起動などのパワー操作を実行するためのジョブテンプレートをセットアップする方法を示します。この手順は、Satellite が再起動時に切断の例外をエラーとして解釈するのを防ぐため、ジョブのリモート実行が正常に機能します。
「ジョブテンプレートのセットアップ」 で説明されている新規テンプレートを作成し、テンプレートエディター 画面で以下の文字列を指定します。
<%= render_template("Power Action - SSH Default", :action => "restart") %>