Fileglob desenli iç içe bir döngüye nasıl sahip olabilirim?


13

Ansible'da bir dizi kullanıcı için bir dizi yetkili SSH anahtarı oluşturmaya çalışıyorum. Ben böyle kurulmuş bir usersdeğişken var :

users:
  - { username: root, name: 'root' }
  - { username: user, name: 'User' }

Aynı rolde, bir files/public_keysdizinde yetkilendirilmiş anahtar dosyaları kümesi de var, yetkili anahtar başına bir dosya var:

roles/common/files/public_keys/home
roles/common/files/public_keys/work

Her bir ortak anahtarı her kullanıcıya kopyalamak istiyorum.

Aşağıdaki görevi kullanmayı denedim:

- name: copy authorized keys
  authorized_key: user={{ item.0.username }} key={{ item.1 }}
  with_nested:
    - users
    - lookup('fileglob', 'public_keys/*')

Ancak, altındaki her dosya yolunu değil item.1değişmez dizeyi içerir ."lookup('fileglob', 'public_keys/*')"files/public_keys

files/public_keysDizinin bir listesini almanın ve her ortak anahtarı her kullanıcıya kopyalamanın bir yolu var mı ?

Yanıtlar:


8

Hile, fileglob dönüş değerini splitişlev aracılığıyla bir listeye dönüştürmektir , böylece değerler üzerinde yineleme yapabilirsiniz:

- name: copy authorized keys
  authorized_key: 
    user: "{{ item.0.username }}"
    key: "{{ lookup('file', item.1) }}"
  with_nested:
    - "{{ users }}"
    - "{{ lookup('fileglob', 'public_keys/*').split(',') }}"

Olmadan, çıplak değişkenleri kullanarak unutmayın {{ve }}için, with_itemsyanıtlayıcı 'v2 kullanımdan kaldırıldı.


Bu cevap kabul edilmelidir
Beyers

0

Komutunuzu önemli ölçüde yeniden yazmanız gerekebilir, ancak dosya globları üzerinde döngü için hüküm vardır

örnekten:

- copy: src={{ item }} dest=/etc/fooapp/ owner=root mode=600
  with_fileglob:
    - /playbooks/files/fooapp/*

Diğer umut verici seçenekler , aslında SSH anahtarlarıyla gösterilen Alt Öğeler Üzerinde Döngüdür


3
Ben kullanarak dosya glob üzerinde döngü biliyorum with_fileglob; Bunu iç içe bir döngü ile birlikte nasıl kullanacağımdan emin değilim. Üzerinde Döngü alt öğeleri olabilir çalışır, ancak o zamandan beri ben elle ı kopyalamak istediğiniz tuşları tüm listesini belirtmek gerekmez umuyorum gerektiğini sadece (kullanarak bir liste olarak bu elde edebilmek with_fileglob).
mipadi

Ben de emin değilim. Bir sonraki en iyi öneri içine pop etmektir #ansibleüzerinde irc.freenode.netve gurular Parlak bir fikrin var olup olmadığını görün.
Tom O'Connor
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.