Salt Bundle
1. Salt Bundleの概要
Salt Bundleは、Salt Minion、Python 3、必須のPythonモジュール、およびライブラリが含まれている単一のバイナリパッケージです。
Salt Bundleは、Python 3とSaltが動作するためのすべての要件と共に出荷されます。したがって、Salt Bundleは、クライアントにインストールされているPythonバージョンをシステムソフトウェアとして使用しません。 Salt Bundleは、特定のSaltバージョンの要件を満たさないクライアントにインストールできます。
Salt MinionがSalt Masterに接続されているSUSE Multi-Linux Manager Salt Master以外のシステムでSalt Bundleを使用することも可能です。
2. Salt Bundleを使用してクライアントをMinionとして登録する
Salt Bundleによる登録方法は、推奨される登録方法です。 このセクションでは、現在の実装の利点と制限について説明します。
Salt Bundleは、`venv-salt-minion`パッケージとして提供されており、Salt、Python 3、およびSaltが依存するPythonモジュールで構成されています。
Web UIを使用したブートストラップもSalt Bundleを使用しているため、Web UIを使用したブートストラップはPythonに依存しません。 Salt Bundleを使用することで、クライアントがPythonインタープリターやモジュールを提供する必要がなくなります。
新しいクライアントをブートストラップする場合、Salt Bundleによる登録がデフォルトの方法です。 既存のクライアントをSalt Bundle方式に切り替えることができます。 切り替えると、`salt-minion`パッケージとその依存関係はインストールされたままになります。
2.1. Salt BundleをSalt Minionと共に使用する
Salt Bundleは、SUSE Multi-Linux Managerサーバー以外のSalt Masterによって管理されるSalt Minionと同時に使用できます。 クライアントにSalt Bundleがインストールされている場合、SUSE Multi-Linux ManagerサーバーはSalt Bundleの設定ファイルを管理し、`salt-minion`の設定ファイルはこの場合管理されません。 詳細については、Salt Bundle設定を参照してください。
|
2.2. Salt MinionからSalt Bundleへの切り替え
Salt状態`util.mgr_switch_to_venv_minion`を使用して、`salt-minion`から`venv-salt-minion`に切り替えることができます。 トラブルを避けるために、2段階で`venv-salt-minion`に切り替えることをお勧めします。
-
最初にピラーを指定せずに`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_salt`に設定して`True`を適用し`salt-minion`を削除し、`mgr_purge_non_venv_salt_files`を`True`に設定して`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.3. 追加の懸念事項
-
最初の手順をスキップして2番目の手順のみを実行すると、クライアント側でコマンドを実行するために使用される`salt-minion`を停止する必要があるため、状態適用プロセスは失敗する可能性があります。
-
Salt Bundleのインストールを避け、代わりに`salt-minion`を使用し続けることも可能です。 この場合、これらのオプションのいずれかを指定します。
-
mgr-bootstrap`を--no-bundle`オプション付きで実行します。 -
生成されたブートストラップスクリプトで`AVOID_VENV_SALT_MINION`を`1`に設定します。
-
ブートストラップ状態では、`/srv/pillar/salt_bundle_config.sls`内で`mgr_avoid_venv_salt_minion`ピラーを`True`に設定します。
-
3. Salt BundleによるSSH Push
Salt Bundleは、クライアントに対してSSH Pushアクションを実行するときにも使用されます。
シェルスクリプトは、`venv-salt-minion`をインストールすることなく、Saltコマンドが実行される前にSalt Bundleをターゲットシステムにデプロイします。Salt Bundleは全体のSaltコードベースを含むため、`salt-thin`はデプロイされません。 SSH Push(Web UIを使用したブートストラップを含む)は、バンドル内のPython 3インタープリタを使用します。 ターゲットシステムには、他のPythonインタープリタをインストールする必要はありません。
Salt BundleでデプロイされたPython 3は、クライアントでSSH Pushセッションを処理するために使用されるため、SSH Push(Web UIを使用したブートストラップを含む)は、システムにインストールされているPythonに依存しません。
`salt-thin`を使用することはフォールバックメソッドとして有効にできますが、クライアントにPython 3がインストールされている必要があります。 この方法は推奨されず、サポートもされておらず、開発目的のためだけに存在します。 `/etc/rhn/rhn.conf`の設定ファイルで`web.ssh_use_salt_thin`を`true`に設定します。
|
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`にインストールします。
|
必要に応じて、 [Service] Environment=VENV_PIP_TARGET=/new/path/local/venv-salt-minion/pip |
|
`pip`を通じてインストールされたPythonパッケージは、Salt Bundleの更新時に変更されません。 そのようなパッケージが更新後も利用可能で機能することを保証するために、Salt Bundleの更新後に適用されるSaltステートでインストールすることをお勧めします。 |