Salt Bundle

1. Salt Bundleの概要

Salt Bundleは、Salt Minion、Python 3、必須のPythonモジュール、およびライブラリが含まれている1つのバイナリパッケージです。

Salt BundleはPython 3に付属していて、Saltを実行するためのすべての要件です。したがって、Salt Bundleは、システムソフトウェアとしてクライアントにインストールされているPythonバージョンを使用しません。Salt Bundleは、指定のSaltバージョンの要件を満たさないクライアントにインストールできます。

SUSE Manager Salt Master以外のSalt Masterに接続されているSalt Minionを実行するシステムでSalt Bundleを使用することもできます。

2. Salt Bundleを使用してクライアントをMinionとして登録する

Salt Bundleを使用した登録方法は推奨の登録方法です。このセクションでは、現在の実装の利点と制約について説明します。Salt Bundleは、Salt、Python 3、およびSaltが依存しているPythonモジュールで構成されているvenv-salt-minionとして提供されます。Web UIを使用したブートストラップもSalt Bundleを使用しているため、Web UIを使用したブートストラップはPythonに依存しません。Salt Bundleを使用すると、クライアントがPythonインタープリターまたはモジュールを提供する必要がなくなります。

新しいクライアントをブートストラップする場合、Salt Bundleを使用した登録がデフォルトの方法です。 既存のクライアントをSalt Bundleの方式に切り替えることができます。 切り替える場合、salt-minionパッケージおよびその依存関係はインストールされたままになります。

2.1. Salt Minionを使用したSalt Bundleの使用

Salt Bundleは、SUSE Managerサーバ以外のSalt Masterによって管理されているSalt Minionと同時に使用できます。Salt Bundleが、SUSE ManagerサーバがSalt Bundleの設定ファイルを管理するクライアントにインストールされる場合、salt-minionの設定ファイルは管理されません。詳細については、Salt Bundleの設定を参照してください。

  • SUSE Managerサーバ以外のSalt Masterによって管理されているSalt Minionを使用してクライアントをブートストラップするには、ブートストラップスクリプトを生成するときにmgr-bootstrap --force-bundleを使用するか、またはブートストラップスクリプトでFORCE_VENV_SALT_MINION1に設定することをお勧めします。

  • Web UI mgr_force_venv_salt_miniontrueに設定してブートストラップする場合、pillarをグローバルに指定できます。 詳細については、Salt States and Pillarsを参照してください。

2.2. Salt MinionからSalt Bundleへの切り替え

salt-minionからvenv-salt-minionに切り替えるためにSalt状態util.mgr_switch_to_venv_minionを使用できます。移行プロセスのトラブルを回避するために、venv-salt-minionへの切り替えは2ステップで実行することをお勧めします。

プロシージャ: util.mgr_switch_to_venv_minionを使用して状態をvenv-salt-minionに切り替える
  1. まず、pillarを指定せずにutil.mgr_switch_to_venv_minionを適用します。 venv-salt-minionに切り替わり、設定ファイルなどがコピーされます。 元のsalt-minionの設定およびそのパッケージはクリーンアップされません。

    salt <minion_id> state.apply util.mgr_switch_to_venv_minion

    util.mgr_switch_to_venv_minionを適用し、mgr_purge_non_venv_saltTrueに設定してsalt-minionを削除し、mgr_purge_non_venv_salt_filesTrueに設定してsalt-minionに関するすべてのファイルを削除します。 この2番目の手順によって、最初の手順が処理されたことが保証され、古い設定ファイルおよび古くなったsalt-minionパッケージが削除されます。

    salt <minion_id> state.apply util.mgr_switch_to_venv_minion pillar='{"mgr_purge_non_venv_salt_files": True, "mgr_purge_non_venv_salt": True}'

切り替えの最初の手順をスキップして2番目の手順を実行すると、クライアント側でコマンドを実行するために使用されるsalt-minionを停止する必要があるため、状態適用プロセスは失敗する可能性があります。

他方、Salt Bundleのインストールを回避して代わりにsalt-minionの使用を続けることも可能です。 この場合、次のいずれかのオプションを指定します。

  • --no-bundleオプションを指定してmgr-bootstrapを実行します。

  • 生成されたブートストラップスクリプトでAVOID_VENV_SALT_MINION1に設定します。

  • ブートストラップ状態の場合、mgr_avoid_venv_salt_minion pillarをTrueに設定します。

3. Salt BundleによるSSH Push

Salt Bundleは、クライアントに対してSSH Pushアクションを実行するときにも使用されます。

シェルスクリプトは、Saltコマンドを実行する前にvenv-salt-minionをインストールせずにSalt Bundleをターゲットシステムに配備します。Salt BundleにはSaltのコードベース全体が含まれているため、salt-thinは配備されません。SSH Push (Web UIを使用するブートストラップを含む)は、バンドル内でPython 3インタープリターを使用します。ターゲットシステムには他のPythonインタープリターがインストールされている必要はありません。

Bundleを使用して配備されたPython 3は、クライアントでSSH Pushセッションを処理するために使用されるため、SSH Push (Web UIを使用したブートストラップを含む)は、システムにインストールされているPythonに依存しません。

salt-thinの使用はフォールバック方法として有効にできますが、クライアントにPython 3をインストールする必要があります。この方法は、推奨もサポートもされておらず、開発目的でのみ存在しています。/etc/rhn/rhn.conf設定ファイルでweb.ssh_use_salt_thintrueに設定します。

  • ブートストラップリポジトリは、Web UIを使用してクライアントをブートストラップする前に作成済みである必要があります。SSH Pushは、検出したターゲットオペレーティングシステムに基づいてブートストラップリポジトリから取得されたSalt Bundleを使用しています。詳細については、client-configuration:bootstrap-repository.adoc#_prepare_to_create_a_bootstrap_repositoryを参照してください。

  • SSH Pushは、/var/tmpを使用して、Salt Bundleを配備し、バンドルされたPythonを使用してクライアント上でSaltコマンドを実行しています。したがって、noexecオプションを指定して/var/tmpをマウントしないでください。ブートストラッププロセスがクライアントに到達するためにSSH Pushを使用しているため、/var/tmpnoexecオプションでマウントされたクライアントをWeb UIでブートストラップすることはできません。

4. pipを使用したPythonパッケージによるSalt Bundleの拡張

Salt Bundleにはpipが含まれており、バンドルされているSalt Minionの機能を追加のPythonパッケージで拡張できます。

デフォルトで、salt <minion_id> pip.install <package-name>は、<package_name>で指定されたPythonパッケージを/var/lib/venv-salt-minion/localにインストールします。

必要に応じて、venv-salt-minion.serviceの環境変数VENV_PIP_TARGETを設定することで、パス/var/lib/venv-salt-minion/localを上書きできます。 サービスにはsystemdのドロップイン設定ファイルを使用することをお勧めします。 設定ファイル/etc/systemd/system/venv-salt-minion.service.d/10-pip-destination.confで実行できます。

[Service]
Environment=VENV_PIP_TARGET=/new/path/local/venv-salt-minion/pip

pipを使用してインストールしたPythonパッケージは、Salt Bundleの更新時に変更されません。更新後にこのようなパッケージが使用可能で機能するようにするために、Salt Bundleの更新後に適用されるSaltの状態でパッケージをインストールすることをお勧めします。