2014-09-02 35 views
30

Ansible oynatma kitabında yaml dizisini --extra-vars'a nasıl geçirebilirim. Ansible dokümantasyon kendi sözdizimini açıklamıyor ve bunu herhangi bir internet kaynağında bulabiliyorum. Bir senaryo varsaAktarım dizisi --extra-vars - Ansible

Yani:

--- 
    - hosts: {{hostName}} 
    - remote_user: admin 
    ... 

Sonra

ansible-playbook DeployWar.yml --extra-vars="hostName=tomcat-webApp"

gibi benim oyun kitabı çağırmalıdır Ama iki sunucularda bu taktik kitabı çalıştırmak istiyor, tomcat-webApp ve tomcat-all demek ve ben --extra-vars kullanarak dışarıdan kontrol etmek istiyorum.

ansible-playbook DeployWar.yml --extra-vars="hostName=[tomcat-webApp, tomcat-all]" 

ansible-playbook DeployWar.yml --extra-vars="hostName={tomcat-webApp, tomcat-all}" 

ansible-playbook DeployWar.yml --extra-vars="[{hostName: tomcat-webApp}, {hostName: tomcat-all}]" 

Ama her durumda oyun kitabı benim çağrısında sözdizimi hatası ilan başarısız: Ne yapmaya çalıştık olduğunu. Herhangi bir yardım takdir edildi.

cevap

19

İlk sorunuzu yanıtlamak için "Ansible oyun defterinde yaml dizisini --extra-vars'e nasıl aktarabilirim?" , json formatted string to extra-vars'dan geçebilirsiniz. nasıl test_list geçmek yanıtlayıcı '-oyun kitabı için

- hosts: all 
    gather_facts: no 
    tasks: 
    - debug: var=test_list 

Ve:

ansible-playbook -c local -i localhost, test.yml --extra-vars='{"test_list": [1,2,3]}' 

ben için yanıtlayıcı' adlı mekanizmayı göz atmanızı öneririz konaklar için bir değişken kullanabilirsiniz rağmen İşte

örnek oyuncağıana bilgisayar yönetimi, --limit seçeneği ile birlikte.

+2

--extra-vars bir cankurtaran olmak. Söz konusu siteye {test_list: [1,2,3]} adresini yapıştırarak, JSON'nuzun sözdizimsel olarak doğru olduğunu hızlı bir şekilde doğrulayabilirsiniz. Özellikle birden çok değişkeni Ansible'a geçirirken veya birlikte çalıştığınız başka bir karmaşık JSON'unuz olduğunda kullanışlıdır. –

+0

Bu yanıt aslında modası geçmiş - '--extra-vars = '{test_list: [1,2,3]}' 'kullanılarak hataya yol açacak' HATA: Çift tırnak içine alınan özellik adı bekleniyor: satır 1 sütun 2 (char 1) '(en azından, kullandığım 1.9.4 ile), geçerli bir JSON olmadığı için. Doğru sürüm '--extra-vars = '{" test_list "olurdu: [1,2,3]}'' – iquito

+0

ekstra vars formatlamayı güncelledi, teşekkürler! – jarv

5

Ansible 1.3'ten itibaren, komut satırında veya bir dosyada, ek varyantlar YAML olarak biçimlendirilebilir. the Ansible documentation titled Passing Variables On The Command Line'a bakın. bağlantısından

: Ben JSON ile çalışıyorum zaman olsun ekstra vars veya başka bir yerde ben http://jsonlint.com kullanımını bulmak, "@ some_file.json"