728x90
반응형

Salt Best Practices

/srv/pillar/dev/init.sls

  • Pillar는 Static Variable이 기재되는 것

  • Pillar는 Salt Minion들이 어떠한 설정 값을 유지하기 원하는지 선언하기 때문에 Dynamic Variable보다는 Static Variable이 적용 되는 것이 Best

 

 

/srv/salt/dev/dev_files.sls

  • 구성 파일로 해당 예제는 pillar에 선언된 대로 files/test.conf.jinja 파일을 정의하고 있다.

  • 여기서 확인해야할 점은 첫 줄의 dev/map.jinja 파일로부터 permission의 context를 import하는 것으로 아래에 확인해보면 user와 group의 변수 확인시 permission.user 형식으로 지정되어 있다.

  • pillar나 grains를 통해 값을 가져오는것이 아닌 Mapping된 map.jinja 파일에서 값을 가져오는 것이다.

 

 

/srv/salt/dev/map.jinja

  • state.sls 파일에 변수 값을 넣을 경우 Minion 환경에 따라 다른 값이 들어가야하는 경우가 많다.

  • 이런 경우 state.sls 파일에 모두 넣을 수 있지만 좋은 방법이 아니다.

  • state.sls 파일은 가독성이 좋도록 간단하게 작성하고 거기에 맵핑되는 변수들은 map.jinja 파일에 작성하는 것이 좋다. 물론 pillar에 넣어서 사용할 수도 있지만 pillar는 Dynamic Variable보다 Static Variable을 유지하는 것이 좋기 때문에 map.jinja 파일에 환경에 따른 Dynamic Variable을 지정하는 것이다.

 

  • map.jinja 파일을 보면 dev_files.sls 파일에 들어가는 {{ permission.user }} 와 같은 변수가 정의되어 있다.

  • permission은 grains.filter_by의 리턴값에 따라 설정이 되는 기본적으로는 default를 사용하도록 되어 있는데 이것은 리턴된 값이 정의된 내용에 없는 경우에 사용한다.

  • 리턴된 값이 정의된 내용에 있는 경우에는 state.sls 파일의 변수에 map.jinja의 내용들이 들어간다.

  • 여기서 주의해야할점은 가장 아래 쪽에 있는 merge=salt'pillar.get', base='default' 이다.

  • 가장 위의 pillar 파일을 보면 permission의 mode 값이 777로 설정되어 있고 map.jinja에서는 644로 지정되어 있다.

  • merge 인수의 경우 가장 pillar의 값을 가져와 우선 적용 시킨다. 적용시 아래와 같다.

  • map.jinja에 mode가 644로 적용되어 있어도 pillar의 값인 777이 우선 적용되었다.

 

 

/srv/salt/dev/init.sls

  • state.sls의 최상위 파일

 

 

반응형

'SaltStack' 카테고리의 다른 글

SaltStack Demo Configuration  (2) 2020.01.12
SaltStack Jinja File  (0) 2020.01.12
SaltStack Example  (2) 2020.01.12
SaltStack Command Option  (0) 2020.01.12
SaltStack  (1) 2019.12.17

+ Recent posts