Red Hat Training

A Red Hat training course is available for Red Hat Satellite

12.2. リモートコマンドの設定および実行

リモートホストで実行するコマンドはジョブテンプレートとして定義する必要があります。ジョブテンプレートを定義した後はこれを複数回使用することができます。

12.2.1. ジョブテンプレートのセットアップ

Satellite はジョブの実行に使用できる数多くのデフォルトジョブテンプレートを提供します。それらは、ホストジョブテンプレート の下にあります。デフォルトテンプレートの中でそれぞれのニーズに合うテンプレートを見つけた場合は、「ジョブの実行」 に進みます。
デフォルトテンプレートは独自のテンプレートを作成するためのベースとして使用することもできます。デフォルトジョブテンプレートは編集用にロックされるので、テンプレートを変更するにはまずこのクローンを作成する必要があります。

手順12.1 ジョブテンプレートのクローンを作成するには、以下を実行します。

  1. ホストジョブテンプレート に移動します。
  2. 新規ジョブテンプレート をクリックします。または、アクション 列のドロップダウンメニューで クローン を選択して既存のテンプレートを変更できます。
  3. ジョブテンプレートを設定します。
    1. テンプレート タブで、ジョブテンプレートの固有の名前を入力します。デフォルト を選択すると、テンプレートをすべての組織およびロケーションで利用可能にできます。テンプレートエディター を使用してテンプレートを手動で入力することも、参照 をクリックしてテキストファイルからアップロードすることもできます。テンプレートは Embedded Ruby (ERB) テンプレート構文を使用します。詳細は、「詳細テンプレートの作成」 を参照してください。パワー関連のアクションを実行する場合などには詳細なテンプレートが必要になります。Power Action - SSH Default テンプレートをカスタムテンプレートに組み込む方法については、例12.4「テンプレートにパワー操作を組み込む」 を参照してください。
    2. Job (ジョブ) タブで、ジョブカテゴリーを定義 (独自のカテゴリーを定義するか、表12.1「デフォルトのジョブテンプレートカテゴリー」 に一覧表示されているデフォルトカテゴリーから選択する) したり、実効ユーザーを定義したりすることができます。これらの設定は、ジョブの起動時にも設定できます (手順12.2「リモートジョブを実行するには、以下を実行します。」 を参照してください)。また、テンプレートコマンドの入力パラメーターを定義できます。これらのパラメーターはジョブの実行時に要求されます。
    3. 残りのタブでは、テンプレートのタイプ、組織およびロケーションの設定、およびテンプレート履歴の表示を実行できます。
  4. 送信 をクリックします。ページの更新時に、新規のテンプレートがジョブテンプレートの一覧に表示されるはずです。

重要

ホストの編集ページの パラメーター タブでのみ表示できるパラメーターはジョブテンプレートの入力パラメーターとして使用できることに注意してください。

表12.1 デフォルトのジョブテンプレートカテゴリー

ジョブテンプレートのカテゴリー
説明
Packagesパッケージ関連のアクションを実行するためのテンプレートです。デフォルトで、インストール、更新、および削除アクションが含まれています。
Puppetターゲットホストで Puppet ホストを実行するためのテンプレートです。
Powerパワー関連のアクションを実行するためのテンプレートです。デフォルトで、再起動およびシャットダウンアクションが含まれます。
Commandsリモートホストでカスタムコマンドを実行するためのテンプレートです。
Servicesサービス関連のアクションを実行するためのテンプレートです。デフォルトで、開始、停止、再起動、およびステータスアクションが含まれます。
Katelloコンテンツ関連のアクションを実行するためのテンプレートです。これらのテンプレートは主として Satellite Web UI の各種の場所で使用されます (たとえば、コンテンツホストの一括操作のための UI など)が、エラータのインストールなどの各種操作を実行するために個別に使用できます。

例12.1 restorecon テンプレートの作成

この例は、Run Command - restorecon というテンプレートを作成する方法を示します。これは、ターゲットホストのすべてのファイル用にデフォルトの SELinux コンテキストを復元します。
  1. ホストジョブテンプレート に移動します。新規ジョブテンプレート をクリックします。
  2. 名前 フィールドに Run Command - restorecon を挿入します。デフォルト を選択してテンプレートをすべての組織で利用できるようにします。以下のテキストを テンプレートエディター に追加します。
    restorecon -RvF <%= input("directory") %>
    <%= input("directory") %> の文字列は、ジョブの呼び出し時にユーザー定義のディレクトリーに置き換えられます。
  3. Job (ジョブ) タブで、以下のアクションを実行します。
    1. ジョブカテゴリーCommands に設定します。
    2. 入力を追加 をクリックして、ジョブのカスタマイズを可能にします。ディレクトリーName (名前) フィールドに挿入します。入力名は テンプレートエディター で指定される値と一致している必要があります。
    3. Required をクリックし、コマンドがユーザー指定のパラメーターなしでは実行されないようにします。
    4. Input type ドロップダウンリストから ユーザー入力 を選択します。また、Target directory for restorecon などのようにジョブの呼び出しの際に表示される Description (説明) を指定します。
  4. 送信 をクリックします。
このテンプレートに基づいてジョブを実行する方法については、例12.2「複数のホストでの restorecon テンプレートの実行」 を参照してください。

12.2.2. ジョブの実行

このセクションでは、1 つ以上のホストに対してジョブテンプレートに基づくジョブを実行する方法を説明します。

手順12.2 リモートジョブを実行するには、以下を実行します。

  1. ホストすべてのホスト に移動し、ジョブのターゲットホストを選択します。検索フィールドを使用してホストの一覧の範囲を制限することができます。
  2. 画面右上の アクションを選択 メニューから ジョブを実行 を選択します。これにより、ジョブ呼び出し ページに移動します。または、ターゲットが 1 つのホストのみである場合、その名前をクリックし、ホスト情報ページで ジョブを実行 をクリックします。実行 ボタンを使用して ジョブテンプレート ページからジョブを起動することもできます。
  3. ジョブ呼び出し ページで、主なジョブ設定を定義します。
    1. 使用する ジョブカテゴリー および ジョブテンプレート を選択します。これらの設定は必須です。
    2. オプションとして、ブックマーク の一覧で保存された検索文字列を選択してターゲットホストを指定します。
    3. オプションとして、Search query を入力し、ターゲットホストの範囲をさらに狭めることができます。解決 行には、クエリーの影響を受けるホストの数が表示されます。更新ボタンを押して、クエリーの変更後の数の再計算を実行します。プレビューアイコンにはターゲットホストが一覧表示されます。
    4. 残りの設定は、選択したジョブテンプレートによって異なります。カスタムパラメーターをテンプレートに追加する方法については、手順12.1「ジョブテンプレートのクローンを作成するには、以下を実行します。」 を参照してください。
  4. オプションとして、詳細フィールドを表示 をクリックします。一部の詳細設定はジョブテンプレートによって異なります。以下は一般的な設定です。
    • 実効ユーザー: ジョブを実行するためにユーザーを定義します。デフォルトは SSH ユーザーです。
    • 同時実行レベル: 1 度に実行されるジョブの最大数を定義します。タイムスパン では、定義された期間にジョブの実行を分散できます。これらの設定は、インフラストラクチャー上での大規模なジョブ実行の負荷分散に役立ちます。
    • クエリーのタイプ: 検索クエリーが評価される時を定義します。これは、クエリーをスケジュールされるタスクに対して常に最新の状態に保つのに役立ちます。
  5. ジョブをすぐに実行する場合は、スケジュール今すぐ実行 に設定されていることを確認します。さらに 1 回限りの将来のジョブを定義したり、再帰的に実行されるジョブをセットアップすることもできます。再帰的に実行されるジョブについては、開始日と終了日、実行の回数と頻度を定義することができます。また cron 構文を施与うして繰り返しを定義することもできます。
  6. 送信 をクリックします。これにより、Job Overview (概要) ページが表示され、ジョブの完了時にはジョブのステータスも表示されます。

例12.2 複数のホストでの restorecon テンプレートの実行

以下の例では、複数のホストで 例12.1「restorecon テンプレートの作成」 で作成されたテンプレートに基づいて、複数のホストに対してジョブを実行する方法を示します。このジョブは /home/ ディレクトリーの下にあるすべてのファイルで SELinux コンテキストを復元します。
  1. ホストすべてのホスト に移動し、ターゲットホストを選択します。アクションの選択 ドロップダウンリストから ジョブを実行 を選択します。
  2. ジョブ呼び出し ページで、Commands ジョブカテゴリーを選択し、Run Command - restorecon ジョブテンプレートを選択します。
  3. directory フィールドに /home を入力します。
  4. スケジュール今すぐ実行 に設定します。
  5. 送信 をクリックします。ジョブ呼び出し ページに移動します。ここでジョブ実行のステータスを監視できます。

12.2.3. ジョブの監視

実行中のジョブの進捗を監視できます。これは、トラブルシューティングが必要になる場合に役立ちます。

手順12.3 ジョブを監視するには、以下を実行します。

  1. ジョブのページに移動します。このページは、今すぐ実行 が設定されているジョブをトリガーすると自動的に表示されます。スケジュールされたジョブを監視するには、モニタージョブ に移動して、検査するジョブ実行を選択します。
  2. 「ジョブ」ページで ホスト タブをクリックします。これにより、ジョブが実行されているホストの一覧が表示されます。
  3. ホスト 列で、検査するホストの名前をクリックします。これにより、ジョブの実行をリアルタイムでモニターできる Detail of Commands (コマンドの詳細) ページが表示されます。
  4. いつでも ジョブに戻る をクリックして 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") %>