2014-11-18 14 views
11

Ansible şablonlarında envanter çekme deseniyle uğraşıyorum, lütfen yardım edin. :) Grup içinden alınabilir döngü şablonda var

Ben bir izleme sunucusu kurmak ediyorum ve otomatik hüküm yanıtlayıcı 'kullanarak sunucularını edebilmek istiyorum. Bana izin vermek için şablondaki döngülerle uğraşıyorum.

monitoringserver.yml

vars: 
     servers_to_monitor: 
     - {cname: web1, ip_address: 192.168.33.111} 
     - {cname: web2, ip_address: 192.168.33.112} 
     - {cname: db1, ip_address: 192.168.33.211} 
     - {cname: db2, ip_address: 192.168.33.212} 

template.yml

all_hosts += [ 
      {% for host in servers_to_monitor %} 
        "{{ host.cname }}{{ host.ip }}|cmk-agent|prod|lan|tcp|wato|/" + FOLDER_PATH + "/", 
      {% endfor %} 
] 

bu olamaz:

Benim yarı çalışma soluition şimdiye kadar ben şablon görevi çağıran oyun kitabında olduğu Farklı sunucular için farklı IP adreslerini tanımlayamadığım için ideal değil. Diğer insanlar bunu nasıl yaptı? Eminim önemsiz olmalı ama beynim sözdizimi ile boğuşuyor.

Teşekkür

Alan

düzenleme:

all_hosts += [ 
         "web1|cmk-agent|prod|lan|tcp|wato|/" + FOLDER_PATH + "/", 
         "web2|cmk-agent|prod|lan|tcp|wato|/" + FOLDER_PATH + "/", 
         "db1|cmk-agent|prod|lan|tcp|wato|/" + FOLDER_PATH + "/", 
         "db2|cmk-agent|prod|lan|tcp|wato|/" + FOLDER_PATH + "/", 
] 

Ne istiyorum değerler web1/web2/db1/db2 farklı olmaktır: Ortaya çıkan şablonu açıklığa kavuşturmak için şuna benzer Bir üretim envanter dosyası mı yoksa bir geliştirme envanter dosyası mı kullanmama bağlı olarak.

+1

istediğini eklemek Could gerçek sonuç ne olacak? –

+0

Teşekkürler Ramon, açıklamak için bir düzenleme ekledi :) –

+0

İki group_var dirs monitor-dev ve monitor-pub'ı oluşturarak, daha sonra çalma kitabına sahip olmanın tamamını ve Belirli bir grubu arayarak üretim yapabilir. Oldukça doğru görünmüyor :) –

cevap

18

İdeal aynı {{ inventory_hostname }} değerini tutmak için izin verecek üretim ve evreleme için farklı envanter dosyaları, kullanıyor, ancak farklı makineler hedefler.

yapabilirsiniz Farklı gruplar aracılığıyla döngü ...

barındıran:

[web] 
web1 
web2 

[db] 
db1 
db2 

oyun kitabı:

- name: play that sets a group to loop over 
    vars: 
    servers_to_monitor: "{{ groups['db'] }}" 

    tasks: 
    - template: 
     src: set-vars.j2 
     dest: set-vars.js 

şablonu:

all_hosts += [ 
{% for host in servers_to_monitor %} 
    "{{ hostvars[host].inventory_hostname }}{{ hostvars[host].ansible_default_ipv4.address }}|cmk-agent|prod|lan|tcp|wato|/" + FOLDER_PATH + "/", 
{% endfor %} 
]