Sobes.tech
Junior

Kuidas kutsuda rolle Ansible'i playbook'is?

sobes.tech AI

Vastus AI-lt

Ansible'i rollid saab kutsuda mitmel viisil playbook'i raames.

  1. Kasutades võtmesõna roles playbook'i tasemel:

    # playbooks/my_playbook.yml
    - nimi: Rollide rakendamine serveritele
      hosts: webservers
      become: jah
      roles:
        - role: common  # Kutsutakse roll 'common'
        - role: nginx   # Kutsutakse roll 'nginx'
          vars:         # Välja saadetavad muutujad rollile
            nginx_port: 8080
        - another_role # Lühendatud kutsumise vorm
    

    Seda meetodit kasutatakse rollide kutsumiseks, mis järjekorras täidetakse kõigil hosts sektsioonis määratletud hostidel.

  2. Kasutades include_role moodulit ülesannete nimekirjas:

    # playbooks/my_playbook.yml
    - nimi: Rollide rakendamine tingimustega
      hosts: appservers
      tasks:
        - nimi: Andmebaasi rolli aktiveerimine (ainult dev)
          include_role:
            name: database
          when: env == 'dev' # Tingimuslik kutsumine
    
        - nimi: Rakenduse rolli aktiveerimine
          include_role:
            name: app
          vars:
            app_version: 1.2.0 # Muutujate edastamine rollile
    

    include_role täidab rolli nagu see oleks ülesannete nimekiri, mis on lisatud käesolevasse playbook'i. See võimaldab kasutada tingimusi (when) ja tsükleid (loop) rolli kontrollimiseks.

  3. Kasutades import_role moodulit ülesannete nimekirjas:

    # playbooks/my_playbook.yml
    - nimi: Rolli importimine
      hosts: appservers
      tasks:
        - nimi: Kõigi hostide rolli importimine
          import_role:
            name: app
          vars:
            app_config_file: /etc/app/config.conf # Muutujate edastamine
    

    import_role töödeldakse playbook'i parsimise etapis enne selle tegelikku täitmist. See tähendab, et kõik direktiivid, nagu when, rakenduvad kõigile rolli ülesannetele, mitte ainult kutsumisele. Muutujad, mis edastatakse vars kaudu, on saadaval rolli sees.

Peamine erinevus include_role ja import_role vahel on töötlemise aeg: import_role töödeldakse statiliselt parsimise ajal, include_role aga dünaamiliselt täitmise ajal. See mõjutab võimalust kasutada tingimusi ja tsükleid:

Funktsioon include_role import_role
Töötlemine Dünaamiline Statiline
when kasutamine Jah Ei
loop kasutamine Jah Ei
Võimalus kasutada eelnevalt määratletud muutujaid playbook'is Jah Ei

Valik nende meetodite vahel sõltub nõutavast paindlikkusest ja töötlemise ajast. Lihtsate rollide kaasamiseks piisab tavaliselt roles või import_role. Keerulisemate stsenaariumide puhul, kus on tingimused ja tsüklid, kasutatakse include_role.