Điểm:0

Cú pháp Hostvar không thể nhận thêm biến làm tên máy chủ

lá cờ ph
azk

Tôi đang cố gắng sử dụng một vars bổ sung để đặt tên máy chủ trong biến "hostvars" để lấy uuid từ máy chủ lưu trữ khác. Nhưng có vẻ như không bắt được giá trị của biến.
Đây là dòng chạy:

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

Đây là vở kịch

---
- máy chủ: localhost
  thu thập_sự thật: đúng

  lọ:
    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'] }}"

  nhiệm vụ:
    - tên: Máy chủ in
      gỡ lỗi:
        msg: "{{ vm_uuid }}"

Đây là kết quả Lỗi

CHƠI [máy chủ cục bộ] ************************************************ *************************************************** ***************************

NHIỆM VỤ [Thu thập thông tin] ********************************************* *************************************************** ************************
được rồi: [máy chủ cục bộ]

NHIỆM VỤ [Máy ​​in] ********************************************* *************************************************** ***************************
gây tử vong: [localhost]: KHÔNG THÀNH CÔNG! => {"thông điệp": "Tác vụ bao gồm một tùy chọn có biến không xác định. Lỗi là: {{ hostvars[target_host]['ansible_product_uuid'] }}: 'đối tượng ansible.vars.hostvars.HostVarsVars' không có thuộc tính ' ansible_product_uuid'\n\nCó vẻ như lỗi nằm trong '/user/getuuid.yml': dòng 23, cột 7, nhưng có thể\nở nơi khác trong tệp tùy thuộc vào vấn đề cú pháp chính xác.\n\nDòng vi phạm dường như là :\n\n nhiệm vụ:\n - tên: Máy chủ in\n ^ tại đây\n"}

TÓM TẮT CHƠI *************************************************** *************************************************** ******************************
localhost : ok=1 thay đổi=0 không truy cập được=0 thất bại=1 bỏ qua=0 giải cứu=0 bỏ qua=0
lá cờ in
Ansible có thực sự thu thập thông tin về `target_host` không? Bạn không thể sử dụng dữ liệu cho máy chủ đích trừ khi bạn thu thập dữ liệu đó hoặc bạn đã bật bộ nhớ đệm dữ liệu và bộ đệm vẫn hợp lệ. Điều gì xảy ra nếu bạn chỉ thực hiện `gỡ lỗi` trên var `hostvars[target_host]`?
azk avatar
lá cờ ph
azk
target_host nhận thêm biến "vmname" nhận tên máy chủ với tùy chọn -e khi tôi chạy playbook
azk avatar
lá cờ ph
azk
Xin lỗi. Tôi đã cố gắng để có được giá trị không được thu thập. Cảm ơn đã giúp đỡ!!
lá cờ br
Nếu máy chủ lưu trữ duy nhất là ``localhost`` thì không có ``hostvars`` nào khác ngoại trừ ``hostvars.localhost`` khả dụng để phát. Kiểm tra nó. In một thực tế hiện có. Chỉnh sửa câu hỏi và biến nó thành [Ví dụ tối thiểu, có thể lặp lại](https://stackoverflow.com/help/minimal-reproductible-example). Loại bỏ các biến và mã dư thừa, ví dụ: 1) Xóa ``biến vcenter_*`` 2) Xóa tùy chọn ``-i`` và ``--vault-id``. Các tùy chọn không ảnh hưởng đến vấn đề. Bạn không cung cấp các tập tin anyway.
Điểm:0
lá cờ ph
azk

Ansible_product_uuid không được thu thập. Biến hostvars hoạt động tốt.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.