Puncte:1

Este o formă proastă să creezi un rol Ansible doar pentru stabilirea faptelor?

drapel kg

Am una dintre acele situații în care aș putea scrie un rol cu ​​trei sarcini pentru a căuta, sorta și extrage un set de valori precum:

- nume: Căutați instanțe AMI disponibile
  amazon.aws.ec2_ami_info:
    filtre:...
  înregistrare: _ami_info
    
- nume: sortați după data creării pentru a primi cele mai recente
  ansible.builtin.set_fact:
    _amis: „{{ _ami_info.images | sort(atribut="data_creării", inversă=Adevărat) }}'
    
- nume: setați datele mele pentru cel mai recent AMI
    latest_ami_id: „{{ _amis[0].image_id }}
    ...

Trebuie să fac acest gen de lucruri în câteva manuale diferite, așa că vreau reutilizarea codului.Ceea ce pare mai tare și mai asemănător cu Anible ar fi implementarea unui plugin Lookup, dar sunt multe mai multe linii de Python cu apeluri la Boto3 pentru a face efectiv același lucru (cu excepția returnării detaliilor ca dict).

Se pare că nu găsesc nimic în cele mai bune practici pentru roluri care să acopere acest lucru sau, mai mult ca sigur, îmi lipsește ceva.

Puncte:2
drapel br

Î: Este o formă proastă să creezi un rol Ansible doar pentru stabilirea faptelor?

A: Nu. Nu este. Tu spui tu „vreau reutilizarea codului”. Puneți sarcinile într-un fișier, de ex. tasks/get_latest_ami_id.yml, și creați un rol, de ex. roles/my_lib

shell> cat roles/my_lib/tasks/get_latest_ami_id.yml
- nume: Căutați instanțe AMI disponibile
  amazon.aws.ec2_ami_info:
    filtre:...
  înregistrare: _ami_info
    
- nume: sortați după data creării pentru a primi cele mai recente
  ansible.builtin.set_fact:
    _amis: „{{ _ami_info.images | sort(atribut="data_creării", inversă=Adevărat) }}'
    
- nume: setați datele mele pentru cel mai recent AMI
  ansible.builtin.set_fact:
    latest_ami_id: „{{ _amis[0].image_id }}
    ...

Apoi folosiți oricare include_role sau import_role și rulați sarcinile din manualul dvs. de joc, de ex.

- import_role:
    nume: my_lib
    tasks_from: get_latest_ami_id.yml
  • Vedea Reutilizarea artefactelor Ansible pentru a afla care este diferența dintre includerea și importul.

  • Puteți utiliza acest rol ca o bibliotecă de alte sarcini care pot fi reutilizate.

  • Dacă conduci acest rol, nimic nu se va întâmpla din cauza tasks/main.yml lipseste. Îl puteți crea ca un memento, de ex.

shell> cat roles/my_lib/tasks/main.yml
- depanare:
    msg: Nu rulați acest rol. Este o bibliotecă de sarcini de sine stătătoare.

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.