2016-03-20 28 views
-1
--- 

- hosts: pupservers 
    sudo: yes 

    tasks: 
    - command: bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 2 --partitions 1 --topic my-replicated-topic 
    with_inventory_hostnames: zookservers 

Yukarıdaki kodda, yerel ana bilgisayar yerine envanter dosyasında zookservers olarak bildirilen başka bir değişkenin bir ip adresini çağırmam gerekir. Stok dosyasından envanter dosyasından bir IP adresine nasıl çağrı yapılır/dahil edilir

Ben farklı şeyler denedim ama hiçbir şey benim için çalıştı, önceden, {{ zookservers[ansible_ssh_host] }}

Teşekkür {{ ansible_ssh_host }} aramaya çalıştım.

cevap

1

Sorun, oyununuz pupservers grubuna sınırlıdır. Ansible, yalnızca bir şeyleri çalıştırması gereken ana bilgisayarlarla ilgili gerçekleri bilecek. zookservers, oyununuza dahil olmayan farklı bir gruptur, bu nedenle Ansible bu ana bilgisayarlara bağlanmaz ve gerçekleri toplamaz (ip de dahil)

Ansible grubunun zookservers ana bilgisayarları hakkında gerçekleri bir araya getirme oyun defterine oyna. Yani Taktik kitabı şu şekilde görünecektir:

- hosts: zookservers 

- hosts: pupservers 
    sudo: yes 

    tasks: 
    - ... 

Fact caching başka bir seçenek olacaktır ama bu ihtiyaçlarınız sanırım. Döngünüzden olarak

o zaman

{{ hostvars[item].ansible_eth0.ipv4.address }} 
1
{{ hostvars['zookservers']['ansible_eth0']['ipv4']['address'] }} 
+0

helloV ile IP almak gerekir, yukarıdaki cevabı çalışmıyor. aslında zookservers pupserverlardan başka bir gruptur. ama her ikisi de varsayılan envanter file.my soru nedir ve envanter dosyasından ip adresinin ana bilgisayarlarda bulunmadığı bir oynatma kitabına nasıl ip adrese bağlanacağıdır. –

+0

Nasıl playbook'unuzu çağırırsınız? Komutunu buraya yapıştırabilir misin? Envanter dosya yolunu belirtmek için '-i 'seçeneğini kullanıyor musunuz? – helloV

+0

yanıtlayıcı '-oyun kitabı kafkatest.yaml –