Puncte:0

Rol ansible, este posibil să se definească variabile în mod condiționat?

drapel ng

Am un rol Ansible care utilizează o mulțime de variabile și, deoarece acele variabile sunt condiționate după configurarea serverului (cum ar fi versiunea de sistem de operare pe care o folosește), directorul meu „MyRole/vars” este plin de fișiere diferite pentru diferite cazuri.

În „MyRole/vars” am:

  • RedHat6_install.yml
  • Redhat7_install.yml
  • RedHat8_install.yml
  • RedHat6_uninstall.yml
  • RedHat7_uninstall.yml
  • RedHat8_uninstall.yml

Și așa mai departe...

Mă întrebam dacă este posibil să grupez variabile într-un singur fișier și să creez o condiție ca:

main.yml:

    - uninstall_var_1
      când: >
            ansible_distribution_major_version == 6
    - uninstall_var_2
      când: >
            ansible_distribution_major_version == 7
    - uninstall_var_3
      când: >
            ansible_distribution_major_version == 8

și așa mai departe...
drapel br
Vedeți [al_include_os_vars_path.yml](https://github.com/vbotka/ansible-lib/blob/master/tasks/al_include_os_vars_path.yml) cum să utilizați *first_found* și [al_include_os_vars_path_incr.yml](https://github. com/vbotka/ansible-lib/blob/master/tasks/al_include_os_vars_path_incr.yml) pentru a include incremente.
Puncte:0
drapel cz

Probabil că există modalități mai bune de a face asta și aștept cu nerăbdare să le văd, dar ceea ce fac în prezent seamănă foarte mult cu asta. Preluat dintr-un rol personalizat fail2ban pe care îl folosesc:

Vars-urile arată așa. Am fișiere vars pentru fiecare {{ansible_os_family}} și apoi suprascrie pentru oricare {{ansible_distribution}}_{{ansible_distribution_major_version}} care ar putea avea nevoie de ele.

$ ls -l
lrwxrwxrwx. 1 eroare de eroare 24 mai 7 07:51 fail2ban_os_CentOS_6.yml -> fail2ban_os_RedHat_6.yml
lrwxrwxrwx. 1 eroare de eroare 22 mai 7 07:51 fail2ban_os_CentOS.yml -> fail2ban_os_RedHat.yml
-rw-rw-r--. 1 eroare de eroare 64 7 mai 07:51 fail2ban_os_Debian.yml
-rw-rw-r--. 1 eroare de eroare 64 7 mai 07:51 fail2ban_os_Fedora.yml
-rw-rw-r--. 1 eroare de eroare 62 7 mai 07:51 fail2ban_os_RedHat_6.yml
-rw-rw-r--. 1 eroare de eroare 64 7 mai 07:51 fail2ban_os_RedHat.yml
-rw-rw-r--. 1 eroare de eroare 62 7 mai 07:51 fail2ban_os_Ubuntu_14.yml
-rw-rw-r--. 1 eroare de eroare 65 7 mai 07:51 fail2ban_os_Ubuntu.yml
$ cat fail2ban_os_Ubuntu.yml 
fail2ban_backend: systemd
fail2ban_banaction: iptables-multiport
$ cat fail2ban_os_Fedora.yml 
fail2ban_backend: systemd
fail2ban_banaction: firewallcmd-ipset

Pentru a încărca aceste fișiere, roles/fail2ban/tasks/main.yml incepe asa:

---
- include_vars: fail2ban_os_{{ansible_os_family}}.yml
  ignore_errors: Adevărat

- include_vars: fail2ban_os_{{ansible_distribution}}_{{ansible_distribution_major_version}}.yml
  ignore_errors: Adevărat

Ceea ce înseamnă că fișierele variabile nu trebuie să existe. Desigur, dacă variabilele necesare nu sunt definite undeva, sarcinile ulterioare vor eșua și apoi puteți defini orice ați omis.

Pentru a menține lucrurile consecvente și ușor de întreținut, fișierele vars ale familiei de sisteme de operare generale conțin vars reprezentând cele mai recente distribuții acceptate, iar înlocuirile pentru anumite versiuni de distribuție sunt pentru distribuțiile mai vechi.

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.