2017-02-09 2 views
2

이것은 명확한 요구 사항입니다.소금 스택 : 수식을 실행하기 전에 설치된 패키지가 필요합니다

나는 패키지가 실행되기 전에 init.sls 수식으로 설치되는 패키지 묶음에 의존하는 두 가지 수식을 가지고 있습니다.

나는 지금 아래와 같은 것을 가지고있다. 누군가가 이것이 올바른 접근인지 또는 누군가가 실제로 더 나은 접근을 제공 할 수 있는지를 궁금해하고있었습니다.

init.sls

install_packages: 
    pkg.installed: 
    - pkgs: 
     - foo 
     - bar 
    - require_in: 
     - sls: brrap 
     - sls: blah 

그래서 brrap.sls 및 blah.sls이 실행되기 전에이 위의 패키지가 설치되어 있는지 확인하고있는 것?

감사

+0

내 관점에서 좋아 보인다. – dahrens

답변

3

예, brrap.slsblah.sls이 실행되기 전에 패키지가 설치되어 있는지 확인합니다 귀하의 예에서 require_in 필요한를 사용하여.

모든 필수 조건은 동일한 방식으로 작동합니다. 대상 상태에서 정상적인 요구 사항이 발생합니다. require_in 문은 별도의 sls 파일에 require를 할당 할 때 특히 유용합니다.

은 오랫동안 brrap.slsblah.sls 상태가이 설정 될 때 필요한 추가 구성 요소 (foobar 패키지) 인식 할 필요가 없기 때문에, 구성은 괜찮습니다. brrap.slsblah.sls 주에서 모든 경우에 foobar 패키지를 설치해야하는 경우 brrap.slsblah.sls 상태에서 require 필수 구성 요소를 만드는 것이 더 간단한 해결책 일 수 있습니다. 예를 들어

테이크 상태 http.sls 다음 당신의 부하의 일부에

httpd: 
    pkg.installed: 
    - name: httpd 
    service.running: 
    - name: httpd 

당신이 http.sls을 사용할 수 있습니다, 그리고 다른 사람에 당신이 http.slsphp.sls 상태를 사용할 수 있습니다

include: 
    - http 

php: 
    pkg.installed: 
    - name: php 
    - require_in: 
     - service: httpd 

이제 php가 설치된 것으로 확인되면 httpd 서버가 시작됩니다.

전체 예제는 requisites and other global state arguments 설명서를 참조하십시오.

+0

이러한 철저한 설명을 해주셔서 감사합니다. –

+1

참고 사항 : 전체 sls 파일의 require_in은 [broken until Nitrogen] (https://github.com/saltstack/salt/issues/22852) 릴리스입니다. –

관련 문제