Red Hat Training

A Red Hat training course is available for Red Hat Satellite

第12章 Satellite ホストでのジョブの実行

Red Hat Satellite は任意のコマンドをホストで実行することをサポートします。これは リモート実行 と呼ばれています。リモート実行はデフォルトで Satellite Server で有効にされますが、必要なすべての Capsule Server では手動で有効にする必要があります。通信は Capsule Server 経由で行われます。これは、Satellite Server にはターゲットホストへの直接のアクセスが不要であり、多数のホストを管理するために拡張可能であることを意味します。コマンドはプロビジョニングテンプレートやパーティションテーブルと同様の方法でカスタマイズできます。いくつかのジョブテンプレートがデフォルトで含まれおり、これらを使用してコマンドを実行できます。「ジョブテンプレートのセットアップ」 を参照してください。

注記

Capsule Server のベースシステムは Satellite Server の内部 Capsule のクライアントであるため、このセクションは Capsule Server を含む Satellite Server に接続されるホストのすべてのタイプに適用されます。
コマンドは 1 度に複数のホストに対して実行でき、デプロイメントに適した変数をコマンドで使用できます。変数の値はホストのファクト、Smart Class パラメーター、Smart 変数またはホストパラメーターで設定できます。さらに、コマンドの実行時にテンプレートのカスタム値を指定することができます。「ジョブの実行」 を参照してください。
以下の一覧は、リモート実行を使用する方法のいくつかの例を示しています。
  • ソフトウェアパッケージのインストール、更新、または削除
  • 設定管理エージェントのブートストラップ
  • Puppet、Salt または Chef 実行のトリガー
デフォルトでは、それぞれの Capsule はリモート実行機能が無効にされた状態でインストールされます。Capsule Server でリモート実行を使用するには、これを有効にする必要があります。有効にするには、以下のコマンドを実行します。
# satellite-installer --scenario capsule --enable-foreman-proxy-plugin-remote-execution-ssh
リモート実行が Capsule Server で実行されていることを確認するには、Web UI で インフラストラクチャーCapsules (スマートプロキシー) に移動します。Capsule Server は、SSH が実行する 機能 列に一覧表示されるはずです。
デフォルトで、Satellite Server は Katello エージェントではなくリモート実行を使用するように設定されています。必要な場合、これらの設定は、まずカスタムジョブテンプレートを作成し、次に Web UI の 管理リモート実行機能 に移動してこれらの新規テンプレートを選択して変更できます。変更するそれぞれのアクションについて、ラベルを選択してから使用するジョブテンプレートを選択します。

12.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 User's and Administrator's Guide』 の Maintaining SELinux Labels セクションを参照してください。

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

リモート実行を有効にするには、公開 SSH キーを Capsule から管理するホストに送信します。Capsule からターゲットホストに公開鍵を送信する方法として 3 つの方法があります。
  • キーを手動で配布するには、Capsule で以下のコマンドを実行します。
    # ssh-copy-id -i ~foreman-proxy/.ssh/id_rsa_foreman_proxy.pub root@target.example.com
    ここで、target.example.com はターゲットホストのホスト名です。管理するターゲットホストのそれぞれについてこれを繰り返し実行します。
  • Satellite API を使用して公開鍵を Capsule から直接ダウンロードするには、それぞれのターゲットホストに対して以下のコマンドを実行します。
    # curl https://myproxy.example.com:9090/ssh/pubkey >> ~/.ssh/authorized_keys
    ここで、myproxy.example.com は Capsule のホスト名を表します。
  • 公開鍵を新規にプロビジョニングされたホストに組み込むには、以下の行を含めるように Kickstart default finish テンプレートなどを変更します。
    <%= snippet 'remote_execution_ssh_keys' %>