카테고리 보관물: Server

Server

소금 기둥을 통해 마스터에서 미니언으로 ssh 키 배포 내 미니언 중 하나에 배포하려고하는

내 미니언 중 하나에 배포하려고하는 두 개의 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에도 있습니다. -다른 미니언들에게 접근하기


답변