Sobes.tech
Junior

Ansible ойноштук китепчесинде ролдорду кантип чакырырга болот?

sobes.tech AI

AIден жооп

Ansible-деги ролдорду бир нече жол менен чакырса болот.

  1. Playbookтин деңгээлинде 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 колдонулат.