Puncte:0

Executați o sarcină de la o gazdă într-un rol și delegați altă sarcină altei gazde cu alt rol

drapel ph
azk


Context:

Am un proiect cu două roluri.
Am redus numărul de sarcini la cele problematice pentru o mai bună înțelegere.


Problemă:
Rulez o sarcină de la un rol1 în server1 și încerc să deleg o sarcină unui virtualizator vmware din condiția din prima sarcină de rol server1. Și o gazdă eșuează deoarece dorește să execute a doua sarcină de rol (Vmware) în server1.


Eroarea:

fatal: [testhost]: FAILED! => {"motivul": "Declarații de acțiune conflictuale: gazde, 
gather_facts\n\nEroarea pare să fie în „/home/ancible/proyects/extend_fs-role/roles/vmwaretaks/tasks/addvmwaredisk.yml”: linia 2, coloana 3, 
dar poate\nsă fie în altă parte a fișierului, în funcție de problema tntax.\n\nRândul ofensator pare să fie:\n\n---\n- gazde: localhost\n ^ aici\n"}


Iată structura:

.
âââ colecții
â  âââ cerințe.yml
âââ README.md
âââ resizefs_hosts.yml
âââ roluri
    âââ redimensionează
    â  âââ implicite
    â  â  âââ main.yml
    â  âââ manipulatori
    â  â  âââ main.yml
    â  âââ meta
    â  â  âââ main.yml
    â  âââ sarcini
    â  â  âââ main.yml
    â  â  âââ findfreedisk.yml
    â  âââ teste
    â  â  âââ inventar
    â  â  âââ test.yml
    â  âââ vars
    â  âââ main.yml
    âââ vmwaretaks
        âââ implicite
        â  âââ main.yml
        âââ fișiere
        âââ manipulatori
        â  âââ main.yml
        âââ meta
        â  âââ main.yml
        âââ README.md
     Â âââ sarcini
      â  âââ main.yml
      â  âââ addvmwaredisk.yml
        âââ șabloane
        âââ teste
        â  âââ inventar
        â  âââ test.yml
        âââ vars
            âââ principal.yml


Acesta este ordinul de executare în cazul în care nu găsiți un lun gratuit în gazdă:

resizefs_role_hosts.yml -> roles/resizefs/tasks/main.yml -> roles/resizefs/tasks/findfreedisk.yml -> \
roles/vmwaretaks/tasks/main.yml -> roles/vmwaretaks/tasks/addvmwaredisk.yml


Iată cum arată cărțile de joc:

$ cat resizefs_role_hosts.yml
---
- gazde: testhost
  deveni: da
  deveni_metoda: sudo
  roluri:
    - rol: „roluri/redimensionări”
$ cat roles/resizefs/tasks/main.yml
---
# fișier de activități pentru create_fs-test
- import_tasks: findfreedisk.yml
$ cat roles/resizefs/tasks/findfreedisk.yml

- nume: Găsirea discului fără partiții
  set_fact:
    discuri: „/dev/{{outer_item.key}}”
  când:
    - nu outer_item.value.partitions
    - nu outer_item.value.links.ids
    - outer_item.key este căutare ("sd")
  with_dict: „{{ansible_devices}}”
  loop_control:
    loop_var: element_exterior
  anunta:
    - Format_disc_liber
  changed_when: adevărat

- nume: Tipăriți numele discului, dacă este disponibil
  depanare:
    mesaj:
      - „{{ discuri|implicit(„NU DISK GRATUIT”) }} Disponibil”

# Dacă discul nu este disponibil, adăugați un nou lun de la Vmware
- include_role:
    nume: vmwaretaks
  când: discurile este nedefinită
$ cat roles/vmwaretaks/tasks/main.yml
---
# fișier de activități pentru add-new-vmware-lun
- import_tasks: addvmwaredisk.yml
$ cat roles/vmwaretaks/tasks/addvmwaredisk.yml

---
- gazde: localhost
  gather_facts: adevărat

  vars:
    vcenter_hostname: „vcenter.labo.local”
    vcenter_username: „labo.local\ansible”
    vcenter_password: „{{ vault_pass }}”
    target_host: „TESTHOST”
    vm_uuid: '4217B33E-014D-E056-0719-45AD3AC1861E'
    vm_unit_number: '5'

  sarcini:
    - nume: Adăugați discuri la mașina virtuală folosind UUID
      vmware_guest_disk:
        nume gazdă: „{{ vcenter_hostname }}”
        nume de utilizator: „{{ vcenter_username }}”
        parola: „{{ vcenter_password }}”
        datacenter: „{{ vcenter_hostname }}”
        uuid: „{{ vm_uuid | inferior }}”
        validate_certs: nu
        disc:
          - dimensiune_gb: 10
            tip: „gros”
            stare: „prezent”
            autoselect_datastore: da
            scsi_controller: '0'
            scsi_type: „paravirtual”
            unit_number: '5'
            disk_mode: „independent_persistent”
      delegate_to: localhost

Încercam să găsesc modalitatea de a-i spune că al doilea rol nu este executat în server, ci în virtualizatorul vmware, dar fără noroc.
Dacă rulez addvmwaredisk.yml ca un playbook, acesta rulează perfect

Sper că poți ajuta!

mulțumesc anticipat!

Puncte:1
drapel th

gazde și sarcini sunt cuvinte cheie de redare, nu pot fi utilizate în cadrul unei liste de sarcini. Pentru a executa sarcini pe o altă gazdă decât gazda de redare curentă, utilizați delegație; pentru a grupa sarcinile conexe și pentru a aplica directive tuturor, utilizați a bloc.

- delegate_to: localhost
  vars:
    vcenter_hostname: „vcenter.labo.local”
    vcenter_username: „labo.local\ansible”
    vcenter_password: „{{ vault_pass }}”
    target_host: „TESTHOST”
    vm_uuid: '4217B33E-014D-E056-0719-45AD3AC1861E'
    vm_unit_number: '5'
  bloc:
    - nume: Adăugați discuri la mașina virtuală folosind UUID
      vmware_guest_disk:
        nume gazdă: „{{ vcenter_hostname }}”
        nume de utilizator: „{{ vcenter_username }}”
        parola: „{{ vcenter_password }}”
        datacenter: „{{ vcenter_hostname }}”
        uuid: „{{ vm_uuid | inferior }}”
        validate_certs: nu
        disc:
          - dimensiune_gb: 10
            tip: „gros”
            stare: „prezent”
            autoselect_datastore: da
            scsi_controller: '0'
            scsi_type: „paravirtual”
            unit_number: '5'
            disk_mode: „independent_persistent”
azk avatar
drapel ph
azk
Am încercat să implementez soluția ta, dar îmi dă o eroare: `EROARE! nu a fost detectat niciun modul/acțiune în sarcină. Eroarea pare să fie în „/ansible/proyects/extend_fs-role/roles/vmwaretaks/tasks/getvmdiskinfo.yml”: linia 1, coloana 3, dar poate fi în altă parte în fișier, în funcție de problema exactă de sintaxă. Linia ofensiva pare a fi: - delegate_to: localhost ^ aici` Caut modul: `$ ansible-doc -l|grep -i delegat zfs_delegate_admin Gestionați administrarea delegată ZFS (privilegii de administrator al utilizatorului)`
azk avatar
drapel ph
azk
$ ansible-playbook --version ansible-playbook 2.9.19
flowerysong avatar
drapel th
Aceasta înseamnă că aveți o problemă de sintaxă care nu este prezentă în fragmentul de cod pe care l-am furnizat (are o acțiune în toate sarcinile sale.) Fără a vedea codul dvs. actualizat, nu avem cum să vă spunem ce ați greșit.
Puncte:0
drapel ph
azk

Ei bine, recent am rezolvat-o doar adăugând devenit: nu

- delegate_to: localhost
  devenit: nu
  delegate_facts: da

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.