728x90
반응형

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

+ Recent posts