SSH Push接続メソッド
SSH Push (ssh-push
)は、SaltクライアントがSUSE Managerサーバに直接アクセスできない環境で使用されます。この環境では、DMZと呼ばれるファイアウォール保護ゾーンにクライアントはあります。内部ネットワークとの接続を開くことを認可されているシステム(SUSE Managerサーバなど)はDMZ内にはありません。
SSH Pushは、デーモンエージェントをクライアントにインストールできない場合にも使用されます。
SSH Pushメソッドには重大な制限があります。SSH Pushは適切にスケールせず、標準のSaltメソッド( |
サーバは、SSH Pushを使用して、定期的にクライアントに接続し、チェックインし、スケジュールされたアクションおよびイベントを実行します。
プロビジョニングモデルを使用したシステムの再インストールは、SSH Pushで管理されているクライアントでは現在サポートされていません。 |
次のイメージは、SSH Pushプロセスのパスを示しています。Taskomatic
ブロックの左側のアイテムはすべて、SUSE Managerクライアントで実行されるプロセスを表します。
SSH Pushを使用するには、SSHデーモンがクライアントで動作していて、SUSE Managerサーバで動作しているsalt-api
デーモンによって接続できる必要があります。また、必須のPythonバージョンをSalt Bundleとともにクライアントシステムに配備する必要があります。
次の登録手順を開始する前に、SSH Push接続メソッドが設定された状態でアクティベーションキーを定義します。このメソッドでは、HTTPSでのサーバとの直接接続が存在する必要があります。
Web UIまたはAPIを使用して、これらのクライアントをSUSE Managerサーバに登録する必要があります。次のプロシージャまたは例を参照してください。
-
SUSE ManagerのWeb UIで、
に移動し、該当するフィールドに入力します。 -
SSH Push接続メソッドが設定された状態でアクティベーションキーを選択します。アクティベーションキーの詳細については、アクティベーションキーを参照してください。
-
[
Manage System Completely via SSH
](SSHでシステムを完全に管理する)チェックボックスにチェックを付けます。 -
ブートストラップをクリックして、登録を開始します。
-
に移動して、システムが正しく登録されたことを確認します。
APIを使用して、使用する接続メソッドを管理できます。 このPythonコードの例では、接続メソッドがssh-push
に設定されます。
有効な値は次のとおりです。
-
default
(pull) -
ssh-push
-
ssh-push-tunnel
client = xmlrpclib.Server(SUMA_HOST + "/rpc/api", verbose=0) key = client.auth.login(SUMA_LOGIN, SUMA_PASSWORD) client.system.setDetails(key, 1000012345, {'contact_method' : 'ssh-push'})
1. 使用可能なパラメータ
SSH Pushを設定している場合、ホスト、アクティベーションキー、パスワードなど、システムを登録するときに使用するパラメータを変更できます。このパスワードはブートストラップでのみ使用し、どこにも保存されません。今後のSSHセッションではすべて、キー/証明書のペアで認可されます。これらのパラメータは
で設定されます。rootとしてではなく非特権ユーザとしてシステムにアクセスするためのsudoユーザなど、システム全体で使用される永続パラメータを設定することもできます。
-
最新の
spacewalk-taskomatic
パッケージおよびspacewalk-certs-tools
パッケージがSUSE Managerサーバにインストールされていることを確認してください。 -
それぞれのクライアントシステムで、適切な非特権ユーザを作成します。
-
各クライアントシステムで、
sudoers
ファイルを編集します。sudo visudo
-
この行を
sudoers
ファイルの末尾に追加してsudo
アクセス権をユーザに付与します。 Web UIでクライアントをブートストラップしているユーザの名前で<user>
を置き換えます。<user> ALL=NOPASSWD: /usr/bin/python3, /var/tmp/venv-salt-minion/bin/python
このプロシージャによりrootアクセス権が付与されます。クライアントの登録に必要なパスワードは不要です。 クライアントは正常にインストールされると、root特権で実行されるため、アクセス権は不要です。 クライアントを正しくインストールした後、
sudoers
ファイルからこの行を削除することをお勧めします。 -
SUSE Managerサーバの
/etc/rhn/rhn.conf
設定ファイルで、次の行を追加または修正して、非特権ユーザ名を含めます。ssh_push_sudo_user = <user>
この設定パラメータを変更した後、salt-secrets-config.service
、tomcat.service
、taskomatic.service
などのサービスを再起動する必要があります。必要なサービスすべてを対象とするには、SUSE Managerサーバをrootとして再起動することをお勧めします。
mgradm restart
2. アクションの実行
SSH Push機能は、taskomaticを使用し、salt-ssh
を使用してスケジュールされたアクションを実行します。taskomaticジョブは、スケジュールされたアクションを定期的に確認して実行します。SSH Push機能は、スケジュールされたアクションに基づいて、完全なsalt-ssh
コールを実行します。
デフォルトでは、20個のSalt SSHアクションを同時に実行できます。 同時実行できるアクションの個数を増やすことができます。そのためには、次の行を設定ファイルに追加し、parallel_threads
の値を調整します。 問題の発生を回避するために、同時実行アクション数を低い値に保つことをお勧めします。
taskomatic.sshminion_action_executor.parallel_threads = <number> org.quartz.threadPool.threadCount = <value of parallel_threads + 20>
1つのクライアントで同時実行できるアクションの個数とtaskomaticで使用されるワーカスレッドの合計数が調整されます。 複数のクライアントでアクションを実行する必要がある場合、アクションは常に各クライアントで順次実行されます。
クライアントがプロキシ経由で接続されている場合、プロキシのMaxSessions
設定を調整する必要があります。 この場合、平行接続数を総クライアント数の3倍に設定します。
3. 今後の機能
SSH Pushでサポートされていない機能があります。これらの機能はSalt SSHクライアント上では動作しません。
-
OpenSCAPの監査
-
ビーコン。次の結果になります。
-
zypper
を使用してシステムのパッケージをインストールしても、パッケージ更新が呼び出されません。 -
仮想ホストシステムがSalt SSHベースの場合、仮想ホスト関数(たとえば、ゲストへのホスト)が動作しません。
-
3.1. 詳細情報
-
Salt SSH全般については、Salt SSHおよびhttps://docs.saltstack.com/en/latest/topics/ssh/を参照してください。
-
SSHキーのローテーションについては、specialized-guides:salt/salt-ssh.adoc#salt.ssh.key_rotationを参照してください。