Salt 스테이트를 모듈식으로 유지하고 재사용 가능 상태로 유지하려면 각 구성 태스크를 Salt State 트리에 한 번만 설명해야 합니다. 여러 위치에서 동일한 구성 태스크를 사용해야 하는 경우 include를 사용할 수 있습니다.
포함을 사용하면 간단합니다. 상태 파일의 맨 위(ID 외부에 있음)에 다음 형식을 사용하여 포함 항목을 추가하십시오.
include: - sls1 - sls2
여기서 sls1 및 sls2는 포함할 SLS 파일의 이름입니다. .sls 확장자는 포함할 필요가 없습니다.
포함할 솔트 스테이트 파일이 솔트 스테이트 트리의 하위 디렉터리에 있는 경우 디렉터리 구분 기호로 점(.)을 사용하십시오.
include: - dir.sls1
포함된 솔트 상태는 현재 파일의 맨 위에 삽입되어 먼저 처리됩니다.
솔트 스테이트 트리
솔트 상태 파일은 /srv/salt/ 디렉토리에서 솔트 상태 트리라고 하는 디렉토리 트리로 구성됩니다. 생성한 모든 새 상태는 이 디렉터리에 배치되어야 합니다. 이 위치를 변경하려면 /etc/salt/master에서 file_roots 설정을 업데이트합니다.
예
이 가이드 앞부분의 솔트 스테이트를 기억하십니까?
sync directory using lftp: cmd.run: - name: lftp -c "open -u {{ pillar['ftpusername'] }},{{ pillar['ftppassword'] }} -p 22 sftp://example.com;mirror -c -R /local /remote"
이 Salt 상태는 lftp 실행 파일에 따라 다르므로 다른 Salt 상태를 생성하여 lftp가 설치되었는지 확인하는 것이 좋습니다. 그러면 우리는 포함을 사용하여 두 스테이트를 결합할 수 있다.
srv/salt/lftp.sls
:
install lftp: pkg.installed: - name: lftp
srv/salt/dir-sync.sls
:
include: - lftp sync directory using lftp: cmd.run: - name: lftp -c "open -u {{ pillar['ftpusername'] }},{{ pillar['ftppassword'] }} -p 22 sftp://example.com;mirror -c -R /local /remote"
include를 사용하면 다른 곳에서 lftp.sls 솔트 스테이트를 사용하여 이러한 디렉터리를 동기화하지 않고 lftp를 설치할 수 있다는 이점이 있습니다.
탑 파일만 사용하는 것이 어떻겠습니까?
하나의 Salt state 대신 다른 Salt state를 포함합니다.
include: - sls1 install a useful package: pkg.installed: - name: cowsay
필요한 경우 각 파일을 자체 Salt state 파일에 넣은 다음 맨 위 파일을 사용하여 두 파일을 모두 포함할 수 있습니다.
base: 'web*': - sls1 - sls2
솔트 스테이트가 항상 다른 상태를 필요로 한다면 포함을 사용하는 것이 더 나은 선택입니다. 탑 파일의 두 상태를 포함하여 일부 시스템만 두 가지 솔트 상태를 모두 수신해야 하는 경우 각 시스템을 유연하게 선택할 수 있습니다.
출처 : https://docs.saltproject.io/en/getstarted/config/include.html