Puncte:0

Ansible - Nu s-a putut imprima valoarea faptului personalizat

drapel ph
azk


Acesta este un manual de joc care face parte dintr-un rol care vorbește cu vmware.
Încerc să stabilesc un fapt personalizat (target_vm) care primesc numele mașinii virtuale.
Dar când imprimez valoarea sa cu modulul de depanare pare să fie goală.
Se pare că set_fact este setat corect deoarece ieșirea de depanare arată {"ansible_facts": {"target_vm": "TESTVM"}.
De asemenea, am făcut o sarcină Fail care dezvăluie dacă faptul target_vm este setat sau nu.

Acesta este Playbook-ul

- delegate_to: localhost
  devenit: nu
  delegate_facts: da
  vars:
    vc_hostname: „vcenter.bio.local”
    vc_username: „bio.local\ansible”
    vc_password: „{{ v_pass }}”
    vm_uuid: '4217200F-46D2-C9FD-E7FD-768D21B327E8' | inferior
  bloc:
    - nume: Adună numai mașini virtuale înregistrate
      vmware_vm_info:
        nume de gazdă: „{{ vc_hostname }}”
        nume de utilizator: „{{ vc_username }}”
        parola: „{{ vc_password }}”
        validate_certs: False
        vm_type: vm
      delegate_to: localhost
      înregistrare: virtual_info
      no_log: adevărat

  - nume: Obțineți numele VM din UUID
    set_fact:
      target_vm: „{{ my_item.guest_name }}”
    buclă: „{{ virtual_info.virtual_machines }}”
    când: my_item.uuid == vm_uuid
    loop_control:
      loop_var: elementul_meu
    delegate_to: localhost
    delegate_facts: Adevărat
  
  - nume: Verificați că numele interfeței este setat
    eșuează:
      msg: "Nu s-a putut determina numele target_vm!"
    când: target_vm nu este definit
  
  - nume: Print Output
    depanare:
      msg: "Numele VM este: {{ target_vm }}"


Aceasta este ieșirea

SARCINA [vmwaretaks: Obțineți numele VM din 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', 'atribute': {}, 'tags': []}) => {"ansible_facts": {"target_vm": "TESTVM"}, " ansible_loop_var": "my_item", "schimbat": false, "my_item": {"atribute": {}, "cluster": "JAS-Lab-DEP", "esxi_hostname": "b3j15esx05.bio.local", " guest_fullname": "Red Hat Enterprise Linux 6 (64 de biți)", "guest_name": "TESTVM", "ip_address": "192.168.54.32", "mac_address": ["00:32:52:97:e9: c8"], "power_state": "poweredOn", "etichete": [], "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"]}}}}

SARCINA [vmwaretaks: Verificați că numele interfeței este setat] **************************************** ****************************************
fatal: [testvm]: FAILED! => {"schimbat": false, "msg": "Nu s-a putut determina numele target_vm!"}

JOACĂ RECAPITULARE ************************************************ **************************************************** ********************
testvm: ok=13 schimbat=0 inaccesibil=0 eșuat=1 omis=2 salvat=0 ignorat=0
Puncte:0
drapel th

Tu ai delegate_facts: Adevărat pe set_fact sarcină, așa că setați variabila pentru localhost. Apoi încercați să îl accesați în contextul gazdei de redare, care nu îl are setat.

Trebuie să decideți unde doriți să îl setați. Dacă localhost este corect, trebuie să îl accesați prin hostvars (hostvars['localhost']['testvm']); dacă nu este, trebuie să eliminați delegate_facts.

azk avatar
drapel ph
azk
Ești un om bun @flowerysong. Am accesat în mod greșit faptul target_vm. Modul hostvars face ideea. Vă mulțumesc că m-ați instruit!

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.