시스템에서 올바른 파일을 얻는 것이 올바른 소프트웨어를 설치하는 것보다 더 어려운 경우가 많습니다. Salt에는 파일 및 폴더를 중앙 관리 시스템에 전송할 수 있는 파일 서버가 내장되어 있습니다.
SALT://
Salt state 파일을 srv/salt 디렉터리에 배치하는 것은 익숙하지만 이 디렉터리에 배치한 다른 파일 및 폴더는 Salt 미니언도 사용할 수 있습니다. salt:// URL에 이어 srv/salt 디렉터리에 상대적인 파일 경로를 사용하여 솔트 상태의 이러한 파일을 참조할 수 있습니다.
파일 템플릿
솔트를 사용하면 템플릿 및 변수를 사용하여 파일을 관리할 수 있습니다. 자세한 내용은 salt.states.file docs를 참조하십시오.
GIT 파일 서버 많은 조직에서 변경 추적을 위해 소스 제어 하에 모든 구성 및 리소스 파일을 저장합니다. 솔트를 사용하면 솔트 마스터의 로컬 파일 시스템 대신(또는 추가) Git repo를 파일 서버로 사용하여 이 워크플로를 크게 간소화할 수 있습니다. 예를 들어 http.conf가 Git repo에서 원본인 경우 변경 사항이 커밋될 때마다 모든 대상 시스템이 다음에 file.managed 솔트 스테이트가 실행될 때 변경 내용을 받게 됩니다. Git repo를 솔트 파일 서버 백엔드로 설정하는 방법에 대한 자세한 내용은 Git Fileserver Backend Walkthrough 를 참조하십시오.
file.managed
이 솔트 스테이트 기능을 사용하면 솔트 마스터에서 원본 파일을 지정하여 로컬 파일을 관리할 수 있습니다.
deploy the http.conf file: file.managed: - name: /etc/http/conf/http.conf - source: salt://apache/http.conf
source 경로가 salt://로 시작되므로 이 파일의 소스가 Salt 마스터의 /srv/salt/apache/http.conf인지 확인할 수 있습니다.
이 Salt 상태가 적용될 때마다 Salt는 로컬 파일이 서버의 버전과 일치하는지 확인합니다. 이를 통해 구성 드리프트를 방지하고 애플리케이션이 서로 다른 시스템에서 동일하게 구성되도록 할 수 있습니다.
예를 들어 다운로드 속도를 제한하는 사용자 정의 설정이 포함된 lftp용 글로벌 구성 파일을 배포하려는 경우 file.managed를 사용하여 이 작업을 수행할 수 있습니다.
install network packages: pkg.installed: - pkgs: - rsync - lftp - curl copy lftp config file: file.managed: - name: /etc/lftp.conf - source: salt://_tmpl_lftp.conf
구성을 한 줄만 변경하면 되므로, file.append를 사용하여 추가할 새 줄을 삽입하기만 하면 됩니다.
install network packages: pkg.installed: - pkgs: - rsync - lftp - curl update lftp conf: file.append: - name: /etc/lftp.conf - text: set net:limit-rate 100000:500000
file.recurse
이 Salt state 함수는 전체 디렉토리를 복사합니다.
copy some files to the web server: file.recurse: - name: /var/www - source: salt://apache/www
요약
이제 SaltStack의 구성 관리 시스템을 더 잘 이해할 수 있고, Salt State를 직접 작성할 수 있는 충분한 지식을 갖추어야 합니다. 영감을 찾는 경우 SaltStack Formula Repo 에는 많은 예가 포함되어 있습니다.
출처 : https://docs.saltproject.io/en/getstarted/config/files.html