내 미니언 중 하나에 배포하려고하는 두 개의 ssh 키가 있습니다. 그러나 배포 할 수없는 것 같습니다. 오류가 발생했습니다. init.sls
기둥 은 다음과 같습니다 .
/xxx/yyy/zzz/id_rsa:
file.managed:
- source: salt://private/id_rsa
/xxx/yyy/zz/id_rsa.pub:
file.managed:
- source: salt://private/id_rsa.pub
내 init.sls
상태 는 다음과 같습니다 .
ssh:
file.managed:
- name: {{ pillar['private'] }}
나는 무언가를 잘못하고 있어야하지만, 확실하지 않습니다. 어떤 제안?
답변
Salt Pillar 시스템에는 init.sls 파일이 없습니다. 상태와 기둥 모두 top.sls 파일이 있습니다. 하위 디렉토리 인 상태에는 init.sls 파일이있을 수 있습니다.
1 단계 : /srv/pillar/users.sls에서 사용자 정의
users:
- name: fred
fullname: Fred Flintstone
email: fflintstone@slaterockandgravel.com
uid: 4001
gid: 4001
shell: /bin/bash
groups:
- bowling
shadow: $6$Sasdf/Ss$asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfsadfasdfsadfsadfsdf
authkey: ssh-dss AAAAasdfasdfsadfsadfsadfsadfasdfasdfsdafsdafaasdfasdfasdfasdfasdfsadfsadfsadfsadfasdfasdfsdafsdafaasdfasdfasdfasdfasdfsadfsadfsadfsadfasdfasdfsdafsdafaasdfasdfasdfasdfasdfsadfsadfsadfsadfasdfasdfsdafsdafa = fflinstone@slaterockandgravel.com
sshpub: ssh-dss AAAAasdfasdfsadfsadfsadfsadfasdfasdfsdafsdafaasdfasdfasdfasdfasdfsadfsadfsadfsadfasdfasdfsdafsdafaasdfasdfasdfasdfasdfsadfsadfsadfsadfasdfasdfsdafsdafaasdfasdfasdfasdfasdfsadfsadfsadfsadfasdfasdfsdafsdafa = fflinstone@slaterockandgravel.com
- name: barney
fullname: Barney Rubble
email: brubbel@slaterockandgravel.com
uid: 4002
gid: 4002
shell: /bin/bash
groups:
- bowling
shadow: $6$Suiop/Ss$uiopuiopuiopuiopuiopuiopuiopuiopuiopuiopuiopsadfuiopsadfsadfsdf
authkey: ssh-dss AAAAuiopuiopsadfsadfsadfsadfuiopuiopsdafsdafauiopuiopuiopuiopuiopsadfsadfsadfsadfuiopuiopsdafsdafauiopuiopuiopuiopuiopsadfsadfsadfsadfuiopuiopsdafsdafauiopuiopuiopuiopuiopsadfsadfsadfsadfuiopuiopsdafsdafa = fflinstone@slaterockandgravel.com
sshpub: ssh-dss AAAAuiopuiopsadfsadfsadfsadfuiopuiopsdafsdafauiopuiopuiopuiopuiopsadfsadfsadfsadfuiopuiopsdafsdafauiopuiopuiopuiopuiopsadfsadfsadfsadfuiopuiopsdafsdafauiopuiopuiopuiopuiopsadfsadfsadfsadfuiopuiopsdafsdafa = fflinstone@slaterockandgravel.com
2 단계 : /srv/pillar/top.sls에 새 기둥 추가
base:
'testminion':
- users
3 단계 : jinja를 사용하여 기둥을 /srv/salt/user/init.sls의 상태에 매핑
{% for user in pillar['users'] %}
user_{{user.name}}:
group.present:
- name: {{user.name}}
- gid: {{user.gid}}
user.present:
- name: {{user.name}}
- fullname: {{user.fullname}}
- password: {{user.shadow}}
- shell: {{user.shell}}
- uid: {{user.uid}}
- gid: {{user.gid}}
{% if user.groups %}
- optional_groups:
{% for group in user.groups %}
- {{group}}
{% endfor %}
{% endif %}
- require:
- group: user_{{user.name}}
file.directory:
- name: /home/{{user.name}}
- user: {{user.name}}
- group: {{user.name}}
- mode: 0751
- makedirs: True
user_{{user.name}}_forward:
file.append:
- name: /home/{{user.name}}/.forward
- text: {{user.email}}
user_{{user.name}}_sshdir:
file.directory:
- name: /home/{{user.name}}/.ssh
- user: {{user.name}}
- group: {{user.name}}
- mode: 0700
{% if 'authkey' in user %}
user_{{user.name}}_authkeys:
ssh_auth.present:
- user: {{user.name}}
- name: {{user.authkey}}
{% endif %}
{% if 'sshpriv' in user %}
user_{{user.name}}_sshpriv:
file.managed:
- name: /home/{{user.name}}/.ssh/id_rsa
- user: {{user.name}}
- group: {{user.name}}
- mode: 0600
- contents_pillar: {{user.sshpriv}}
{% endif %}
{% if 'sshpub' in user %}
user_{{user.name}}_sshpub:
file.managed:
- name: /home/{{user.name}}/.ssh/id_rsa.pub
- user: {{user.name}}
- group: {{user.name}}
- mode: 0600
- contents_pillar: {{user.sshpub}}
{% endif %}
{% endfor %} # user in users
# vim: ft=yaml tabstop=2 sts=2 sw=2 et ai si
미니언을 새로운 기둥과 동기화하는 것을 잊지 마십시오!
salt targetminions saltutil.refresh_pillar
답변
아마 경우 원래의 질문과 관련, 또 다른 간단한 해결 방법이 있습니다 주목해야한다 source: salt://...
형식이 작동하지 않습니다 file.managed
아직도 무슨 일이 있었로 – salt-ssh
때문에 버그의 https://github.com/saltstack/salt/issues/38458 였습니다 고정 된 이후- contents:
파일 트리 외부 기둥 으로 전환 하여 마스터의 파일로 백업됩니다.
은 file_tree
ext_pillar
에 설명되어 있습니다 https://docs.saltstack.com/en/latest/ref/pillar/all/salt.pillar.file_tree.html#module-salt.pillar.file_tree 요즘. 2015.5.0 버전부터 존재하므로 원래 질문 및 답변보다 최신이지만 오늘날 합리적으로 사용할 수있는 솔루션입니다.
실제로, https://docs.saltstack.com/en/latest/faq.html#is-it-possible-to-deploy-a-file-to-a-specific-minion-without 의 FAQ에도 있습니다. -다른 미니언들에게 접근하기