Sobes.tech
Junior

Чӣ гуна ролҳоро дар плейбуки Ansible даъват кардан мумкин аст?

sobes.tech AI

Ҷавоб аз AI

Ролҳои дар 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 тавсия мешавад.