Sobes.tech
Junior

Kako pozvati uloge u Ansible playbook-u?

sobes.tech АИ

Одговор од АИ

Ролите у Ansible могу се извикати по неколико начина у оквиру плейбука.

  1. Коришћење кључне речи roles на нивоу плейбука:

    # playbooks/my_playbook.yml
    - назив: Примена улога на серверима
      hosts: webservers
      become: да
      roles:
        - role: common  # Позив улоге 'common'
        - role: nginx   # Позив улоге 'nginx'
          vars:         # Пренос променљивих у улогу
            nginx_port: 8080
        - another_role # Скраћени облик позива
    

    Овај начин се користи за позивање улога које ће се извршавати редом за све хостове дефинисане у секцији hosts.

  2. Коришћење модула include_role у листи задатака:

    # playbooks/my_playbook.yml
    - назив: Примена улога са условима
      hosts: appservers
      tasks:
        - назив: Укључивање улоге базе података (само за dev)
          include_role:
            name: database
          when: env == 'dev' # Услов позива улоге
    
        - назив: Укључивање улоге апликације
          include_role:
            name: app
          vars:
            app_version: 1.2.0 # Пренос променљивих у улогу
    

    Модул include_role извршава улогу као да је то листа задатака која је укључена у тренутни плей. Омогућава коришћење услова (when) и петљи (loop) за контролу извршавања улоге.

  3. Коришћење модула import_role у листи задатака:

    # playbooks/my_playbook.yml
    - назив: Импортирање улоге апликације
      hosts: appservers
      tasks:
        - назив: Импортирање улоге за све хостове
          import_role:
            name: app
          vars:
            app_config_file: /etc/app/config.conf # Пренос променљивих
    

    Модул import_role се обрађује у фази парсирања плейбука, пре његовог стварног извршавања. То значи да ће све директиве као што су when бити примењене на све задатке унутар улоге, а не само на сам позив улоге. Променљиве пренесене преко vars биће доступне унутар улоге.

Главна разлика између include_role и import_role је у времену обраде: import_role се обрађује статички у фази парсирања, док се include_role динамички извршава током извршавања плейбука. Ово утиче на могућност коришћења услова и петљи:

Функција include_role import_role
Обрада Динамичка Статичка
Коришћење when за позив Да Не
Коришћење loop за позив Да Не
Могућност коришћења променљивих раније дефинисаних у плейбуку Да Не

Избор између ових метода зависи од захтеване флексибилности и времена обраде. За једноставно укључивање улога обично је довољно кључно слово roles или import_role. За сложеније сценарије са условима и петљама користи се include_role.