Sobes.tech
Junior

Ansible playbook-da rolları necə çağırmaq olar?

sobes.tech Süni İntellekt

AI-dan cavab

Ansible-də rollar bir neçə yolla çağırıla bilər.

  1. Playbook səviyyəsində roles açar sözündən istifadə:

    # playbooks/my_playbook.yml
    - name: Serverlərə rollar tətbiq et
      hosts: webservers
      become: yes
      roles:
        - role: common  # 'common' rolunu çağırır
        - role: nginx   # 'nginx' rolunu çağırır
          vars:         # Rol üçün dəyişənlər ötürür
            nginx_port: 8080
        - another_role # Qısaldılmış çağırış forması
    

    Bu metod hosts bölməsində təyin olunmuş bütün hostlar üçün ardıcıl olaraq icra olunacaq rolların çağırılması üçün istifadə olunur.

  2. include_role modulundan tapşırıq siyahısında istifadə:

    # playbooks/my_playbook.yml
    - name: Şərtlərlə rollar tətbiq et
      hosts: appservers
      tasks:
        - name: Yalnız inkişaf üçün verilənlər bazası rolunu daxil et
          include_role:
            name: database
          when: env == 'dev' # Şərtlə çağırış
    
        - name: Tətbiq rolunu daxil et
          include_role:
            name: app
          vars:
            app_version: 1.2.0 # Dəyişənləri ötürür
    

    include_role modulu rolu hazırkı play-ə daxil edilmiş tapşırıq kimi icra edir. Şərtlər (when) və dövrlər (loop) istifadə etməyə imkan verir.

  3. import_role modulundan tapşırıq siyahısında istifadə:

    # playbooks/my_playbook.yml
    - name: Tətbiq rolunu idxal et
      hosts: appservers
      tasks:
        - name: Bütün hostlar üçün tətbiq rolunu idxal et
          import_role:
            name: app
          vars:
            app_config_file: /etc/app/config.conf # Dəyişənləri ötürür
    

    import_role modulu playbook-un analiz mərhələsində işlənir və onun icrasından əvvəl baş verir. Bu, when kimi direktivlərin rol daxilindəki bütün tapşırıqlara tətbiq olunacağı və yalnız rol çağırışına deyil, bütün tapşırıqlara şamil ediləcəyi deməkdir. vars vasitəsilə ötürülən dəyişənlər rol daxilində mövcud olacaq.

include_roleimport_role arasındakı əsas fərq işləmə vaxtıdır: import_role statik olaraq analiz mərhələsində işlənir, include_role isə dinamik olaraq playbook-un icrası zamanı işlənir. Bu, şərtlər və dövrlərdən istifadə imkanına təsir edir:

Funksiya include_role import_role
İşləmə vaxtı Dinamik Statik
when istifadə edilərək çağırış Bəli Xeyr
loop istifadə edilərək çağırış Bəli Xeyr
Əvvəlki play-də təyin olunmuş dəyişənlərin istifadəsi Bəli Xeyr

Hansı metodun seçilməsi tələb olunan elastiklik və işləmə vaxtından asılıdır. Sadə rolların daxil edilməsi üçün adətən roles və ya import_role kifayət edir. Daha mürəkkəb ssenarilər üçün şərtlər və dövrlər ilə include_role istifadə olunur.