Sobes.tech
Junior

Hogyan hívhatók meg a szerepek az Ansible playbookban?

sobes.tech MI

Válasz az MI-től

Az Ansible szerepköröket többféleképpen lehet hívni a playbookon belül.

  1. A roles kulcsszó használata a playbook szintjén:

    # playbooks/my_playbook.yml
    - név: Szerepkörök alkalmazása a szervereken
      hosts: webservers
      become: igen
      roles:
        - role: common  # A 'common' szerepkör hívása
        - role: nginx   # Az 'nginx' szerepkör hívása
          vars:         # Változók átadása a szerepkörnek
            nginx_port: 8080
        - another_role # Rövidített hívási forma
    

    Ez a módszer a szerepkörök hívására szolgál, amelyek egymás után kerülnek végrehajtásra minden, a hosts szekcióban megadott hoszton.

  2. Az include_role modul használata a feladatok listájában:

    # playbooks/my_playbook.yml
    - név: Szerepkörök alkalmazása feltételekkel
      hosts: appservers
      tasks:
        - név: Adatbázis szerepkör bekapcsolása (csak fejlesztéshez)
          include_role:
            name: database
          when: env == 'dev' # Feltétel szerinti hívás
    
        - név: Alkalmazás szerepkör bekapcsolása
          include_role:
            name: app
          vars:
            app_version: 1.2.0 # Változók átadása
    

    Az include_role modul úgy végzi a szerepkört, mintha az egy feladatsor lenne, amelyet a jelenlegi playbookba illesztettek be. Lehetővé teszi feltételek (when) és ciklusok (loop) használatát a szerepkör végrehajtásának irányítására.

  3. Az import_role modul használata a feladatok listájában:

    # playbooks/my_playbook.yml
    - név: Alkalmazás szerepkör importálása
      hosts: appservers
      tasks:
        - név: Az alkalmazás szerepkör importálása minden hosztra
          import_role:
            name: app
          vars:
            app_config_file: /etc/app/config.conf # Változók átadása
    

    Az import_role modul a playbook értelmezése során, a végrehajtás előtt kerül feldolgozásra. Ez azt jelenti, hogy minden direktíva, mint például a when, az összes szerepkörön belüli feladatra alkalmazódik, nem csak a hívásra. A vars-on keresztül átadott változók elérhetőek a szerepkörön belül.

A fő különbség az include_role és az import_role között az időzítés: az import_role statikus, a playbook értelmezésekor történik, míg az include_role dinamikusan, a futás során. Ez befolyásolja a feltételek és ciklusok használatát:

Funkció include_role import_role
Feldolgozás Dinamikus Statikus
when használata a híváshoz Igen Nem
loop használata a híváshoz Igen Nem
Lehetőség a korábban definiált változók használatára a playbookban Igen Nem

A módszer kiválasztása a kívánt rugalmasságtól és feldolgozási időtől függ. Egyszerű szerepkörök esetén általában elegendő a roles kulcsszó vagy az import_role. Bonyolultabb forgatókönyvekhez, feltételekkel és ciklusokkal, a include_role ajánlott.