2016-03-18 17 views
0

Dinamik bir envanter dosyası oluşturmaya çalışıyorum. Ben de json üreten bir program yazdım. Programımı bir liste seçeneği olmadan veya başka bir seçenekle arayabilmek istiyorum (--listenin bir yerine yazılabilir mi?). Bu mümkün değilse, sadece bir JSON dosyası kullanarak bir stok dosyası (bir seçenek ile bir yürütülebilir dosya olmadan) oluşturmak için bir seçenek var mı? Bu fikir, json dosyasının oynatma kitabı için envanter olduğuDinamik envanter dosyasını json dosyası veya yürütülebilir dosyası olmadan oluşturuluyor

ansible-playbook playbook.yml -i test.json 

olacaktır. Şu anda ben aşağıdaki hatayı alırsınız bu yöntemi denediğinizde:

ERROR! ERROR! host range must be begin:end or begin:end:step 

THis Im doğrudan json yüklemek için nasıl emin değilim

{ 
    "myname":{ 
     "hosts":[ 
     "host1.company.biz", 
     "host2.company.biz", 
     "host3.company.biz", 
     "host4.company.biz" 
     ], 
     "vars":{ 
     "ansible_ssh_private_key_file":"/home/keys/.ssh/id_dev", 
     "ansible_ssh_private_key_file":"/home/keys/.ssh/id_staging", 
     "ansible_ssh_private_key_file":"/home/keys/.ssh/id_staging_uk" 
     } 
    } 
} 

cevap

1

ile çalışan json, ama bildiğim Python kullanarak bir çalışma. Önceden oluşturulmuş bu json dosyasına sahipseniz. Anlık-oyun kitabı ile arayabileceğiniz basit bir python betiği yazabilirsiniz. Python dosyasını test.py ve json test.json çağırır. İşte

Örneğim oyun kitabı olduğunu .. İşte
--- 
- name: run command on on host4 
    hosts: 'host4.company.biz' 
    vars: 
    foo: "{{ lookup('file', 'tmp.txt') }}" 
    tasks: 
    - debug: var=foo 

örnek piton dinamik envanter komut ... (+ x piton senaryo üzerinde chmodlamayı emin olun)

#!/usr/bin/env python 
from json import dumps, loads 
test_file = loads(open('test.json', 'r').read()) 
print dumps(test_file, indent=4) 

ansible-playbook -i test.py -u host4.company.biz -vvvv test.yml --connection=local. 

Örnek çıkışı ..

ok: [host4.company.biz] 

TASK [debug] 
******************************************************************* 
task path: /home/linuxdynasty/test.yml:7 
File lookup using /home/linuxdynasty/tmp.txt as file 
ok: [host4.company.biz] => { 
"foo": [ 
    "1", 
    "2", 
    "3", 
    "4" 
] 

}

Bunu, 2.01

kullanarak test ettim
İlgili konular