Ansible: Değişken Ekleme Örnekleri

Bu örneklerle, yapılandırmanızı özelleştirmek ve tekrarlayan görevleri kolaylaştırmak için değişkenleri Ansible’a nasıl etkili bir şekilde ekleyeceğinizi öğrenin.

Ansible’da değişkenler, değerleri dinamik olarak tanımlamanıza olanak tanır ve oyun planlarınızı daha esnek ve yeniden kullanılabilir hale getirir. Değişkenleri etkili bir şekilde kullanarak yapılandırma yönetiminizi kolayca özelleştirebilir ve tekrarlayan görevleri kolaylaştırabilirsiniz.

Bu kılavuzda, Ansible’da değişkenleri eklemenin ve kullanmanın farklı yollarını detaylı örneklerle inceleyeceğiz.

Ansible’da değişkenler neden kullanılır?

Ansible’daki değişkenler şunları yapmanıza olanak tanır:

  • Yapılandırmayı basitleştirin ve yedekliliği azaltın.
  • Farklı ortamları (örneğin geliştirme, hazırlama, üretim) kolaylıkla yönetin.
  • Sabit kodlamayı azaltarak oyun kitaplarını daha okunabilir ve sürdürülebilir hale getirin.

include_vars kullanımı

include_vars modülü, harici bir dosyadaki değişkenleri oyun kitaplarınıza eklemenize olanak tanır. Bu, değişkenlerinizi daha iyi okunabilirlik ve yeniden kullanılabilirlik için ayrı dosyalarda düzenlemek istediğinizde kullanışlıdır.

Örnek:

Aşağıdaki içeriğe sahip app_vars.yml adlı bir dosyayı ele alalım:

# app_vars.yml
app_name: "MyApp"
app_version: "1.0.0"

Bu değişkenleri include_vars kullanarak bir oyun kitabına dahil edebilirsiniz:

- name: Include variables from a file
  hosts: all
  tasks:
    - name: Include app variables
      include_vars: app_vars.yml

    - name: Use included variables
      debug:
        msg: "Deploying {{ app_name }} version {{ app_version }}"

Bu oyun kitabı app_vars.yml’deki değişkenleri içerecek ve bunları dağıtım sırasında kullanacaktır.

Değişkenleri koşullu olarak dahil etme

Bazen belirli koşullara bağlı olarak değişkenleri eklemeniz gerekebilir. include_vars modülü, ana bilgisayar grupları veya ortam değişkenleri gibi faktörlere bağlı olarak bir dosyayı koşullu olarak eklemenize olanak tanır.

Örnek:

Farklı ortamlar için iki değişken dosyanız olduğunu varsayalım:

  • dev_vars.yml geliştirme için
  • prod_vars.yml üretim için

Bu değişkenleri koşullu olarak nasıl dahil edebileceğiniz aşağıda açıklanmıştır:

- name: Include environment-specific variables
  hosts: all
  tasks:
    - name: Include variables based on environment
      include_vars: "{{ env }}_vars.yml"
      when: env is defined

    - name: Use included environment variables
      debug:
        msg: "Environment: {{ env }}"

Bu örnekte, env değeri hangi değişken dosyasının dahil edileceğini belirleyecektir.

Döngüdeki her öğe için değişkenleri dahil etme

Bir döngüdeki her öğe için farklı değişken dosyaları eklemek isteyebileceğiniz senaryolarınız olabilir. Bu, birden fazla yapılandırmayı dinamik olarak yönetirken faydalı olabilir.

Örnek:

Farklı uygulamalar için ayrı değişken dosyalarınız olduğunu varsayalım:

  • app1_vars.yml
  • app2_vars.yml

Bu değişken dosyalarını bir döngü kullanarak ekleyebilirsiniz:

- name: Include variables for each app
  hosts: all
  tasks:
    - name: Include app-specific variables
      include_vars: "{{ item }}_vars.yml"
      loop:
        - app1
        - app2

    - name: Use included variables
      debug:
        msg: "Configured app: {{ app_name }}"

Bu örnekte, include_vars her bir öğeyi dolaşacak ve ilgili değişken dosyasını ekleyecektir.

Harici dosyalardan değişkenleri dahil etme

Değişkenleri ayrı dosyalarda düzenlemek, oyun kılavuzlarınızı temiz ve modüler tutar. Harici dosyalardan değişkenleri vars_files veya include_vars kullanarak ekleyebilirsiniz.

Örnek:

common_vars.yml adında bir değişken dosyası tanımlayın:

# common_vars.yml
timezone: "UTC"

Bu dosyayı oyun kitabınıza ekleyin:

- name: Include external variables
  hosts: all
  vars_files:
    - common_vars.yml
  tasks:
    - name: Display timezone
      debug:
        msg: "The configured timezone is {{ timezone }}"

vars_files’ı kullanmak, birden fazla görev ve rolde ortak değişkenleri eklemeyi kolaylaştırır.

Ansible Vault’tan değişkenleri dahil etme

Ansible Vault, parolalar veya API anahtarları gibi hassas verileri şifrelemenize olanak tanır. Bu değişkenleri güvenli bir şekilde eklemek için include_vars komutunu kullanabilirsiniz.

Örnek:

vault.yml adında şifrelenmiş bir dosya oluşturun:

Hassas değişkenlerinizi ekleyin:

# vault.yml
db_password: "supersecret"

Şifrelenmiş dosyayı oyun kitabınıza ekleyin:

- name: Include variables from Ansible Vault
  hosts: all
  tasks:
    - name: Include encrypted variables
      include_vars: vault.yml

    - name: Display database password
      debug:
        msg: "The database password is {{ db_password }}"

Değişkenleri şifresini çözmek ve kullanmak için playbook’u çalıştırırken kasa parolasını sağlamanız gerekecektir.

Çalışma zamanında değişkenleri tanımlamak için set_fact’i kullanma

set_fact modülü, playbook çalışması sırasında değişkenleri dinamik olarak tanımlamak için kullanılır. Bu, özellikle görev çıktısına veya diğer çalışma zamanı koşullarına dayalı değerler oluşturmak için kullanışlıdır.

Örnek:

- name: Set variables at runtime
  hosts: all
  tasks:
    - name: Set a fact
      set_fact:
        app_status: "deployed"

    - name: Use runtime variable
      debug:
        msg: "The application is {{ app_status }}"

set_fact modülü, app_status’u çalışma zamanında ayarlayarak sonraki görevlerde kullanıma hazır hale getirir.

Yazının orijinalini buradan okuyabilirsiniz.

Hüseyin GÜÇ

Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım. Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum. Son 6 yıldır  sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum. Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.