약간의 도움이 필요합니다. 최종 목표는 일반적인 것 인 상태를 유지하고 필요로하는 서버와 각 서버의 다른 dir에 pem cert 파일을 푸시 할 수있게하는 것입니다. 나는 그것이 의미가 있기를 바랍니다. 다시 말해, 각 서버가 pem 파일을 배포하기위한 별도의 상태를 원하지 않습니다. 파일의 소스의솔트 스탁 및 만들기 상태 일반
{% if 'custom_id' in pillar.get('the_custom_id') %}
{% set theuser = 'relevantuser' %}
{% set certpath = '/path/to/certs' %}
{% elif 'another-custom_id' in pillar.get('the_custom_id') %}
{% set theuser = 'relevantuser' %}
{% set certpath = '/path/to/certs' %}
{% else %}
{% set theuser = 'relevantuser' %}
{% set certpath = '/path/to/certs' %}
{% endif %}
{{ certpath }}:
file.directory:
- user: {{ theuser }}
- group: {{ theuser }}
- file_mode: 600
- dir_mode: 755
- makedirs: True
- recurse:
- user
- group
- mode
{% for cert_type in pillar.get('pem_certs', {}) %}
{{ certpath }}{{ cert_type }}.pem:
file.managed:
- context:
cert_type: {{ cert_type }}
- mode: 600
- source: salt://path/to/file/filename
- template: jinja
{% endfor %}
내용 : (내가 뭔가 다른 변수에 대한 특정 세부 사항을 변경 한)
홈페이지 상태가 해당 서버에 포함 할
: 내가 지금까지 가지고.managed above :
{{ pillar['pem_certs'][cert_type] }}
pillar.get 함수의 필라 파일에는 pem 키가 포함됩니다.
pem_certs:
ca-cert:
-----BEGIN CERTIFICATE---------
etc
소금 스택 환경이 가동되어 완전히 작동합니다. 동일한 경로가 잘 작동하는 미니언에 대한 rsa_id 개인 키를 추가 할 때 사용되었습니다. file.directory 제대로 작동하고 디렉터리를 만들고 그에 따라 올바른 사용자가 적용됩니다.
디버그에서 file.managed 상태가 렌더링되지 않고 그 이유를 알 수 없습니다. 상태를 실행 한
디버그 출력 :
[DEBUG ] Rendered data from file: /var/cache/salt/minion/files/base/path/to/state.sls:
/path/to/certs:
file.directory:
- user: theuser
- group: theuser
- file_mode: 600
- dir_mode: 755
- makedirs: True
- recurse:
- user
- group
- mode
[DEBUG ] LazyLoaded config.get
현재 나는 pillar.get가 검색되지 않거나 pem_certs를 검색 할 수 있다는 것을 가정하고있다. 이것을 구체적으로 테스트 할 수있는 방법이 있습니까?
아무도 도와 줄 수 있습니까?