คุณสามารถเข้าถึงข้อเท็จจริง / ตัวแปรคลังโฆษณาได้โดยทำสิ่งนี้:
{{ hostvars['foo.example.com']['ansible_eth0']['ipv4']['address'] }}
หรือถ้าคุณต้องการที่จะทำมันผ่านดัชนีในกลุ่ม:
{{ hostvars[groups['collectors'][0]]['ansible_eth0']['ipv4']['address'] }}
เคล็ดลับสำคัญคือคุณต้องรวบรวมข้อเท็จจริงสำหรับโฮสต์ / กลุ่มทั้งหมดที่คุณสนใจดังนั้นคุณต้องการแก้ไข playbook ของคุณที่ทำงานกับกลุ่มนักข่าวเพื่อรวมงาน no-op (dummy) ที่ใช้ ไปยังกลุ่มนักสะสม นั่นจะทำให้ Ansible รวบรวมข้อเท็จจริงเกี่ยวกับโฮสต์นักสะสมเพื่อให้พวกเขาสามารถเข้าถึงได้จากกลุ่มนักข่าว ดังนั้นคุณอาจต้องการเพิ่มบางสิ่งเช่นนี้ไว้ด้านบนของ playbook ผู้รายงานของคุณ:
- hosts: collectors
name: Gather facts from collectors
tasks: [ ]
วงเล็บที่ว่างเปล่าโดยทั่วไปหมายความว่าจะไม่มีงานใดถูกดำเนินการ แต่สิ่งนี้จะยังบังคับให้ Ansible รวบรวมข้อเท็จจริงเกี่ยวกับนักสะสมเพื่อที่คุณจะสามารถอ้างอิงพวกเขาในงานที่คุณทำกับนักข่าวของคุณ
แก้ไข # 1
มันเกิดขึ้นกับฉันที่ฉันควรจะพูดถึงว่าในรุ่น 1.8 ของ Ansible มีคุณสมบัติแคชจริงที่มีอยู่ในขณะนี้ การแคชข้อมูลจริงอาศัยเซิร์ฟเวอร์ Redis เพื่อจัดเก็บข้อเท็จจริงระหว่าง Playbook ที่รัน ด้วยการเปิดใช้งาน playbook หนึ่งสามารถอ้างอิงข้อเท็จจริงที่ playbook อื่นได้รับมาก่อนหน้านี้ได้ ตัวอย่างเอกสาร Ansible ให้:
ลองนึกภาพตัวอย่างเช่นโครงสร้างพื้นฐานขนาดใหญ่ที่มีโฮสต์นับพัน การแคชข้อมูลจริงสามารถกำหนดค่าให้ทำงานทุกคืนได้ แต่การกำหนดค่าเซิร์ฟเวอร์ขนาดเล็กสามารถเรียกใช้แบบเฉพาะกิจหรือเป็นระยะตลอดทั้งวัน ด้วยการเปิดใช้งานการแคชจริงมันไม่จำเป็นที่จะต้อง“ กดปุ่ม” เซิร์ฟเวอร์ทั้งหมดเพื่ออ้างอิงตัวแปรและข้อมูลเกี่ยวกับพวกเขา