Anda dapat mengakses hampir semua fakta / variabel inventaris dengan melakukan sesuatu seperti ini:
{{ hostvars['foo.example.com']['ansible_eth0']['ipv4']['address'] }}
atau, jika Anda ingin melakukannya melalui indeks ke grup:
{{ hostvars[groups['collectors'][0]]['ansible_eth0']['ipv4']['address'] }}
Trik besarnya adalah Anda perlu mengumpulkan fakta-fakta untuk semua host / grup yang Anda minati. Jadi, Anda ingin memodifikasi buku pedoman Anda yang bertentangan dengan grup reporter untuk menyertakan tugas no-op (dummy) yang diterapkan ke grup kolektor. Itu akan menyebabkan Ansible mengumpulkan fakta tentang tuan rumah kolektor sehingga mereka dapat diakses dari grup reporter. Jadi, Anda mungkin ingin menambahkan sesuatu seperti ini ke bagian atas buku pedoman reporter Anda:
- hosts: collectors
name: Gather facts from collectors
tasks: [ ]
Kurung kosong pada dasarnya berarti bahwa tidak ada tugas yang akan dieksekusi, tetapi ini masih akan memaksa Anda untuk mengumpulkan fakta tentang kolektor sehingga Anda kemudian dapat merujuknya pada tugas yang Anda jalankan terhadap wartawan Anda.
Edit # 1
Terpikir oleh saya bahwa saya juga harus menyebutkan bahwa pada versi 1.8 dari Ansible, ada fitur caching fakta yang sekarang tersedia. Caching fakta bergantung pada server redis untuk menyimpan fakta di antara run playbook. Dengan mengaktifkannya, satu buku pedoman dapat merujuk fakta yang diperoleh oleh buku pedoman lain yang dijalankan sebelumnya. Contoh dokumentasi Ansible memberi:
Bayangkan, misalnya, infrastruktur yang sangat besar dengan ribuan host. Caching fakta dapat dikonfigurasikan untuk dijalankan setiap malam, tetapi konfigurasi satu set kecil server dapat menjalankan ad-hoc atau secara berkala sepanjang hari. Dengan fakta-caching diaktifkan, tidak akan perlu untuk "memukul" semua server untuk referensi variabel dan informasi tentang mereka.