第5章 ホストでのリモートジョブの実行

Red Hat Satellite は、Shell スクリプトを使用してホストで任意のコマンドを使用してジョブを実行する機能および、Ansible タスクと Playbook を実行する機能をサポートします。これは、リモート実行と呼ばれます。

リモート実行は、Satellite Server ではデフォルトで有効になっていますが、Capsule Server では手動で有効化する必要があります。カスタムの Ansible ロールを作成した場合やロールをダウンロードした場合には、ロールを含むパッケージを、タスクの実行先または Playbook の実行先である Capsule のベースシステムにインストールする必要があります。ロールをインストール済みの Capsule から Satellite に、これらのロールをインポートしてからでないと、Satellite では使用できません。

通信は Capsule Server 経由で行われます。これは、Satellite Server にはターゲットホストへの直接のアクセスが不要であり、多数のホストを管理するために拡張可能であることを意味します。リモート実行は SSH サービスを使用するため、ターゲットホストで有効化されており、実行している必要があります。Capsule に、ターゲットホストのポート 22 にアクセスできることを確認してください。

Satellite は、プロビジョニングテンプレートによく似ている ERB 構文のジョブテンプレートを使用します。Shell スクリプトおよび Ansible のジョブテンプレートが複数、デフォルトで含まれています。「ジョブテンプレートのセットアップ」を参照してください。

注記

Capsule Server のベースシステムは Satellite Server の内部 Capsule のクライアントであるため、このセクションは Capsule Server を含む Satellite Server に接続されるホストのすべてのタイプに適用されます。

ジョブは、一度に複数のホストに対して実行でき、デプロイメントに適した変数をコマンドで使用できます。変数の値は、ホストのファクト、Smart Class パラメーター、Smart 変数、またはホストパラメーターで設定できます。さらに、コマンドの実行時にテンプレートのカスタム値を指定できます。「ジョブの実行」を参照してください。

デフォルトでは、それぞれの Capsule はリモート実行機能が無効にされた状態でインストールされます。リモート実行を有効にするには、以下のコマンドを入力します。

# satellite-installer --scenario capsule \
--enable-foreman-proxy-plugin-remote-execution-ssh

Capsule Server でリモート実行が有効になっていることを確認するには、Web UI で インフラストラクチャー > Capsules に移動し、編集アイコンの右側にある アクション コラムで、機能の更新 を選択して、リモート実行機能が表示されていることを確認します。

デフォルトで、Satellite Server は Katello エージェントではなくリモート実行を使用するように設定されています。これらの設定は、まずカスタムジョブテンプレートを作成し、次に Web UI の 管理 > リモート実行機能 に移動してこれらの新規テンプレートを選択して変更できます。変更するそれぞれのアクションについて、ラベルを選択し、使用するジョブテンプレートを選択します。

5.1. リモートコマンドのセキュアな接続の確立

リモート実行に使用される SSH キーは Capsule のインストール時に自動的に作成され、設定は /etc/foreman-proxy/settings.d/remote_execution_ssh.yml ファイルにあります。設定には以下のオプションが含まれます。

ssh_identity_file
SSH キーをロードするファイルです。デフォルトでは /usr/share/foreman-proxy/.ssh/id_rsa_foreman_proxy に設定されています。
local_working_dir
リモート実行に必要なスクリプトを実行するために、Satellite または Capsule で使用されるディレクトリーです。デフォルトでは /var/tmp に設定されています。
remote_working_dir
リモート実行ジョブを実行するために使用されるクライアントシステムのディレクトリーです。デフォルトでは、/var/tmp に設定されています。
注記

クライアントシステムで noexec/var/ ボリュームまたはファイルシステムに設定されている場合は、 remote_working_dir を変更します。変更しないとスクリプトを実行できず、リモート実行ジョブが失敗します。

代替ディレクトリーの使用が必要な場合は、new_place などの新規ディレクトリーを作成し、デフォルトのディレクトリーから SELinux コンテキストをコピーします。以下は例になります。

# chcon --reference=/var new_place

SELinux ラベルの使用方法は、『SELinux ユーザーおよび管理者のガイド』「SELinux ラベルの維持」を参照してください。

リモート実行のための SSH キーの配布

リモート実行接続の認証に SSH キーを使用するには、Capsule から管理するアタッチ済みのホストに、公開 SSH キーを配信します。ホストで SSH サービスが有効になっており、実行していることを確認します。ポート 22 にアクセスできるように、ネットワークまたはホストベースのファイアウォールを設定します。

Capsule からターゲットホストに公開鍵を配信する方法は 3 つあります。

  • キーを手動で配布するには、Capsule で以下のコマンドを入力します。

    # ssh-copy-id -i ~foreman-proxy/.ssh/id_rsa_foreman_proxy.pub root@target.example.com

    ここで、target.example.com はターゲットホストのホスト名です。管理する各ターゲットホストに対して、これを繰り返し実行します。

    ターゲットホストにキーがコピーされたことを確認するには、Capsule で以下のコマンドを入力します。

    # ssh -i ~foreman-proxy/.ssh/id_rsa_foreman_proxy root@target.example.com
  • Satellite API を使用して公開鍵を Capsule から直接ダウンロードするには、それぞれのターゲットホストに対して以下のコマンドを入力します。

    # curl https://capsule.example.com:9090/ssh/pubkey >> ~/.ssh/authorized_keys

    ここでは、capsule.example.com はホストをアタッチする Capsule のホスト名です。

  • 公開鍵を新規にプロビジョニングされたホストに組み込むには、以下の行を含めるように Kickstart default finish テンプレートなどを変更します。

    <%= snippet 'remote_execution_ssh_keys' %>

5.2. リモート実行に Kerberos 認証の設定

Satellite 6.5 以降、Kerberos 認証を使用して、Satellite ホストでリモート実行に SSH 接続を確立できます。

前提条件

Red Hat Satellite でリモート実行に Kerberos 認証情報を使用する前に、ID 管理に Kerberos サーバーを設定し、以下の前提条件を完了していることを確認します。

  • Kerberos サーバーの Satellite Server の登録
  • Kerberos サーバーの Satellite ターゲットホストの登録
  • リモート実行用に Kerberos ユーザーアカウントの設定および初期化
  • Satellite の foreman-proxy ユーザーに、チケットを付与する有効な Kerberos チケットがあることを確認

ホストでリモート実行に Kerberos 認証情報を使用するように Satellite を設定するには、以下の手順を完了します。

  1. Red Hat Bugzilla 1541481 が解決するまで、tfm-rubygem-net-ssh-krb パッケージをインストールする前に、一時的に SELinux を permissive に設定する必要があります。

    # setenforce 0
  2. tfm-rubygem-net-ssh-krb パッケージをインストールするには、以下のコマンドを入力します。

    # yum install tfm-rubygem-net-ssh-krb
  3. リモート実行に Kerberos 認証をインストールおよび有効にするには、以下のコマンドを入力します。

    # satellite-installer --scenario satellite \
     --foreman-proxy-plugin-remote-execution-ssh-ssh-kerberos-auth true
  4. SELinux を enforcing に設定します。

    # setenforce 1
  5. リモート実行のデフォルトユーザーを編集するには、Satellite Web UI で 管理 > 設定 に移動して、リモート実行 タブをクリックします。remote_execution_ssh_user 行で 2 番目のコラムを編集し、Kerberos アカウントのユーザー名を追加します。
  6. remote_execution_effective_user に移動し、2 番目のコラムを編集して、Kerberos アカウントのユーザー名を追加します。

Kerberos 認証が使用できることを確認するには、ホストでリモートジョブを実行します。

5.3. リモートジョブの設定および実行

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

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

Satellite は、ジョブ実行に使用可能なデフォルトのジョブテンプレートを提供します。ジョブテンプレートの一覧を表示するには、ホスト > ジョブテンプレート に移動します。変更せずにテンプレートを使用する場合には、「ジョブの実行」に進んでください。

デフォルトテンプレートは独自のテンプレートを作成するためのベースとして使用することもできます。デフォルトのジョブテンプレートは、編集できないようにロックされているので、テンプレートのクローンを作成して、このクローンを編集してください。

  1. テンプレートのクローンを作成するには、アクション コラムで、クローン を選択します。
  2. クローンに一意名を指定して、送信 をクリックして変更を保存します。

ジョブテンプレートは、Embedded Ruby (ERB) 構文を使用します。テンプレートの記述に関する詳細は、付録A テンプレート作成の参照を参照してください。

Ansible の考慮事項

Ansible ジョブテンプレートを作成するには、以下の手順を使用し、ERB 構文ではなく YAML 構文を使用します。テンプレートは --- で開始し、1 行目に - hosts: all を追加する必要があります。Ansible playbook YAML ファイルをジョブテンプレートの本文に埋め込みます。また、ERB 構文を追加して、YAML Ansible テンプレートをカスタマイズすることも可能です。Satellite に Ansible Playbook をインポートすることも可能です。詳細情報は、『コンテンツ管理ガイド』「git とのテンプレートの同期」を参照してください。

パラメーター変数

ランタイム時に、ジョブテンプレートはホストに定義するパラメーター変数を受け入れることができます。ホストの編集ページの パラメーター タブでのみ表示できるパラメーターは、ジョブテンプレートの入力パラメーターとして使用できる点に注意してください。ランタイム時に Ansible ジョブテンプレートでパラメーター変数を受け入れない場合には、Satellite Web UI で 管理 > 設定 に移動して、Ansible タブをクリックします。トップレベルの Ansible 変数 の列で、Value パラメーターを No に変更します。

ジョブテンプレートのクローンを作成する方法:

  1. ホスト > ジョブテンプレート に移動します。
  2. 新規ジョブテンプレート をクリックします。
  3. テンプレート タブをクリックして、名前 フィールドに、ジョブテンプレートの一意名を入力します。
  4. デフォルト を選択して、テンプレートを全組織およびロケーションで利用できるようにします。
  5. テンプレートエディターで直接テンプレートを作成するか、インポート をクリックしてテキストファイルからテンプレートをアップロードします。
  6. オプション: 監査コメント フィールドで、変更に関する情報を追加します。
  7. ジョブ タブをクリックして、ジョブカテゴリー フィールドに、独自のカテゴリーを入力するか、表5.1「デフォルトのジョブテンプレートカテゴリー」に記載のデフォルトカテゴリーから選択します。
  8. オプション: Description Format フィールドで、Install package %{package_name} など、記述形式を入力します。また、テンプレートでは %{template_name} および %{job_category} も使用できます。
  9. プロバイダータイプ メニューから、Shell スクリプトに SSH を、Ansible タスクまたは Playbook にAnsible を選択します。
  10. オプション: Timeout to kill フィールドで、ジョブが完了しない場合に、ジョブを中断するタイムアウトの値を入力します。
  11. オプション: 入力を追加 をクリックし、入力パラメーターを定義します。ジョブの実行時にパラメーターを要求し、テンプレートに定義する必要はありません。各種サンプルについては、ヘルプ タブを参照してください。
  12. オプション: 外部入力セット をクリックして、このジョブの他のテンプレートを追加します。
  13. オプション: 実効ユーザー エリアで、コマンドでデフォルトの remote_execution_effective_user 設定を使用できない場合に、ユーザーを設定します。
  14. オプション: このテンプレートをスニペットとして他のテンプレートを追加する場合には、タイプ タブをクリックして、スニペット を選択します。
  15. ロケーション タブをクリックして、テンプレートを使用するロケーションを追加します。
  16. 組織 タブをクリックして、テンプレートを使用する組織を追加します。
  17. 送信 をクリックして変更を保存します。

テンプレート構文に他のテンプレートを追加して、詳細なテンプレートを作成できます。詳細は「詳細テンプレートの作成」を参照してください。たとえば、パワー関連のアクションを実行するには詳細なテンプレートが必要になります。Power Action - SSH Default テンプレートをカスタムテンプレートに組み込む方法は例5.4「テンプレートにパワー操作を組み込む」を参照してください。

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

ジョブテンプレートのカテゴリー説明

Packages

パッケージ関連のアクションを実行するためのテンプレートです。デフォルトで、インストール、更新、および削除アクションが含まれています。

Puppet

ターゲットホストで Puppet ホストを実行するためのテンプレートです。

Power

パワー関連のアクションを実行するためのテンプレートです。デフォルトで、再起動およびシャットダウンアクションが含まれます。

Commands

リモートホストでカスタムコマンドを実行するためのテンプレートです。

Services

サービス関連のアクションを実行するためのテンプレートです。デフォルトで、開始、停止、再起動、およびステータスアクションが含まれます。

Katello

コンテンツ関連のアクションを実行するためのテンプレートです。これらのテンプレートは主として Satellite Web UI の各種の場所で使用されます (たとえば、コンテンツホストの一括操作のための UI など)が、エラータのインストールなどの各種操作を実行するために個別に使用できます。

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

この例は、Run Command - restorecon というテンプレートを作成する方法を示します。これは、ターゲットホストで選択したディレクトリー内の全ファイルに対して、デフォルトの SELinux コンテキストを復元します。

  1. ホスト > ジョブテンプレート に移動して、新規ジョブテンプレート をクリックします。
  2. 名前 フィールドに Run Command - restorecon と入力します。デフォルト を選択して、テンプレートをすべての組織で利用できるようにします。以下のテキストをテンプレートエディターに追加します。

    restorecon -RvF <%= input("directory") %>

    <%= input("directory") %> の文字列は、ジョブの呼び出し時にユーザー定義のディレクトリーに置き換えられます。

  3. ジョブ タブで、ジョブカテゴリーCommands に設定します。
  4. 入力を追加 をクリックして、ジョブのカスタマイズを可能にします。名前 フィールドに directory と入力します。入力する名前は、テンプレートエディターで指定した値と一致している必要があります。
  5. 必須 をクリックし、ユーザーがパラメーターを指定しなければコマンドが実行しないようにします。
  6. 入力タイプ ドロップダウンリストから ユーザー入力 を選択します。ジョブの呼び出し中に表示する説明を入力します (例: Target directory for restorecon)。
  7. 送信 をクリックします。

このテンプレートに基づいてジョブを実行する方法は、例5.2「複数のホストでの restorecon テンプレートの実行」を参照してください。

5.3.2. ジョブの実行

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

リモートジョブを実行する方法:

  1. ホスト > すべてのホスト に移動し、ジョブのターゲットホストを選択します。検索フィールドを使用してホストの一覧を絞り込むことができます。
  2. アクションの選択 メニューから リモートジョブのスケジュール を選択します。
  3. ジョブ呼び出し ページで、主なジョブ設定を定義します。

    1. 使用する ジョブカテゴリー およびジョブテンプレートを選択します。
    2. オプションとして、ブックマーク の一覧に保存された検索文字列を選択し、ターゲットホストを指定します。
    3. オプションとして、検索クエリー を入力し、ターゲットホストの範囲をさらに狭めることができます。解決 行には、クエリーの影響を受けるホストの数が表示されます。更新ボタンを押して、クエリーを変更した後の数を再計算します。プレビューアイコンにはターゲットホストが一覧表示されます。
    4. 残りの設定は、選択したジョブテンプレートによって異なります。カスタムパラメーターをテンプレートに追加する方法は「ジョブテンプレートのクローンを作成する方法:」を参照してください。
  4. 詳細フィールドを表示 をクリックすると、ジョブの詳細設定が表示されます。一部の詳細設定はジョブテンプレートによって異なります。以下は一般的な設定です。

    • 実効ユーザー: ジョブを実行するためにユーザーを定義します。デフォルトは SSH ユーザーです。
    • 同時実行レベル 1 度に実行するジョブの最大数を定義します。これにより、大規模ホストでジョブを実行する際に、システムのリソースに負荷が過剰にかかるのを防ぐことができます。
    • タイムスパン は、ジョブが終了していない場合に、強制終了するまでの間隔 (秒単位) で定義します。以前のタスクが終了するまで時間がかかりすぎているなど、定義した間隔で起動できなかったタスクはキャンセルされます。
    • クエリーのタイプ: 検索クエリーが評価されるタイミングを定義します。これは、スケジュールされているタスクに対してクエリーが常に最新の状態に保つのに役立ちます。

      同時実行レベル 設定および タイムスパン 設定により、お使いのインフラストラクチャーハードウェアおよびニーズに合わせてジョブ実行を調整します。

  5. ジョブをすぐに実行する場合は、スケジュール今すぐ実効 に設定されていることを確認します。さらに 1 回限りの将来のジョブを定義したり、再帰的に実行されるジョブを設定することもできます。再帰的に実行されるジョブについては、開始日と終了日、実行の回数と頻度を定義できます。また cron 構文を使用して繰り返しを定義することもできます。詳細は Red Hat Enterprise Linux 7 の『システム管理者のガイド』「システムタスクの自動化」セクションを参照してください。
  6. 送信 をクリックします。これにより ジョブの概要 ページが表示され、ジョブの完了時にはジョブのステータスも表示されます。

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

以下の例では、例5.1「restorecon テンプレートの作成」 で作成されたテンプレートに基づいて、複数のホストでジョブを実行する方法を示します。このジョブは、/home/ ディレクトリーの下にあるすべてのファイルで SELinux コンテキストを復元します。

  1. ホスト > すべてのホスト に移動し、ターゲットホストを選択します。アクションの選択 ドロップダウンメニューで、リモートジョブのスケジュール を選択します。
  2. ジョブ呼び出し ページで、Commands ジョブカテゴリーを選択し、Run Command - restorecon ジョブテンプレートを選択します。
  3. directory フィールドに、/home と入力します。
  4. スケジュール今すぐ実行 に設定します。
  5. 送信 をクリックします。ジョブ呼び出し ページに移動します。ここでジョブ実行のステータスを監視できます。

5.3.3. ジョブの監視

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

ジョブを監視する方法:

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

5.3.4. 詳細テンプレートの作成

ジョブテンプレートの作成時に、テンプレートエディターフィールドで既存のテンプレートを追加できます。こうすることで、テンプレートを組み合わせたり、一般的なテンプレートからより具体的なテンプレートを作成したりできます。

以下のテンプレートを使用してデフォルトのテンプレートを組み合わせ、Red Hat Enterprise Linux システムに httpd サービスをインストールして起動できます。

<%= 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") %>

上記のテンプレートを使用して、レンダリングされたテンプレートからパラメーター定義をインポートする必要があります。これを行うには、ジョブ タブに移動し、外部入力セットを追加 をクリックし、ターゲットテンプレート ドロップダウンリストで、レンダリングされたテンプレートを選択します。すべてのパラメーターをインポートするか、コンマ区切りの一覧を指定することができます。

例5.3 restorecon テンプレートのレンダリング

この例は、例5.1「restorecon テンプレートの作成」で作成される Run command - restorecon テンプレートから派生するテンプレートを作成する方法を示しています。このテンプレートでは、ジョブ実行時にユーザーが入力する必要はなく、ターゲットホストの /home/ ディレクトリー下のすべてのファイルで SELinux コンテキストを復元します。

「ジョブテンプレートのセットアップ」に従って新規テンプレートを作成し、テンプレートエディター画面で以下の文字列を指定します。

<%= render_template("Run Command - restorecon", :directory => "/home") %>

例5.4 テンプレートにパワー操作を組み込む

以下の例では、再起動などのパワー操作を実行するためのジョブテンプレートをセットアップする方法を示します。この手順は、Satellite が再起動時に切断の例外をエラーとして解釈するのを防ぐため、ジョブのリモート実行が正常に機能します。

「ジョブテンプレートのセットアップ」に従って新規テンプレートを作成し、テンプレートエディター画面で以下の文字列を指定します。

<%= render_template("Power Action - SSH Default", :action => "restart") %>

5.4. グローバル設定

Satellite のリモート実行機能は、その動作を設定するために使用できる数多くのグローバル設定を提供しています。グローバル設定の一覧は表5.2「リモート実行用のグローバル設定」で紹介されています。これらの設定を確認し、更新するには、管理 > 設定 に移動して、リモート実行 タブをクリックします。

表5.2 リモート実行用のグローバル設定

パラメーター名説明

デフォルトのSSH キーのパスフレーズ

デフォルトのキーパスフレーズを定義して、SSH で使用します。これは、remote_execution_ssh_key_passphrase パラメーターを設定して、ホストごとに上書きできます。

グローバルカプセルの有効化

有効な場合には、ホストでリモート実行が設定されている Capsule を検索します。これはホストにサブネットが設定されていない場合や、サブネットで Capsule のリモート実行が有効化されていない場合に役立ちます。

Capsule なしのフォールバック

この機能が有効で、リモート実行機能のある Capsule がホストで設定されていない場合には、リモート実行により、直接コマンドの実行が試行されます。

Capsule へのフォールバック

この機能が有効な場合には、ホストに割り当てられた Capsule 以外で、リモート実行の Capsule を検索します。ロケーションまたは組織が設定されている場合には、ホストの組織またはロケーションに限定して検索が行われます。

実効ユーザーの設定に使用する方法

ターゲットホストで実効ユーザーの設定に使用する方法を定義します (sudodzdosu)。

実効ユーザー

ジョブのデフォルトの実効ユーザーを定義します。ジョブの実行時には、プロセスの実効ユーザーが随時変更されます。これは、ジョブテンプレートおよびジョブの呼び出しごとに上書きできます。

IP での接続

有効な場合には、FQDN ではなく、ホストインタフェースの IP アドレスが優先されます。DNS が FQDN を正しく解決しない場合に便利です。これは、remote_execution_connect_by_ip パラメーターを設定することでホストごとに上書きできます。

SSH ユーザー

SSH を使用して Capsule がターゲットに接続するときに使用するデフォルトユーザーを定義します。これは、remote_execution_ssh_user パラメーターを設定することでホストごとに上書きできます。ホスト、ホストグループ、オペレーティングシステム、ドメイン、ロケーション、または組織別にこれを設定できます。実効ユーザーではないユーザーを指定できます。

Sudo パスワード

sudo パスワードを定義します。

デフォルトの SSH パスワード

デフォルトのパスワードを定義して、SSH で使用します。これは、remote_execution_ssh_password パラメーターを設定して、ホストごとに上書きできます。

SSH ポート

SSH 通信に使用するポートを定義します。デフォルトのポートは 22 です。これは、remote_execution_ssh_port パラメーターを設定して、ホストごとに上書きできます。

ジョブテンプレートの同期

有効な場合には、ジョブテンプレートは、データベースのシード処理時に、ディスクから同期されます。

作業ディレクトリの消去

有効な場合には、作業ディレクトリーはタスクの完了後に削除されます。これは、remote_execution_cleanup_working_dirs パラメーターを設定してホストごとに上書きできます。

ワーカーのプールサイズ

リモート実行ジョブの実行を処理するプール内のワーカーサイズを定義します。dynflowd/foreman-tasks サービスの再起動が必要です。

重要

Web UI でこれらのパラメーターを変更します。これは、/etc/foreman/settings.yaml ファイルに手動で加えた変更は、次回の satellite-installer 実行時に上書きされます。または、コンソールから foreman-rake config コマンドを使用します。

5.4.1. リモート実行用の Capsule の選択

リモート実行では、ホストに指定されたジョブを Capsule Server が実行することが必要になります。デフォルトで、リモート実行プロバイダー 機能が有効になったホストの組織およびロケーション内の Capsule は、これらのジョブを実行できると見なされています。remote_execution_global_proxy 変数を false に設定すると、この動作を無効にできます。これは、ネットワークの分離のためにすべての Capsule を使用できない場合など、より複雑な環境で必要になる場合があります。この設定では、Capsule のプールが各サブネットに割り当てられ、そのサブネット間でジョブの負荷が分散されます。

また、remote_execution_fallback_proxy 変数を true に設定してフォールバックモードを有効にすることもできます。この設定では、Capsule でもリモート実行が設定されている場合に、リモート実行に Puppet マスターなどのホストに関連付けられた Capsule が使用されます。

5.5. リモート実行用のパーミッションの委任

ターゲットにするホストを含め、インフラストラクチャー内で実行するジョブとそれを実行するユーザーを制御できます。リモート実行機能は 2 つの組み込みロールを提供します。

  • Remote Execution Manager (リモート実行マネージャー): このロールは、すべてのリモート実行機能および機能性へのアクセスを許可します。
  • Remote Execution User (リモート実行ユーザー): このロールは、ジョブの実行のみを許可します。ジョブテンプレートを変更するパーミッションは提供されません。

Remote Execution User (リモート実行ユーザー) ロールのクローンを作成し、そのフィルターをカスタマイズして詳細度を高めることができます。view_job_templates パーミッションでフィルターを調整する場合、ユーザーは一致するジョブテンプレートに基づいてジョブを確認し、トリガーすることのみが可能です。view_hosts パーミッションおよび view_smart_proxies パーミッションを使用すると、ロールに表示されるホストまたは Capsule を制限できます。

execute_template_invocation パーミッションはジョブの実行が開始する直前に確認される特殊なパーミッションです。このパーミッションは、特定のホストで実行できるジョブテンプレートを定義します。これにより、パーミッションの指定時に詳細度をさらに高めることができます。ロールおよびパーミッションの使用については、『Red Hat Satellite の管理』「ロールの作成および管理」を参照してください。

以下の例は、execute_template_invocation パーミッションのフィルターを示しています。

name = Reboot and host.name = staging.example.com
name = Reboot and host.name ~ *.staging.example.com
name = "Restart service" and host_group.name = webservers

上記の例の最初の行により、選択したホストで Reboot テンプレートを適用できます。2 番目の行は、.staging.example.com で終わる名前を持つホストのプールを定義します。3 番目の行はテンプレートをホストグループにバインドします。

注記

ユーザーに割り当てるパーミッションは時間の経過と共に変更されます。ユーザーに将来実行するスケジュールされたジョブがあり、パーミッションが変更された場合、パーミッションがジョブ実行の直前にチェックされるため、これによる実行の失敗が生じる可能性があります。