Sobes.tech
Junior

Kaip iškviesti roles Ansible playbook'e?

sobes.tech AI

Atsakymas iš AI

Ansible vaidmenis galima iškviesti keliais būdais playbook'e.

  1. Naudojant roles raktinį žodį playbook'o lygyje:

    # playbooks/my_playbook.yml
    - pavadinimas: vaidmenų taikymas serveriams
      hosts: webservers
      become: taip
      roles:
        - role: common  # 'common' vaidmens iškvietimas
        - role: nginx   # 'nginx' vaidmens iškvietimas
          vars:         # Kintamųjų perdavimas vaidmeniui
            nginx_port: 8080
        - another_role # Trumpesnė iškvietimo forma
    

    Šis būdas taikomas vaidmenims, kurie bus vykdomi seka visiems hosts sekcijoje nurodytiems hostams.

  2. Naudojant include_role modulį užduočių sąraše:

    # playbooks/my_playbook.yml
    - pavadinimas: vaidmenų taikymas su sąlygomis
      hosts: appservers
      tasks:
        - pavadinimas: Duomenų bazės vaidmens įjungimas (tik dev)
          include_role:
            name: database
          when: env == 'dev' # Sąlyginis iškvietimas
    
        - pavadinimas: Programėlės vaidmens įjungimas
          include_role:
            name: app
          vars:
            app_version: 1.2.0 # Kintamųjų perdavimas vaidmeniui
    

    include_role vykdo vaidmenį tarsi tai būtų užduočių sąrašas, įtrauktas į dabartinį playbook'ą. Leidžia naudoti sąlygas (when) ir ciklus (loop) vaidmens vykdymo kontrolei.

  3. Naudojant import_role modulį užduočių sąraše:

    # playbooks/my_playbook.yml
    - pavadinimas: vaidmenų importavimas
      hosts: appservers
      tasks:
        - pavadinimas: Visų hostų vaidmenų importavimas
          import_role:
            name: app
          vars:
            app_config_file: /etc/app/config.conf # Kintamųjų perdavimas
    

    import_role apdorojamas playbook'o analizės etape, prieš jo vykdymą. Tai reiškia, kad visos direktyvos, tokios kaip when, bus taikomos visiems vaidmens užduotims, o vars perduoti kintamieji bus prieinami vaidmenyje.

Pagrindinis skirtumas tarp include_role ir import_role yra laikas: import_role apdorojamas statiniu būdu analizės metu, o include_role — dinamiškai vykdymo metu. Tai įtakoja galimybę naudoti sąlygas ir ciklus:

Funkcija include_role import_role
Apdorojimas Dinamiškas Statinis
when naudojimas Taip Ne
loop naudojimas Taip Ne
Anksčiau apibrėžtų kintamųjų naudojimas Taip Ne

Pasirinkimas priklauso nuo norimo lankstumo ir apdorojimo laiko. Paprastiems vaidmenų įtraukimo būdams dažniausiai pakanka roles arba import_role. Daugiau sudėtingų scenarijų su sąlygomis ir ciklais naudoja include_role.