Salt Example
Salt & Pillar
Salt와 Pillar의 관계
-
Salt가 시스템 구조를 정의하는 선언문이라면 Pillar는 Salt를 정의하는 선언문에 사용할 수 있는 변수와 같음
-
예를 들어 Dev와 Live 환경을 가진 미니언이 있다.
Dev 환경의 미니언에는 Python2 버전이 Live 환경의 미니언에는 Python3 버전이 설치되어야 할때 Pillar를 사용하지 않는다면 각 환경에 맞도록 Salt 파일이 하드코딩 되어야한다.
만약 Pillar를 사용한다면 Pillar 파일에서 Grains Item을 설정하거나 다른 설정으로 미니언의 환경을 읽어와 Dev에는 Python2가 Live에는 Python3이 설치되도록 작성할 수 있다.
이렇게 작성된 Pillar파일을 Salt 파일에서 참조하면 각 환경에 맞게 하드코딩할 필요 없이 Pillar에 설정된 값대로 Salt 파일은 Pillar의 값이 설정되게 된다. Pillar는 변수라고 이해하는 편이 좋을듯 하다.
-
하드 코딩된 Salt파일은 YAML 형식이라 부르지만 Pillar를 참조하게 코딩된 Salt파일은 Jinja 파일이라 불린다.
-
Salt와 Pillar의 구조는 동일해야한다. 예를 들어 Salt/dev 디렉토리만 있고 Pillar/live 디렉토리가 있는 경우 Pillar의 live에 설정된 파일은 salt/dev에 적용되지 못한다.
-
-
base env에서 해당 sls를 찾지 못했다는 경고문 (구조가 다르기 때문에 생기는 문제)
-
salt/dev라면 pillar/dev가 되어야함
Salt & Pillar Example
-
Dev 환경에서 Minion 별 다른 패키지를 가져가는 경우
-
Pillar 파일 설정
-
pillar/dev/init.sls
-
-
init.sls 파일은 dev_pkg.sls 파일을 포함
-
-
pillar/dev/dev_pkg.sls
-
minion1인 경우 bro 패키지를 minion2인 경우 cgit 패키지를 설치
-
-
Salt 파일 설정
-
salt/dev/init.sls
-
init.sls 파일은 dev 디렉토리의 dev_pkg.sls 파일을 포함
-
salt/dev/dev_pkg.sls
-
dev_pkg.sls 파일은 pillar의 pkgs라는 Attribute를 참조하고 해당 Attribute안에 설정된 내용대로 정의
-
-
실행 예제
-
Salt 명령 테스트
-
Pillar에 정의된 대로 minion1이면 python2 패키지를 minion2이면 python3 패키지를 설치
-
-
Salt 명령 적용
-
test=True하여 테스트 했던 결과와 실제 적용시 예상된 결과값이 출력
-
Salt Minion Roles
-
Grains의 id, host와 같은 Item으로 Minion을 분류할 수 있지만 Roles을 부여하여 관리할 수 있음
# salt minion2 grains.setval roles [live,demo]
-
minion2에 live와 demo라는 roles을 부여
위와 같이 부여된 Roles로 top.sls로 역할별로 Minion을 분류할 수 있다.
'SaltStack' 카테고리의 다른 글
SaltStack Demo Configuration (2) | 2020.01.12 |
---|---|
SaltStack Jinja File (0) | 2020.01.12 |
SaltStack Best Practices (2) | 2020.01.12 |
SaltStack Command Option (0) | 2020.01.12 |
SaltStack (1) | 2019.12.17 |