Tuz sütunları ile ssh anahtarını master'dan minion'a dağıtın


11

Minyonlarımdan birine konuşlandırmaya çalıştığım iki ssh anahtarım var. Ama konuşlandırmayı başaramıyorum. Hata veriyor. İşte init.slssütunlarda:

/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

İşte benim durumum init.sls:

ssh:
  file.managed:
    - name: {{ pillar['private'] }}

Yanlış bir şey yapmalıyım (belli ki), ama ne olduğundan emin değilim. Herhangi bir öneri?


Yardım etmek istiyorum, ancak verilen bilgilerle cevap veremiyorum. Nedenin bir kısmı yaml biçimlendirmesidir. Sorunuzu düzenleyin, ancak her kod bloğunun üstünde ve altında boş bir bağlantı bırakın, ardından kod bloğundaki her satırı en az 4 boşlukla girinti yapın. İkincisi, bunu zaten denklemde sütunlar olmadan yapmayı başardınız mı? Pil verilerinin, sizin sahip olduğunuz şekilde kurulduğunu hiç görmedim.
Dan Garthwaite

Sorunuza bir cevap buldunuz mu?
Dan Garthwaite

Evet, sanırım yaptım
secure212

Yanıtlar:


13

Tuz Sütunu sisteminde bir init.sls dosyası yoktur. Hem durumların hem de sütunların bir top.sls dosyası vardır. Alt dizin olan durumların bir init.sls dosyası olabilir.

1. Adım: /srv/pillar/users.sls dosyasında kullanıcılarınızı tanımlayın

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. Adım: Yeni sütunu /srv/pillar/top.sls dosyasına ekleyin

base:
  'testminion':
    - users

Adım 3: Ayağı /srv/salt/user/init.sls içindeki durumlarla eşlemek için jinja kullanın

{% 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

Minyonları yeni sütunlarla senkronize etmeyi unutmayın!

salt targetminions saltutil.refresh_pillar

Salt 2014.7.1 üzerinde çalışmak için bu örneği alamadım; bir hata veriyor gibi görünüyor: "Jinja değişkeni 'str nesnesi' 'name' özelliğine sahip değil." Ben kullanıcı / init.sls böyle bir şey yapmaya başvurdunuz: {% for user, data in salt['pillar.get']('users', {}).iteritems() %}Bu önemli sls dosyasını değiştirir; eğer çalışan bir örnek bulursam gönderirim.
Mike S

Takip: Eğer sevgili Gezgin, bu kodu kullanmak istiyorsanız, içinde bir dizi hata olduğuna inanıyorum. Örneğin, "fred" ve "barney" den sonra gelen iki nokta üst üste "ve" eğer biterse "gibi tuzun barf oluşmasına neden olur (orada boşluk olmamalıdır). Yine yapı için ilkinin hatalı olduğundan şüpheleniyorum ama şu anda tuz hakkında fazla bir şey bilmiyorum, bu yüzden emin olamıyorum. Uyarıcı Programcı. Kendim için iteritems () konseptiyle çalışacağım.
Mike S

Üzgünüz, Dan, hala testminion alıyorum: Veriler derlenemedi: ---------- SLS tabanını oluşturma: kullanıcıların başarısız oldu: Jinja değişkeni 'str nesnesi' çalıştırdığımda 'name' niteliği yok: salt testminion state.highstate test = Doğru .... Yukarıda metninizi aynen kopyaladım. Tek eklenti, basit bir 3-astar olan /srv/salt/top.sls dosyamdı (base :, '*': ve -users).
Mike S

Önce bir liman işçisi konteynerini açıp çözeceğim.
Dan Garthwaite

"Veriler derlenemedi" /srv/pillar/top.sls dosyasındaki '.sls' dosya adı sonekinden kaynaklandı. Daha sonra ben de problemlerle karşılaştım. Lütfen dikkat, çoğunu yeniden yazdım. Şimdilik user.sshpriv'i bırakmak zorunda kaldım, sadece geç oluyor ve metin içeriğinde --- sorun yaşamaya devam ediyorum.
Dan Garthwaite

1

Muhtemelen eğer asıl soruya ilişkin olarak, başka basit bir çözüm var olduğunu belirtmek gerekir source: salt://...biçimi ile çalışmaz file.managedhala örneğinde olduğu gibi - salt-sshçünkü hata https://github.com/saltstack/salt/issues/38458 olduğunu çünkü sabit - ve bu contents:da ana dosyadaki dosyalar tarafından da desteklenen dosya ağacı dış direğine geçmek içindir .

file_tree ext_pillarEn belgelenmiştir https://docs.saltstack.com/en/latest/ref/pillar/all/salt.pillar.file_tree.html#module-salt.pillar.file_tree bugünlerde. 2015.5.0 sürümünden beri var olduğu için orijinal soru ve cevaptan daha yenidir, ancak bugün oldukça iyi bulunan bir çözümdür.

Gerçekten de https://docs.saltstack.com/en/latest/faq.html#is-it-possible-to-deploy-a-file-to-a-specific-minion-without adresindeki SSS bölümünde de yer almaktadır. -diğer-köleleri-sahip-erişim-to-it

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.