I (ANSIBLE_HOST) üzerinden envanter dosyasını belirterek ama sadece tarafından olmaksızın Python yanıtlayıcı 'çalıştırmak istiyorum. Öte yandan, python için Ansible API'sinin dokümantasyonu gerçekten tamamlanmamıştır.Envanteri ancak ana bilgisayarı belirtmeden doğrudan Ansible nasıl çalıştırılır? Aslında kolayca kumaş yapabilirsiniz</p> <pre><code>ansible.run.Runner( module_name='ping', host='www.google.com' ) </code></pre> <p>ama sadece Python bunun nasıl yapılacağı merak:
cevap
Bu tam bir yanıt değil, ancak bu konu hakkında this discussion thread numaralı telefondan tartışma var. Bu ileti dizisindeki ilk gönderinin sonunda, ansible-playbook'la ilgili bir sarıcı bash betiği oluşturmak için bir öneri yapılır;
Gözönünde bulundurduğum diğer şeyler 'ansible-pull' kullanımı ve mümkün olan envanter eklentisinin oluşturulmasıdır. Ben de bu sorunun cevabını bulmakla ilgileniyorum ve daha fazla bilgi bulabildiğim için bu cevabı güncelleyeceğim.
Şaşırtıcı bir şekilde, hile, bir ana bilgisayar adını veya IPv4/v6 adresini olabilir ,
önceki bir ,
# Host and IP address
ansible all -i example.com,
ansible all -i 93.184.216.119,
veya
# Requires 'hosts: all' in your playbook
ansible-playbook -i example.com, playbook.yml
ana parametre eklemektir. ("Bütün" veya yapmak) konaklarda ne olursa olsun
hosts = ["webserver1","webserver2"]
webInventory = ansible.inventory.Inventory(hosts)
webPing = ansible.runner.Runner(
pattern='webserver*',
module_name='ping',
inventory = webInventory
).run()
envanter haline gelir ve desenle onu arayabilir:
Sen ile yapabilirsiniz.
modülü, local_action bağlamında nasıl çalıştırılacağını biliyorsunuz, örneğin ec2 modülleri localhost (agains localhost (127.0.0.1) ve local_action olarak çağrılmalıdır. teşekkürler – kamiseq
nevermind, kendi soruma cevap :-) runner = ansible.Runner ( modül_ismi = "ec2_group", complex_args = {} çatal = Paralel, # private_key_file = "~/.ssh/office.pem", stok = Ölçeği ([ "127.0.0.1"]), transport = "yerel" ) return runner.run() – kamiseq
Ayrıca, Ansible Python API'u sürmeye ihtiyacım vardı ve konakları bir envanteri tutmak yerine argüman olarak geçirmeyi tercih ediyorum. Başkalarına yararlı olabilen yanıtlayıcı 'ihtiyacına etrafında almak için geçici dosya kullandı:
from tempfile import NamedTemporaryFile
from ansible.inventory import Inventory
from ansible.runner import Runner
def load_temporary_inventory(content):
tmpfile = NamedTemporaryFile()
try:
tmpfile.write(content)
tmpfile.seek(0)
inventory = Inventory(tmpfile.name)
finally:
tmpfile.close()
return inventory
def ping(hostname):
inventory = load_temporary_inventory(hostname)
runner = Runner(
module_name='ping',
inventory=inventory,
)
return runner.run()
Bu soru gerçekten eski olduğunu biliyorum ama düşünüyorum bunun için ihtiyaç eklenecek kullanıcılar için bu küçük bir hile kudreti:
ansible-playbook -i '10.254.3.133,' site.yml
yerel ana bilgisayar için çalıştırırsanız:
ansible-playbook -i 'localhost,' --connection=local site.yml
hüner ip adresi/dns adından sonra, tırnak içinde virgül koymak ve 'gerektirir Kitabınızda'.
Bu yardımcı olacaktır umarım.
Değeri için, teklifler burada no-op vardır. Eğer '' localhost '' veya 'localhost '' kullanırsanız, her iki durumda da 'ansible-playbook' kabuktan aynı argümanı alır. Ve '' localhost '', aynı şekilde değerlendirir (burada anahtar, argümanlar komutunuza geçmeden önce kabuk tarafından yorumlanır). – larsks
Bu çalışır, ancak Merlin'in sakalı isminde neden issanın parçası üzerinde bu kabul edilebilir davranış ?! İnsanların bunu tam olarak nasıl bilmesi bekleniyor? Saçımı söndürerek düzeltmeyi aradım. – ffledgling
- 1. Git, <<<<<<< HEAD dosyasına
- 2. <: <İş nasıl?
- 3. nasıl sadece ana dalına iten anladığım kadarıyla komut</p> <pre><code>git push <url> </code></pre> <p>itmeye kullanmak zannediyorsunuz ne anlıyoruz ancak budala
- 4. Kanal seç <- <- Kanal
- 5. Java, bitshifts kullanırken, neden 1 << 32! = 1 << 31 << 1?
- 6. EJS: <% = versus <% -
- 7. nasıl <code>initialize</code> içine <code>define_method</code> kullanmaya çalışıyor ama undefined_method <code>define_method</code> alma()
- 8. İçindeki eleman sayısı <5 in <a1 <0</ a1><T>
- 9. Delphi uygulamasını gizli ana formla nasıl başlatabilirim? Uygulama başladığında,</p> <pre><code>Application.CreateForm(<class>, <variable>); </code></pre> <p>ana biçimini gösterir:
- 10. Nedir? ve << demek?
- 11. "<%:" ne yapıyor?</p> <pre><code><%: Model.FirstName %> </code></pre> <p>"<%:" Ne vermez: do
- 12. Şu izle ifadem tutan bana gösteriyor Şu anda bir</p> <pre><code>Expression<Func<T,bool>> </code></pre> <p>bir</p> <pre><code>Expression<Func<T,object>> </code></pre> <p>dönüştürmek çalışıyorum
- 13. <nedir? ve <? php
- 14. PHP .. <p></p> bir IP örneği olarak <br> ile aynı nasıl yapılacağı, IP
- 15. <section>, <nav> ve <article>
- 16. Akış çıkışında <yerine <neden hala <çoğum?
- 17. WScript? <pre><code>WSHShell = WScript.CreateObject("WScript.Shell") </code></pre> <p>Ama nedense</p>, "WScript" ilan edilmez:
- 18. Perl: bunun <code>$b</code> sonunda</p> <ul> <li><pre><code>{ 'b' => { 'c' => 1, 'd' => 1, 'e' => 1 } }; </code></pre></li> </ul> <p>: Bunun sonunda referansı
- 19. Sadece</p> <p>tarafından python'da döngü
- 20. Mac'imde hangi Python sürümü var?</p> <pre><code>python --version </code></pre> <p>aldım:
- 21. Bot'um argümanlarla nasıl yanıt verir?</p> <ul> <li><code>/list</code></li> <li><code>/info 123</code></li> </ul> <p>Ben <code>/info</code> yakalamak ve gibi ek argümanlar iletebilirsiniz gibi bu harika çalışıyor:
- 22. XPath - tüm elemanlar alt elemanlara belge</p> <pre><code><a> <b> <c/> <d/> </b> <b> <c/> <d/> </b> </a> </code></pre> <p>Verilen
- 23. İçinde Gettext kullanarak PHP <<< EOF dizgisi
- 24. HTTP indirme nasıl çalışır?</p> <pre><code>GET /example.pdf HTTP/1.1␍␊ Host: www.xxx.yyy␍␊ ␍␊ </code></pre> <p>Ama önümüzdeki budur:
- 25. Objective-C'de özel yönergeler oluşturmak mümkün mü?</p> <ul> <li>@interface</li> <li>@implementation</li> <li>@end</li> <li>@protocol bence</li> <li>@property</li> <li>@synthesize</li> </ul> <p>:
- 26. Django <input><label>
- 27. Doğru <2 nasıl uygulanır?
- 28. Android: Bir parça örneği düzenini nasıl etiket yoluyla alabilirim? .</p> <pre><code>fragmentTransaction.add(R.id.templateFragmentLayout, frag2, fragString); </code></pre> <p>Ama iç içe yaşıyorum parçası kendisidir:
- 29. Url parametreler dışında nasıl url talep edilir?</p> <pre><code><link rel="canonical" href="<%= request.url %>" /> </code></pre> <p>sorundur sadece parametreleri içeren tam url:
- 30. dize değeri ben</p> <pre><code>string val = null; </code></pre> <p>gibi boş ayarlayabilirsiniz farkındayım Ama bunu boş olarak ayarlayabilirsiniz başka yollar merak ediyorum
IPv6, Ansible> = 1.3 ile çalışır. – trkoch
Ansible 1.9.1'de ansible-playbook'u çağırdığınızda, komut satırından "all" i kaldır, ancak playbook.yml içinde bırakın. Bu doğru cevap "ansible-playbook -i example.com, playbook.yml" – PinoSan
Sonra, herhangi bir sunucu ile çalışabilmesi için oyun defterinde ne "host" olarak ayarlamalıyım? Oyun kitabında – azmeuk