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