Görevi yalnızca ana bilgisayar bir gruba ait değilse çalıştır


107

Yanıtlanabilir bir görevi yalnızca mevcut başucu kitabının sunucusu belirli bir gruba ait değilse çalıştırabilmek istiyorum . Yarı sözde kodda:

- name: my command
  command: echo stuff
  when: "if {{ ansible_hostname }} not in {{ ansible_current_groups }}"

Bunu nasıl yapmalıyım?

Yanıtlar:


199

İşte bunu yapmanın başka bir yolu:

- name: my command
  command: echo stuff
  when: "'groupname' not in group_names"

group_namesburada belgelendiği gibi sihirli bir değişkendir: https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#accessing-information-about-other-hosts-with-magic-variables :

grup_simleri, geçerli ana bilgisayarın içinde bulunduğu tüm grupların bir listesidir (dizi).


3
+1 ve çevreleyen alıntıyı dahil etmezseniz şu hatayı alırsınız:This one looks easy to fix. It seems that there is a value started with a quote, and the YAML parser is expecting to see the line ended with the same kind of quote.
Peter Ajtai

3
Bu yaklaşımı daha okunaklı ve yazmayı daha uygun buluyorum, ancak her ikisi de eşit derecede iyi çalışıyor. when: inventory_hostname not in groups.certain_groups
Liam

4
Bu yöntem daha sağlamdır inventory_hostname in groups['groupname']çünkü harçın kendisinin olmadığı durumlarda Ansible, "Değişken adınızın '-' gibi geçersiz karakterler içermediğinden emin olun: 'StrictUndefined' türündeki bağımsız değişken yinelenemez"
hamx0r

20

group_vars/Ana bilgisayarlar dosyasında veya doğrudan ana bilgisayar dosyasında bulunan değişken dosyalarında aşağıdaki gibi bir kontrol değişkeni ayarlayabilirsiniz :

[vagrant:vars]
test_var=true

[location-1]
192.168.33.10 hostname=apollo

[location-2]
192.168.33.20 hostname=zeus

[vagrant:children]
location-1
location-2

Ve aşağıdaki gibi görevleri çalıştırın:

- name: "test"
  command: "echo {{test_var}}"
  when: test_var is defined and test_var

2
kabul edilen cevap soru için daha doğrudur, ancak bu sizi daha iyi bir yola götürür
nik.shornikov
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.