ミニオンの1つに展開しようとしているsshキーが2つあります。しかし、私はそれを展開させることができないようです。エラーが発生します。こちらが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: [email protected]
uid: 4001
gid: 4001
Shell: /bin/bash
groups:
- bowling
shadow: $6$Sasdf/Ss$asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfsadfasdfsadfsadfsdf
authkey: ssh-dss AAAAasdfasdfsadfsadfsadfsadfasdfasdfsdafsdafaasdfasdfasdfasdfasdfsadfsadfsadfsadfasdfasdfsdafsdafaasdfasdfasdfasdfasdfsadfsadfsadfsadfasdfasdfsdafsdafaasdfasdfasdfasdfasdfsadfsadfsadfsadfasdfasdfsdafsdafa = [email protected]
sshpub: ssh-dss AAAAasdfasdfsadfsadfsadfsadfasdfasdfsdafsdafaasdfasdfasdfasdfasdfsadfsadfsadfsadfasdfasdfsdafsdafaasdfasdfasdfasdfasdfsadfsadfsadfsadfasdfasdfsdafsdafaasdfasdfasdfasdfasdfsadfsadfsadfsadfasdfasdfsdafsdafa = [email protected]
- name: barney
fullname: Barney Rubble
email: [email protected]
uid: 4002
gid: 4002
Shell: /bin/bash
groups:
- bowling
shadow: $6$Suiop/Ss$uiopuiopuiopuiopuiopuiopuiopuiopuiopuiopuiopsadfuiopsadfsadfsdf
authkey: ssh-dss AAAAuiopuiopsadfsadfsadfsadfuiopuiopsdafsdafauiopuiopuiopuiopuiopsadfsadfsadfsadfuiopuiopsdafsdafauiopuiopuiopuiopuiopsadfsadfsadfsadfuiopuiopsdafsdafauiopuiopuiopuiopuiopsadfsadfsadfsadfuiopuiopsdafsdafa = [email protected]
sshpub: ssh-dss AAAAuiopuiopsadfsadfsadfsadfuiopuiopsdafsdafauiopuiopuiopuiopuiopsadfsadfsadfsadfuiopuiopsdafsdafauiopuiopuiopuiopuiopsadfsadfsadfsadfuiopuiopsdafsdafauiopuiopuiopuiopuiopsadfsadfsadfsadfuiopuiopsdafsdafa = [email protected]
ステップ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から存在していたため、元の質問と回答よりも新しいものですが、今日では十分に利用できるソリューションです。