SSH Push接続メソッド
SSH Push (ssh-push)は、SaltクライアントがSUSE Managerサーバに直接アクセスできない環境で使用されます。この環境では、DMZと呼ばれるファイアウォール保護ゾーンにクライアントはあります。内部ネットワークとの接続を開くことを認可されているシステム(SUSE Managerサーバなど)はDMZ内にはありません。
SSH Pushは、SUSE Managerからクライアントにのみトンネルを開きますが、リバースチャンネルは直接接続されます。 このようなシナリオは、どこでも機能するわけではありません。 そのため、接続メソッドとしてSSH Push (トンネル使用)も利用できます。 これにより、リバーストンネルも開くため、クライアントからサーバへの接続をブロックする可能性のあるすべてのファイアウォールを介して通信することができます。
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ベースの場合、仮想ホスト関数(たとえば、ゲストへのホスト)が動作しません。 
 
- 
詳細情報:
- 
Salt SSH全般については、Salt SSH and https://docs.saltproject.io/en/latest/topics/ssh/を参照してください。 
- 
SSHキーのローテーションについては、specialized-guides:salt/salt-ssh.adoc#salt.ssh.key_rotationを参照してください。