Î: 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.