Điểm:0

Ansible - Không thể in giá trị của thực tế tùy chỉnh

lá cờ ph
azk


Đây là một phần playbook của vai trò nói chuyện với vmware.
Tôi đang cố thiết lập một dữ kiện tùy chỉnh (mục tiêu_vm) nhận tên máy ảo.
Nhưng khi tôi In giá trị của nó bằng mô-đun gỡ lỗi thì nó có vẻ trống.
Nó nối rằng set_fact được đặt chính xác vì đầu ra gỡ lỗi hiển thị {"ansible_facts": {"target_vm": "TESTVM"}.
Tôi cũng đã thực hiện một tác vụ Fail cho biết liệu thực tế target_vm có được đặt hay không.

Đây là Playbook

- ủy nhiệm_to: máy chủ cục bộ
  trở thành: không
  delegate_facts: có
  lọ:
    vc_hostname: 'vcenter.bio.local'
    vc_username: 'bio.local\ansible'
    vc_password: "{{ v_pass }}"
    vm_uuid: '4217200F-46D2-C9FD-E7FD-768D21B327E8' | thấp hơn
  chặn:
    - tên: Chỉ thu thập các máy ảo đã đăng ký
      vmware_vm_info:
        tên máy chủ: '{{ vc_hostname }}'
        tên người dùng: '{{ vc_username }}'
        mật khẩu: '{{ vc_password }}'
        xác thực_certs: Sai
        vm_type: vm
      ủy nhiệm_to: máy chủ cục bộ
      đăng ký: virtual_info
      no_log: đúng

  - name: Nhận tên VM từ UUID
    set_fact:
      target_vm: "{{ my_item.guest_name }}"
    vòng lặp: "{{ virtual_info.virtual_machines }}"
    khi nào: my_item.uuid == vm_uuid
    loop_control:
      loop_var: my_item
    ủy nhiệm_to: máy chủ cục bộ
    delegate_facts: Đúng
  
  - tên: Xác minh tên giao diện được đặt
    Thất bại:
      msg: "Không thể xác định tên target_vm!"
    khi nào: target_vm không được xác định
  
  - tên: Đầu Ra In
    gỡ lỗi:
      msg: "Tên VM là: {{ target_vm }}"


Đây là đầu ra

NHIỆM VỤ [vmwaretaks: Nhận tên VM từ UUID] ****************************************** ************************************************
ok: [testvm] => (item={'guest_name': 'TESTVM', 'guest_fullname': 'Red Hat Enterprise Linux 6 (64-bit)', 'power_state': 'poweredOn', 'ip_address': '192.168 .54.32', 'mac_address': ['00:32:52:97:e9:c8'], 'uuid': '4217200f-46d2-c9fd-e7fd-768d21b327e8', 'vm_network': {'00:32: 52:97:e9:c8': {'ipv4': ['192.168.54.32'], 'ipv6': ['fe80::250:56ff:fe97:d4c3']}}, 'esxi_hostname': 'b3j15esx05. bio.local', 'cluster': 'JAS-Lab-DEP', 'attributes': {}, 'tags': []}) => {"ansible_facts": {"target_vm": "TESTVM"}," ansible_loop_var": "my_item", "đã thay đổi": sai, "my_item": {"thuộc tính": {}, "cụm": "JAS-Lab-DEP", "esxi_hostname": "b3j15esx05.bio.local", " guest_fullname": "Red Hat Enterprise Linux 6 (64-bit)", "guest_name": "TESTVM", "ip_address": "192.168.54.32", "mac_address": ["00:32:52:97:e9: c8"], "power_state": "poweredOn", "tags": [], "uuid": "4217200f-46d2-c9fd-e7fd-768d21b327e8", "vm_network": {"00:32:52:97:e9 :c8": {"ipv4": ["192.168.54.32"], "ipv6": ["fe80::250:56ff:fe97:d4c3"]}}}}

NHIỆM VỤ [vmwaretaks: Xác minh tên giao diện được đặt] ****************************************** ******************************************
gây tử vong: [testvm]: KHÔNG THÀNH CÔNG! => {"đã thay đổi": sai, "thông điệp": "Không thể xác định tên target_vm!"}

TÓM TẮT CHƠI *************************************************** *************************************************** *********************
testvm : ok=13 đã thay đổi=0 không truy cập được=0 thất bại=1 bị bỏ qua=2 đã giải cứu=0 bị bỏ qua=0
Điểm:0
lá cờ th

Bạn có delegate_facts: Đúng trên set_fact tác vụ, vì vậy bạn đang đặt biến cho máy chủ cục bộ. Sau đó, bạn đang cố truy cập nó trong ngữ cảnh của máy chủ phát không được đặt.

Bạn phải quyết định nơi bạn muốn đặt nó. Nếu đúng localhost thì bạn cần truy cập qua hostvars (hostvars['localhost']['testvm']); nếu không, bạn cần phải loại bỏ đại biểu_facts.

azk avatar
lá cờ ph
azk
Bạn đúng rồi @flowerysong. Tôi đã truy cập sai cách vào thực tế target_vm. Cách hostvars làm cho điểm. Cảm ơn bạn đã chỉ dẫn cho tôi!

Đă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.