Sobes.tech
Junior

როგორ დავძახოთ როლები Ansible-ის playbook-ში?

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 пайдаланылады.