Ansible - Değişkenler
Oyun kitaplarındaki değişkenler very similarherhangi bir programlama dilinde değişkenleri kullanmak. Bir değişkene bir değer atamanıza ve atamanıza ve bunu başucu kitabının herhangi bir yerinde kullanmanıza yardımcı olur. Değişkenlerin değerinin etrafına koşullar koyabilir ve buna göre bunları oyun kitabında kullanabilirsiniz.
Misal
- hosts : <your hosts>
vars:
tomcat_port : 8080
Yukarıdaki örnekte, bir değişken adı tanımladık tomcat_port ve bu değişkene 8080 değerini atayın ve bunu oyun kitabınızda ihtiyaç duyduğunuz her yerde kullanabilirsiniz.
Şimdi paylaşılan örnekten bir referans alarak. Aşağıdaki kod, rollerden birindendir (install-tomcat) -
block:
- name: Install Tomcat artifacts
action: >
yum name = "demo-tomcat-1" state = present
register: Output
always:
- debug:
msg:
- "Install Tomcat artifacts task ended with message: {{Output}}"
- "Installed Tomcat artifacts - {{Output.changed}}"
Burada çıktı kullanılan değişkendir.
Yukarıdaki kodda kullanılan tüm anahtar kelimelerin üzerinden geçelim -
block - Belirli bir bloğu yürütmek için yanıltıcı sözdizimi.
name - İlgili bloğun adı - bu, günlüğe kaydetmede kullanılır ve tüm blokların başarıyla yürütüldüğünde hata ayıklamaya yardımcı olur.
action- İşlem etiketinin yanındaki kod, yürütülecek görevdir. Eylem yine yaml'de kullanılan bir Ansible anahtar kelimesidir.
register - Eylemin çıktısı, kayıt anahtar sözcüğü kullanılarak kaydedilir ve Çıktı, eylem çıktısını tutan değişken adıdır.
always - Yine bir Ansible anahtar sözcüğü, aşağıda her zaman çalıştırılacağını belirtir.
msg - Mesajı görüntüler.
Değişken kullanımı - {{Çıktı}}
Bu değişken Çıktı'nın değerini okuyacaktır. Ayrıca msg sekmesinde kullanıldığı için çıktı değişkeninin değerini yazdıracaktır.
Ek olarak, değişkenin alt özelliklerini de kullanabilirsiniz. {{Output.changed}} çıktısının değiştirilip değiştirilmediğinin kontrol edilmesi ve buna göre kullanılması durumunda olduğu gibi.
Başucu Kitaplarında Özel Durum İşleme
Ansible'da istisna işleme, herhangi bir programlama dilinde istisna işlemeye benzer. Başucu kitabındaki istisna işlemenin bir örneği aşağıda gösterilmiştir.
tasks:
- name: Name of the task to be executed
block:
- debug: msg = 'Just a debug message , relevant for logging'
- command: <the command to execute>
rescue:
- debug: msg = 'There was an exception.. '
- command: <Rescue mechanism for the above exception occurred)
always:
- debug: msg = "this will execute in all scenarios. Always will get logged"
Aşağıda istisna işleme için sözdizimi verilmiştir.
rescue ve always istisna işlemeye özgü anahtar kelimelerdir.
Blok, kodun yazıldığı yerdir (Unix makinesinde yürütülecek her şey).
Blok özelliğinin içine yazılan komut başarısız olursa, yürütme kurtarma bloğuna ulaşır ve yürütülür. Blok özelliği altındaki komutta hata olmaması durumunda kurtarma işlemi gerçekleştirilmeyecektir.
Always her durumda idam edilir.
Aynı şeyi java ile karşılaştırırsak, o zaman try, catch ve nihayet blok'a benzer.
Buraya, Block benzer try block çalıştırılacak kodu nereye yazarsınız ve rescue benzer catch block ve always benzer finally.
Döngüler
Ansible'da Döngülerin kullanımını gösteren örnek aşağıdadır.
Görevler, tüm savaş dosyaları kümesini bir dizinden tomcat webapps klasörüne kopyalamaktır.
Aşağıdaki örnekte kullanılan komutların çoğu daha önce ele alınmıştır. Burada döngülerin kullanımına odaklanacağız.
Başlangıçta 'shell' komutunda ls * .war yaptık. Böylece, dizindeki tüm savaş dosyalarını listeleyecektir.
Bu komutun çıktısı, output adlı bir değişkende alınır.
Döngü yapmak için 'öğelerle birlikte' sözdizimi kullanılıyor.
with_items: "{{output.stdout_lines}}" -> output.stdout_lines bize satır satır çıktı verir ve sonra çıktıda Ansible'ın with_items komutu ile döngü oluştururuz.
Örnek çıktıyı, sadece bir kişinin with_items komutunda stdout_lines'ı nasıl kullandığımızı anlamasını sağlamak için eklemek.
---
#Tsting
- hosts: tomcat-node
tasks:
- name: Install Apache
shell: "ls *.war"
register: output
args:
chdir: /opt/ansible/tomcat/demo/webapps
- file:
src: '/opt/ansible/tomcat/demo/webapps/{{ item }}'
dest: '/users/demo/vivek/{{ item }}'
state: link
with_items: "{{output.stdout_lines}}"
Bloklar
Oyun kitabı, toplamda bloklara bölünmüştür. Yürütülecek en küçük adım parçası blok halinde yazılmıştır. Spesifik talimatı bloklar halinde yazmak, işlevselliği ayırmaya ve gerekirse istisna işleme ile ele almaya yardımcı olur.
Blok örnekleri, değişken kullanım, istisna işleme ve yukarıdaki döngülerde ele alınmıştır.
Şartlılar
Koşul ifadeleri, kişinin bir koşula bağlı olarak belirli bir adımı çalıştırması gerektiğinde kullanılır.
---
#Tsting
- hosts: all
vars:
test1: "Hello Vivek"
tasks:
- name: Testing Ansible variable
debug:
msg: "Equals"
when: test1 == "Hello Vivek"
Bu durumda Eşittir, when koşulunda belirtildiği gibi test1 değişkeni eşit olduğu için yazdırılacaktır. when tüm programlama dillerinde olduğu gibi mantıksal VEYA ve mantıksal AND koşuluyla kullanılabilir.
Merhaba Vivek test1 değişkeninin değerini Merhaba Dünya demek için değiştirin ve çıktıyı görün.