SSH Push接続メソッド

SSH Push (ssh-push)は、SaltクライアントがSUSE Managerサーバに直接アクセスできない環境で使用されます。この環境では、DMZと呼ばれるファイアウォール保護ゾーンにクライアントはあります。内部ネットワークとの接続を開くことを認可されているシステム(SUSE Managerサーバなど)はDMZ内にはありません。

SSH Pushは、デーモンエージェントをクライアントにインストールできない場合にも使用されます。

SSH Pushメソッドには重大な制限があります。SSH Pushは適切にスケールせず、標準のSaltメソッド(default)よりも多くのサーバリソースとネットワーク帯域幅を消費します。Push SSHメソッドは、大規模なセットアップ(1000クライアント以上)では一切サポートされません。

サーバは、SSH Pushを使用して、定期的にクライアントに接続し、チェックインし、スケジュールされたアクションおよびイベントを実行します。

プロビジョニングモデルを使用したシステムの再インストールは、SSH Pushで管理されているクライアントでは現在サポートされていません。

次のイメージは、SSH Pushプロセスのパスを示しています。Taskomaticブロックの左側のアイテムはすべて、SUSE Managerクライアントで実行されるプロセスを表します。

salt ssh contact taigon

SSH Pushを使用するには、SSHデーモンがクライアントで動作していて、SUSE Managerサーバで動作しているsalt-apiデーモンによって接続できる必要があります。また、必須のPythonバージョンをSalt Bundleとともにクライアントシステムに配備する必要があります。

次の登録手順を開始する前に、SSH Push接続メソッドが設定された状態でアクティベーションキーを定義します。このメソッドでは、HTTPSでのサーバとの直接接続が存在する必要があります。

Web UIまたはAPIを使用して、これらのクライアントをSUSE Managerサーバに登録する必要があります。次のプロシージャまたは例を参照してください。

プロシージャ: SSH Pushを使用したクライアントの登録
  1. SUSE ManagerのWeb UIで、システム  ブートストラップに移動し、該当するフィールドに入力します。

  2. SSH Push接続メソッドが設定された状態でアクティベーションキーを選択します。アクティベーションキーの詳細については、アクティベーションキーを参照してください。

  3. Manage System Completely via SSH](SSHでシステムを完全に管理する)チェックボックスにチェックを付けます。

  4. ブートストラップをクリックして、登録を開始します。

  5. システム  概要に移動して、システムが正しく登録されたことを確認します。

例: SSHでのプッシュへのAPIアクセス

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ユーザなど、システム全体で使用される永続パラメータを設定することもできます。

プロシージャ: 非特権SSHアクセスの設定
  1. 最新のspacewalk-taskomaticパッケージおよびspacewalk-certs-toolsパッケージがSUSE Managerサーバにインストールされていることを確認してください。

  2. それぞれのクライアントシステムで、適切な非特権ユーザを作成します。

  3. 各クライアントシステムで、sudoersファイルを編集します。

    sudo visudo
  4. この行をsudoersファイルの末尾に追加してsudoアクセス権をユーザに付与します。 Web UIでクライアントをブートストラップしているユーザの名前で<user>を置き換えます。

    <user>  ALL=NOPASSWD: /usr/bin/python3, /var/tmp/venv-salt-minion/bin/python

    このプロシージャによりrootアクセス権が付与されます。クライアントの登録に必要なパスワードは不要です。 クライアントは正常にインストールされると、root特権で実行されるため、アクセス権は不要です。 クライアントを正しくインストールした後、sudoersファイルからこの行を削除することをお勧めします。

  5. SUSE Managerサーバの/etc/rhn/rhn.conf設定ファイルで、次の行を追加または修正して、非特権ユーザ名を含めます。

    ssh_push_sudo_user = <user>

この設定パラメータを変更した後、salt-secrets-config.servicetomcat.servicetaskomatic.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. 詳細情報