Sobes.tech
Junior

Kā izsaukt lomas Ansible playbook?

sobes.tech AI

Atbilde no AI

Ansible lomas var izsaukt vairākos veidos, iekļaujot playbook.

  1. Izmantojot atslēgas vārdu roles playbook līmenī:

    # playbooks/my_playbook.yml
    - nosaukums: Lomu piemērošana serveriem
      hosts: webservers
      become: 
      roles:
        - role: common  # Izsauc lomu 'common'
        - role: nginx   # Izsauc lomu 'nginx'
          vars:         # Pārsūtīt mainīgos lomai
            nginx_port: 8080
        - another_role # Īsāka izsaukuma forma
    

    Šis veids tiek izmantots, lai izsauktu lomus, kas tiks izpildīti secīgi visiem hosts sadaļā norādītajiem hostiem.

  2. Izmantojot include_role moduli uzdevumu sarakstā:

    # playbooks/my_playbook.yml
    - nosaukums: Lomu piemērošana ar nosacījumiem
      hosts: appservers
      tasks:
        - nosaukums: Datubāzes lomas aktivizēšana (tikai dev)
          include_role:
            name: database
          when: env == 'dev' # Nosacījuma izsaukums
    
        - nosaukums: Lietojumprogrammas lomas aktivizēšana
          include_role:
            name: app
          vars:
            app_version: 1.2.0 # Mainīgo pārsūtīšana lomai
    

    include_role izpilda lomu kā daļu no pašreizējā uzdevumu saraksta. Tas ļauj izmantot nosacījumus (when) un ciklus (loop) lomas kontrolei.

  3. Izmantojot import_role moduli uzdevumu sarakstā:

    # playbooks/my_playbook.yml
    - nosaukums: Lomas importēšana
      hosts: appservers
      tasks:
        - nosaukums: Visu hostu lomas importēšana
          import_role:
            name: app
          vars:
            app_config_file: /etc/app/config.conf # Mainīgo pārsūtīšana
    

    import_role tiek apstrādāts plēbuka parsēšanas laikā, pirms tā faktiskās izpildes. Tas nozīmē, ka visas direktīvas, piemēram, when, tiks piemērotas visām lomas uzdevumiem, ne tikai pašam izsaukumam. Mainīgie, kas pārsūtīti ar vars, būs pieejami lomā.

Galvenā atšķirība starp include_role un import_role ir apstrādes laiks: import_role tiek apstrādāts statiski parsēšanas laikā, bet include_role — dinamiski izpildes laikā. Tas ietekmē iespēju izmantot nosacījumus un ciklus:

Funkcija include_role import_role
Apstrāde Dinamiski Statiski
when izmantošana
loop izmantošana
Iepriekš definētu mainīgo izmantošana

Izvēle starp šiem veidiem ir atkarīga no nepieciešamās elastības un apstrādes laika. Vienkāršiem lomiem parasti pietiek ar roles vai import_role. Sarežģītākos scenārijos ar nosacījumiem un cikliem tiek izmantots include_role.