솔트 스테이트는 솔트 SSH와 완전히 호환되며 시스템 설정 및 구성을 신속하게 자동화하는 데 사용할 수 있습니다.
Configuration Management 가이드에는 솔트 상태 생성에 대한 자세한 설명이 포함되어 있습니다. 이 설명서의 모든 정보(Salt pillar 및 Salt’s file server 포함)는 Salt SSH를 사용하여 상태를 적용하는 데 사용할 수 있습니다.
자습서: 스테이트
상태를 생성하고 적용하기 전에 Salt SSH 환경에 몇 가지를 추가하여 salt-ssh 디렉토리의 디렉토리를 가리키도록 상태 시스템 파일 위치를 구성하겠습니다(기본적으로 상태 파일은 /srv/salt에 저장됨).
이전에 생성한 Salt SSH 디렉토리(~/salt-ssh)에 있고 가상 환경(source venv/bin/activate)을 활성화했는지 확인합니다.
- 다음 내용으로 salt-ssh/master 파일을 생성하십시오.
file_roots: base: - /home/vagrant/salt-ssh/states # you might need to replace 'vagrant' in your environment
2. states 이름이 지정된 디렉터리를 생성한 후 다음을 states/network.sls로 추가하고 저장하십시오:
install network packages: pkg.installed: - pkgs: - rsync - lftp - curl
3. 패키지를 설치 중이므로 이 상태를 적용하기 전에 상승된 권한을 사용하도록 설정해야 합니다. roster 파일을 열고 sudo: True를 추가합니다.
managed: host: 192.168.70.11 user: vagrant sudo: True
4. 다음 명령을 사용하여 상태를 적용합니다.
salt-ssh '*' state.apply network
(이전에는 Saltfile에 config_dir 경로를 추가했으므로, salt-ssh는 salt-ssh/master 파일을 찾습니다.)
파일 관리
솔트 SSH 상태에서도 파일을 관리할 수 있습니다! Salt SSH는 모든 salt:// 파일 참조를 확인하고 에이전트 없는 시스템으로 파일을 자동으로 전송합니다.
- salt-ssh/states 디렉터리에서 이름이 files인 하위 디렉터리를 생성하십시오.
- 다음과 함께 salt-ssh/states/files/sample.conf 파일을 추가합니다.
setting=value setting2=value2
3. 다음 내용이 포함된 salt-ssh/states/config.sls라는 새 상태 파일을 추가하고 저장합니다.
manage some app config file: file.managed: - name: /tmp/sample.conf - source: salt://files/sample.conf
4. 다음 명령을 사용하여 상태를 적용합니다.
salt-ssh '*' state.apply config
이 상태를 적용할 때마다 에이전트 없는 시스템의 구성 파일이 salt-ssh/status/files의 버전과 일치하도록 업데이트됩니다.
추가된 재미를 위해 원격 실행을 사용하여 구성 파일의 내용을 나열할 수 있습니다.
salt-ssh '*' cmd.run 'cat /tmp/sample.conf'
소스 제어
salt-ssh/states 디렉토리에 상태 파일을 배치하는 대신 salt-ssh/master의 내용을 다음과 같이 변경하여 GitHub repo에 액세스하도록 솔트를 쉽게 구성할 수 있습니다.
fileserver_backend: - git gitfs_remotes: - https://github.com/yourusername/yourrepo.git
자세한 내용은 Git Fileserver Backend를 참조하십시오.
추가 예
다음은 시스템을 구성하기 위해 스테이트 파일에 추가할 수 있는 다른 명령의 몇 가지 예입니다.
Github에서 클론
Clone the SaltStack bootstrap script repo: pkg.installed: - name: git # make sure git is installed first! git.latest: - name: https://github.com/saltstack/salt-bootstrap - rev: develop - target: /tmp/salt
서비스 실행
Make sure the mysql service is running: service.running: - name: mysql
사용자 생성
user account for pete: user.present: - name: pete - shell: /bin/bash - home: /home/pete - groups: - sudo
이 가이드에서는 Salt SSH를 사용하여 서버 관리를 시작하는 간단한 방법을 보여 줍니다. Salt SSH에서 사용하는 모든 상태 파일과 명령은 마스터-미니언 모드에서 실행되는 Salt와 완전히 호환되므로 두 모드 간에 쉽게 전환할 수 있습니다.
출처 : https://docs.saltproject.io/en/getstarted/ssh/states.html