Salt Bundle

1. Salt Bundle이란 무엇입니까?

Salt Bundle은 Salt Minion, Python 3, 필수 Python 모듈 및 라이브러리가 포함된 단일 바이너리 패키지입니다.

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 Server가 아닌 Salt Master가 관리하는 Salt Minion과 동시에 사용할 수 있습니다. Salt Bundle이 클라이언트에 설치된 경우 SUSE Manager Server가 Salt Bundle의 구성 파일을 관리하며, 이 경우 salt-minion의 구성 파일은 관리되지 않습니다. 자세한 내용은 Salt Bundle 구성을 참조하십시오.

  • SUSE Manager Server가 아닌 Salt Master가 관리하는 Salt Minion으로 클라이언트를 부트스트랩하려면 부트스트랩을 생성할 때 mgr-bootstrap --force-bundle을 사용하는 것이 좋습니다. 스크립트를 사용하거나 부트스트랩 스크립트에서 FORCE_VENV_SALT_MINION1로 설정하십시오.

  • Web UI mgr_force_venv_salt_miniontrue로 설정된 부트스트래핑의 경우 열을 전역적으로 지정할 수 있습니다. 자세한 내용은 Salt States and Pillars에서 확인할 수 있습니다.

2.2. Salt Minion에서 Salt Bundle로 전환

Salt 상태 util.mgr_switch_to_venv_minion을 사용하여 salt-minion에서 venv-salt-minion으로 전환할 수 있습니다. 프로세스 이동 문제를 방지하려면 두 단계에 걸쳐 venv-salt-minion으로 전환하는 것이 좋습니다.

절차: util.mgr_switch_to_venv_minion 상태를 venv-salt-minion으로 전환
  1. 우선 열을 지정하지 않고 util.mgr_switch_to_venv_minion을 적용하십시오. 그러면 구성 파일 등을 복사하는 venv-salt-minion으로 전환됩니다. 원래 salt-minion 구성 및 해당 패키지는 정리되지 않습니다.

    salt <minion_id> state.apply util.mgr_switch_to_venv_minion

    mgr_purge_non_venv_saltTrue로 설정된 util.mgr_switch_to_venv_minion을 적용하여 salt-minion을 제거하고 mgr_purge_non_venv_salt_filesTrue로 설정하여 salt-minion과 관련된 모든 파일을 제거하십시오. 이 두 번째 단계는 첫 번째 단계가 처리되었는지 확인한 후 이전 구성 파일과 더 이상 사용되지 않는 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}'

첫 번째 단계를 건너뛰고 두 번째 전환 단계를 실행하는 경우 클라이언트 측에서 명령을 실행하기 위해 사용되는 salt-minion을 중지해야 하므로 상태 적용 프로세스가 실패할 수 있습니다.

반면에 Salt Bundle을 설치하지 않고 대신 salt-minion을 계속 사용하는 것도 가능합니다. 이 경우 다음 옵션 중 하나를 지정:

  • --no-bundle 옵션으로 mgr-bootstrap을 실행하십시오.

  • 생성된 부트스트랩 스크립트에서 AVOID_VENV_SALT_MINION1로 설정합니다.

  • 부트스트랩 상태에 대하여 mgr_avoid_venv_salt_minion 열을 True로 설정합니다.

3. Salt Bundle을 사용한 Salt SSH

Salt Bundle은 클라이언트로 Salt SSH 작업을 수행할 때도 사용됩니다.

셸 스크립트는 Salt 명령이 실행되기 전 venv-salt-minion을 설치하지 않고 대상 시스템에 Salt Bundle을 배포합니다. Salt Bundle에는 전체 Salt 코드 기반이 포함되어 있으므로 salt-thin이 배포되지 않습니다. Salt SSH(Web UI를 사용한 부트스트랩 포함)는 번들 내의 Python 3 해석기를 사용합니다. 대상 시스템에는 다른 Python 해석기를 설치할 필요가 없습니다.

Bundle과 함께 배포된 Python 3는 클라이언트에서 Salt SSH 세션을 처리하기 위해 사용되므로 Salt SSH(Web UI를 사용한 부트스트래핑 포함)는 시스템에 설치된 Python에 종속되지 않습니다.

salt-thin을 사용하는 것이 대체 방법으로 활성화될 수 있지만, 이를 위해서는 클라이언트에 Python 3를 설치해야 합니다. 이 방법은 권장되거나 지원되지 않으며 개발 목적으로만 존재합니다. /etc/rhn/rhn.conf 구성 파일에서 web.ssh_use_salt_thintrue로 설정하십시오.

  • Web UI로 클라이언트를 부트스트랩하기 전 부트스트랩 리포지토리를 생성해야 합니다. Salt SSH는 감지된 대상 운영 체제를 기반으로 부트스트랩 리포지토리에서 가져온 Salt Bundle을 사용 중입니다. 자세한 내용은 client-configuration:bootstrap-repository.adoc#_prepare_to_create_a_bootstrap_repository에서 확인할 수 있습니다.

  • Salt SSH는 /var/tmp를 사용하여 Salt Bundle을 배포하고 번들된 Python으로 클라이언트에서 Salt 명령을 실행합니다. 그러므로 noexec 옵션으로 /var/tmp를 마운트하지 않아야 합니다. 부트스트랩 프로세스는 Salt SSH를 사용하여 클라이언트에 도달하므로 /var/tmpnoexec 옵션으로 마운트된 클라이언트를 Web UI로 부트스트랩할 수 없습니다.

4. pip를 사용하여 Python 패키지와 함께 Salt Bundle 확장

Salt Bundle에는 번들로 제공되는 Salt Minion의 기능을 추가 Python 패키지로 확장할 수 있는 pip가 포함되어 있습니다.

기본적으로 salt <minion_id> pip.install <package-name><package_name>에 의해 지정된 Python 패키지를 /var/lib/venv-salt-minion/local에 설치합니다.

필요한 경우 /var/lib/venv-salt-minion/local 경로는 venv-salt-minion.service에 대한 VENV_PIP_TARGET 환경 변수를 설정하여 재정의할 수 있습니다. 서비스에 대한 systemd drop-in 구성 파일을 사용하는 것이 좋습니다. 이는 구성 파일 /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 상태로 패키지를 설치하는 것이 좋습니다.