"Enter"a basıp içeriğe geçin

Ansible Variables / Değişkenler

Değişkenler inventory ya da playbook dosyamız üzerine tanımladığımız değerlerin playbooklar içerisine direk yazılmaması ve inventoryde tanımlı değerin playbook içerisine değişkenler ile tanımlanmasında kullanılmaktadır.

Biraz örnek yapmak gerekirse,

Playbook.yml adında bir palybookum var. Aşağıdaki şekilde playbook içerisine vars: altında değişkenim dns_server olarak tanımlanmıi. taskslar altında ise yapılacak işlemler adım adım belirtilmiş. Tasks altında bulunan nameserver içerisindeki ip adresini değişkenimiz olarak güncellenmesi, atanmış değerin aktif kullanımına güzel bir örnek olacaktır.

-
  Name: add dns server to resolv.conf
  hosts: localhost
   vars:
     dns_server: 10.1.250.10
   tasks:
     - lineinfile:
           path:/etc/resolv.conf
           line: 'nameserver 10.1.250.10'
-
  Name: add dns server to resolv.conf
  hosts: localhost
   vars:
     dns_server: 10.1.250.10
   tasks:
     - lineinfile:
           path:/etc/resolv.conf
           line: 'nameserver {{ dns_server }}'

Multible firewall konfigurasyonu yaptığımız bir playbook üzerinde de ilgili işlemleri nasıl yaparız inceleyelim. Bu sefer inventory içerisinden değişkenlerimizi çağıralım. playbookumuzun mevcut hali aşağıdaki gibidir.

-
 name: Set Firewall Configurations
 hosts: web
 tasks: 
  - firewalld:
     service: https
     permanent: true
     state: enabled

  - firewalld:
     port:8081/tcp
     permanent: true
     state: diasbled
   
   - firewalld:
      port: 161-162/udp
      permanent: true
      state: disabled

    - firewalld:
       source: 192.0.2.0/24
       zone: internal
       state: enabled

Inventory dosyamıza bu değişkenlerimizi tanımlayalım.

#sample Inventory file
Web http_port:8081 snmp_port=161-162 inter_ip_range=192.0.2.0

Değişkenler Jinja2 templating olarak playbook içerisinde kullanılır parantezler ” tırnak içerisine alınır.

-
 name: Set Firewall Configurations
 hosts: web
 tasks: 
  - firewalld:
     service: https
     permanent: true
     state: enabled

  - firewalld:
     port: '{{http_port}}'/tcp
     permanent: true
     state: diasbled
   
   - firewalld:
      port: '{{snmp_port}}'/udp
      permanent: true
      state: disabled

    - firewalld:
       source: '{{inter_ip_range}}'/24
       zone: internal
       state: enabled

Inventory dosyası yanı sıra değişken file da oluşturulabilir. web.yml gibi.

#sample varible file - web.yml

http_port: 8081
snmp_port: 161-162
inter_ip_range: 192.0.2.0

İnternetten bulmuş olduğum bazı örnekleri de aşağıda paylaşıyorum.

-
    name: 'Update nameserver entry into resolv.conf file on localhost'
    hosts: localhost
    tasks:
        -
            name: 'Update nameserver entry into resolv.conf file'
            lineinfile:
                path: /etc/resolv.conf
                line: 'nameserver 10.1.250.10'
# Sample Inventory File

localhost ansible_connection=localhost nameserver_ip=10.1.250.10

Bizlerden beklenen ise resolv.conf içerisinde tanımlanmış olna nameserver_ip değerinin inventoryden alınıp resolv.conf içerisine yazılması.

-
    name: 'Update nameserver entry into resolv.conf file on localhost'
    hosts: localhost
    tasks:
        -
            name: 'Update nameserver entry into resolv.conf file'
            lineinfile:
                path: /etc/resolv.conf
                line: 'nameserver {{  nameserver_ip  }}'
# Sample Inventory File

localhost ansible_connection=localhost nameserver_ip=10.1.250.10

Playbook’ta SNMP portunu devre dışı bırakmak için yeni bir görev ekledik. Ancak bağlantı noktası, oyun kitabında sabit kodlanmıştır. Yeni bir snmp_port değişkeni eklemek için envanter dosyasını güncelleyin ve burada kullanılan değeri atayın. Ardından, değişkenden gelen değeri kullanmak için çalışma kitabını güncelleyin.

Mevcut yapımız,

-
    name: 'Update nameserver entry into resolv.conf file on localhost'
    hosts: localhost
    tasks:
        -
            name: 'Update nameserver entry into resolv.conf file'
            lineinfile:
                path: /etc/resolv.conf
                line: 'nameserver {{ nameserver_ip }}'
        -
            name: 'Disable SNMP Port'
            firewalld:
                port: 160-161
                permanent: true
                state: disabled
# Sample Inventory File

localhost ansible_connection=localhost nameserver_ip=10.1.250.10

Değişkenler kullanılarak işlemlerin tamamlanmış hali,

-
    name: 'Update nameserver entry into resolv.conf file on localhost'
    hosts: localhost
    tasks:
        -
            name: 'Update nameserver entry into resolv.conf file'
            lineinfile:
                path: /etc/resolv.conf
                line: 'nameserver {{ nameserver_ip }}'
        -
            name: 'Disable SNMP Port'
            firewalld:
                port: '{{ snmp_port }}'
                permanent: true
                state: disabled
# Sample Inventory File

localhost ansible_connection=localhost nameserver_ip=10.1.250.10 snmp_port=160-161

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir