Sobes.tech
Junior

Ansible playbook'unda rolleri nasıl çağırırsınız?

sobes.tech yapay zeka

AI'dan gelen yanıt

Ansible'daki roller, bir playbook içinde birkaç farklı şekilde çağrılabilir.

  1. Playbook seviyesinde roles anahtar kelimesinin kullanımı:

    # playbooks/my_playbook.yml
    - name: Sunuculara roller uygula
      hosts: webservers
      become: yes
      roles:
        - role: common  # 'common' rolünü çağır
        - role: nginx   # 'nginx' rolünü çağır
          vars:         # Role değişkenleri ilet
            nginx_port: 8080
        - another_role # Kısaltılmış çağrı şekli
    

    Bu yöntem, hosts bölümünde tanımlanan tüm ana bilgisayarlarda sıralı olarak çalıştırılacak rollerin çağrılması içindir.

  2. Görev listesinde include_role modülünün kullanımı:

    # playbooks/my_playbook.yml
    - name: Koşullarla roller uygulama
      hosts: appservers
      tasks:
        - name: Sadece geliştirme ortamı için veritabanı rolünü dahil et
          include_role:
            name: database
          when: env == 'dev' # Koşullu çağrı
    
        - name: Uygulama rolünü dahil et
          include_role:
            name: app
          vars:
            app_version: 1.2.0 # Role değişkenleri ilet
    

    include_role modülü, rolü mevcut play'e dahil edilmiş bir görev listesi gibi çalıştırır. Koşullar (when) ve döngüler (loop) kullanarak rolün çalışmasını kontrol etmeye imkan tanır.

  3. import_role modülünün görev listesinde kullanımı:

    # playbooks/my_playbook.yml
    - name: Uygulama rolünü içe aktar
      hosts: appservers
      tasks:
        - name: Tüm ana bilgisayarlarda uygulama rolünü içe aktar
          import_role:
            name: app
          vars:
            app_config_file: /etc/app/config.conf # Değişkenleri ilet
    

    import_role modülü, playbook'un analiz aşamasında işlenir ve gerçek yürütmeden önce gerçekleşir. Bu, when gibi direktiflerin rol içindeki tüm görevlere uygulanacağı anlamına gelir ve sadece rol çağrısına değil, rol içindeki tüm görevleri etkiler. vars ile iletilen değişkenler, rol içinde kullanılabilir hale gelir.

include_role ve import_role arasındaki temel fark, işleme zamanlarıdır: import_role statik olarak analiz aşamasında işlenirken, include_role playbook çalıştırılırken dinamik olarak işlenir. Bu, koşullar ve döngülerin kullanılabilirliğini etkiler:

İşlev include_role import_role
İşleme Dinamik Statik
when kullanımı Evet Hayır
loop kullanımı Evet Hayır
Önceden tanımlanmış değişkenleri kullanma Evet Hayır

Hangi yöntemin kullanılacağı, gereken esneklik ve işleme zamanına bağlıdır. Basit roller dahil etmek için genellikle roles veya import_role yeterlidir. Daha karmaşık senaryolar, koşullar ve döngüler için include_role tercih edilir.