Score:0

ไวยากรณ์ของ Hostvar ไม่สามารถรับตัวแปรพิเศษเป็นชื่อโฮสต์ได้

ธง ph
azk

ฉันกำลังพยายามใช้ vars พิเศษเพื่อตั้งชื่อโฮสต์ในตัวแปร "hostvars" เพื่อรับ uuid จากโฮสต์อื่น แต่ดูเหมือนว่าจะไม่จับค่าของตัวแปร
นี่คือเส้นวิ่ง:

$ ansible-playbook -i ../Inventory/my_inventory --vault-id vaultfile getuuid.yml -e vmname=testhost

นี่คือคู่มือการเล่น

---
- โฮสต์: localhost
  Gather_facts: จริง

  วาร์:
    vcenter_hostname: 'vcenter.bio.local'
    vcenter_username: 'bio.local\ansible'
    vcenter_password: !vault |
          $ANSIBLE_VAULT;1.1;AES256
          33376437643462306363663235353732613838623561616532383236633563663938656236643861
          3562366533306633386632356265623664396562636665360a323039396464336561383865386661
          37383766643536313639313337363263653537613238396136393581373932633166343834383162
          3735643035403631620a613666363336656634646436336336393238393866303133633265383461
          6434
    target_host: "{{ vmname }}" 
    vm_uuid: "{{ hostvars[target_host]['ansible_product_uuid'] }}"

  งาน:
    - ชื่อ: เจ้าภาพพิมพ์
      แก้ปัญหา:
        ข้อความ: "{{ vm_uuid }}"

นี่คือผลลัพธ์ของข้อผิดพลาด

เล่น [โฮสต์ในพื้นที่] *********************************************** ************************************************** ************************

TASK [รวบรวมข้อเท็จจริง] ********************************************* ************************************************** *******************
ตกลง: [localhost]

TASK [โฮสต์การพิมพ์] ********************************************* ************************************************** ************************
ร้ายแรง: [localhost]: ล้มเหลว! => {"msg": "งานมีตัวเลือกที่มีตัวแปรที่ไม่ได้กำหนด ข้อผิดพลาดคือ: {{ hostvars[target_host]['ansible_product_uuid'] }}: 'ansible.vars.hostvars.HostVarsVars object' has no attribute ' ansible_product_uuid'\n\nข้อผิดพลาดดูเหมือนจะอยู่ใน '/user/getuuid.yml': บรรทัดที่ 23 คอลัมน์ 7 แต่อาจ\nอยู่ที่อื่นในไฟล์ ทั้งนี้ขึ้นอยู่กับปัญหาทางไวยากรณ์ที่แน่นอน\n\nบรรทัดที่ละเมิดดูเหมือนจะเป็น :\n\n งาน:\n - ชื่อ: โฮสต์การพิมพ์\n ^ ที่นี่\n"}

เล่น RECAP ************************************************ ************************************************** ****************************
localhost: ตกลง=1 เปลี่ยนแปลง=0 ไม่สามารถเข้าถึงได้=0 ล้มเหลว=1 ข้าม=0 ช่วยชีวิต=0 ละเว้น=0
in flag
ansible รวบรวมข้อเท็จจริงสำหรับ `target_host` หรือไม่ คุณไม่สามารถใช้ข้อเท็จจริงสำหรับโฮสต์เป้าหมายได้ เว้นแต่คุณจะรวบรวมข้อเท็จจริงนั้น หรือคุณเปิดใช้งานการแคชข้อเท็จจริง และแคชยังคงใช้ได้ จะเกิดอะไรขึ้นถ้าคุณทำการ `debug` บน var `hostvars[target_host]`
azk avatar
ph flag
azk
target_host รับตัวแปรพิเศษ "vmname" ที่รับชื่อโฮสต์พร้อมตัวเลือก -e เมื่อฉันเรียกใช้ playbook
azk avatar
ph flag
azk
เสียใจ. ฉันพยายามที่จะได้รับคุณค่าที่ไม่ได้รวบรวม ขอบคุณสำหรับความช่วยเหลือ !!
br flag
หากโฮสต์เดียวคือ ``localhost`` แสดงว่าไม่มี ``hostvars`` อื่นนอกจาก ``hostvars.localhost`` ที่สามารถเล่นได้ ทดสอบมัน พิมพ์ข้อเท็จจริงที่มีอยู่ แก้ไขคำถามและทำให้เป็น [Minimal, Reproducible Example](https://stackoverflow.com/help/minimal-reproducible-example) ลบตัวแปรและโค้ดที่ซ้ำซ้อน เช่น 1) ลบ ``ตัวแปร vcenter_*`` 2) ลบตัวเลือก ``-i`` และ ``--vault-id`` ตัวเลือกไม่ส่งผลต่อปัญหา คุณไม่ได้ให้ไฟล์อยู่แล้ว
Score:0
ธง ph
azk

ไม่ได้รวบรวม ansible_product_uuid ตัวแปร hostvars ทำงานได้ดี

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา