第12章 Satellite ホストでのジョブの実行
Red Hat Satellite は、ホストで任意のコマンドを実行する機能をサポートします。これは リモート実行 と呼ばれます。リモート実行は、Satellite Server でデフォルトで有効になっていますが、必要な全 Capsule Server で手動で有効にする必要があります。通信は Capsule Server 経由で行われるので、Satellite Server にはターゲットホストへの直接のアクセスが不要で、スケーリングしてホストの数を制御できます。リモート実行は、SSH サービスを使用します。これは、ターゲットホストで有効化され、実行されている必要があります。Capsule がターゲットホストのポート 22 にアクセスできることを確認します。
コマンドは、プロビジョニングテンプレートやパーティションテーブルと同様の方法でカスタマイズできます。デフォルトでいくつかのジョブテンプレートが含まれており、コマンドの実行に使用できます。「ジョブテンプレートのセットアップ」を参照してください。
注記
Capsule Server のベースシステムは Satellite Server の内部 Capsule のクライアントであるため、このセクションは Capsule Server を含む Satellite Server に接続されるホストのすべてのタイプに適用されます。
複数のホストでコマンドを一度に実行でき、デプロイメントに合わせてコマンドで変数を使用できます。変数値は、ホストファクト、スマートクラスパラメーター、スマート変数、またはホストパラメーターで埋めることができます。さらに、コマンドの実行時にテンプレートのカスタム値を指定できます。「ジョブの実行」を参照してください。
以下のリストは、リモート実行を使用する方法のいくつかの例を示しています。
- ソフトウェアパッケージのインストール、更新、または削除
- 設定管理エージェントのブートストラップ
- Puppet、Salt または Chef 実行のトリガー
デフォルトでは、各 Capsule はリモート実行機能が無効にされた状態でインストールされます。Capsule Server でリモート実行を使用するには、これを有効にする必要があります。有効にするには、以下のコマンドを実行します。
リモート実行が Capsule Server で実行されていることを確認するには、Web UI で に移動します。これで、SSH が実行されている Features 列に Capsule Server が一覧表示されます。
# satellite-installer --scenario capsule --enable-foreman-proxy-plugin-remote-execution-ssh
デフォルトでは、Satellite Server は Katello Agent ではなくリモート実行を使用するように設定されています。必要に応じて、まずカスタムジョブテンプレートを作成し、+ して、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に設定されます。
注記
クライアントシステムの
/var/ ボリュームまたはファイルシステムに noexec が設定されている場合は、remote_working_dir を変更します。そうしないと、スクリプトを実行できないためリモート実行ジョブが失敗します。
代替ディレクトリーを使用する必要がある場合は、新しいディレクトリー(例: new_place )を作成し、デフォルトのディレクトリーから SELinux コンテキストをコピーします。以下に例を示します。
SELinux ラベルの 『使用方法は、SELinux ユーザーおよび管理者のガイドの SELinux ラベルの維持』 セクションを参照し てください。
# chcon --reference=/var new_place
リモート実行のための SSH キーの配布
リモート実行を有効にするには、公開 SSH 鍵を Capsule から管理するホストに配布します。ホストで SSH サービスが有効化され、実行していることを確認します。ポート 22 にアクセスできるように、ネットワークまたはホストベースのファイアウォールを設定し、ポート 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://myproxy.example.com:9090/ssh/pubkey >> ~/.ssh/authorized_keysここで、myproxy.example.com は Capsule のホスト名を表します。 - 新しくプロビジョニングされたホストに公開鍵を含めるには、次の行を含めるように、Kickstart default finish テンプレートなどを変更します。
<%= snippet 'remote_execution_ssh_keys' %>