paint-brush
Ansible 101: Gerçekler ve Şablonlarla Çalışmakile@cloudkungfu
723 okumalar
723 okumalar

Ansible 101: Gerçekler ve Şablonlarla Çalışmak

ile cloud-kung-fu4m2024/01/30
Read on Terminal Reader

Çok uzun; Okumak

Ansible, uyarlanabilir otomasyon iş akışları oluşturmak için değişkenleri, gerçekleri ve şablonları kullanır. Değişkenler dinamik konfigürasyon yönetimini mümkün kılar, gerçekler sisteme özel bilgiler sağlar ve şablonlar özelleştirilebilir konfigürasyon dosyaları oluşturur. Bu yaklaşım, başucu kitaplarının farklı ortamlarda yeniden kullanılabilir ve esnek olmasını sağlar.
featured image - Ansible 101: Gerçekler ve Şablonlarla Çalışmak
cloud-kung-fu HackerNoon profile picture
0-item

Ansible'da değişkenler ve gerçekler, şablonlarla birlikte esnek otomasyon iş akışları oluşturmaya yönelik temel araçlardır. Değişkenler, yapılandırmalarınızı dinamik olarak yönetmenize ve değiştirmenize olanak tanır. Gerçekler, Ansible'ın uzak sistemlerden topladığı ve bağlama özgü bilgiler sağlayan değişkenlerin özel bir alt kümesidir.


Şablonlar, değişken odaklı yapılandırma dosyalarının oluşturulmasına olanak tanıyarak başucu kitaplarınızın çeşitli ortamlara ve senaryolara uyarlanabilir olmasını sağlar.


Bu araçlar, başucu kitaplarını yeniden kullanılabilir ve uyarlanabilir hale getirerek, sabit kodlama değerlerinden kaçınmanıza olanak tanır ve farklı ortamlar için özelleştirmeye olanak tanır.

Değişkenler ve Gerçekler

Değişkenler, başucu kitabının temel mantığını değiştirmeden parametrelerin değiştirilmesine olanak tanır.

Gerçekler, değişkenler ve şablonlar birlikte nasıl çalışır?

  • Değişken Türleri:
    • Boolean: Doğru veya Yanlış değerler.

    • Liste: Öğelerin sıralı bir koleksiyonu.

    • Sözlük: Karmaşık veri yapıları için anahtar-değer çiftleri.

    • Kayıtlı Değişkenler: Daha sonra başucu kitabınızda kullanılacak görevlerin çıktısını yakalar.

    • Gerçekler: Yönettiğiniz uzak sistemler hakkında ayrıntılar sağlayan otomatik olarak toplanan değişkenler.


Not: Parantez gösterimini kullanarak değişken adlarındaki çakışmaları önleyin.


 - name: Print the distribution of the target hosts: all vars: curr_time: "{{ now() }}" tasks: - name: Distro Check ansible.builtin.debug: msg: "The target system is {{ ansible_facts['distribution'] }}. Timestamp: {{ curr_time }}"

Şablonlar ve Dosyalar

Ansible'daki şablonlar, değişken enterpolasyon, döngüler ve koşullar kullanarak dinamik olarak dosyalar oluşturmak için Jinja2 şablon oluşturma dilini kullanır.


 - name: Write distro name hosts: all tasks: - name: Write distro name ansible.builtin.template: src: distro.j2 dest: /root/distro.txt mode: '644' # src: location of jinja2 template file # dest: location it will be copied to # permissions that will be granted to the file

Pratik

Lighttpd'nin NGINX'inin kurulup kurulmayacağına karar vermek için İşletim Sistemi Ailesini kullanacağız ve ardından, tamamı sabit kodlamalı ana bilgisayar adları olmadan NGINX içeren uzak ana bilgisayara özel bir ana sayfa dağıtacağız.


  1. Repoyu klonlayın.
 git clone https://github.com/perplexedyawdie/ansible-learn.git


2. Dizini gerçekler ve şablonlar olarak değiştirin

 cd ansible-learn/facts-and-templates


3. Docker-compose kullanarak ortamı hızlandırın

 docker compose up -d --build


4. Ansible sunucusuna SSH

 ssh -o StrictHostKeyChecking=no -o NoHostAuthenticationForLocalhost=yes root@localhost -p 2200 # password: test123

Değişkenler ve Gerçekler

5. server_setup.yaml adlı bir taktik kitabı oluşturun. Burada NGINX ve Lighttpd'yi ayarlayacağız ve ardından her uzak ana bilgisayar için dağıtımın adını çıkaracağız.


 - name: Install NGINX on Debian & Lighttpd on RedHat hosts: all vars: dev1: "Debian" dev2: "RedHat" tasks: - name: Install NGINX for Debian-based systems ansible.builtin.apt: name: nginx state: present when: ansible_facts['os_family'] == dev1 - name: Install Lighttpd for RedHat-based systems ansible.builtin.yum: name: lighttpd state: present when: ansible_facts['os_family'] == dev2 - name: Display the distribution ansible.builtin.debug: msg: "The server is running {{ ansible_facts['distribution'] }}"


6. ansible-lint.

 ansible-lint server_setup.yaml


7. Başucu kitabını çalıştırın.

 ansible-playbook --key-file /root/.ssh/id_rsa_ansible -u root -i inventory.yaml server_setup.yaml


8. Kurulumun başarılı olduğunu doğrulayın.

 ssh -i /root/.ssh/id_rsa_ansible root@server3 nginx -V ssh -i /root/.ssh/id_rsa_ansible root@server2 lighttpd -v ssh -i /root/.ssh/id_rsa_ansible root@server1 lighttpd -v

Şablonlar ve Dosyalar

9. index.html.j2 adında bir Jinja2 şablon dosyası oluşturun


İşletim Sistemi Ailesi ve Dağıtımı ile otomatik olarak doldurulacaktır.


 <html> <head> <title>Welcome to {{ ansible_facts['os_family'] }}</title> </head> <body> <h1>Server running on {{ ansible_facts['distribution'] }}</h1> </body> </html>


10.custom_homepage.yaml adlı bir başucu kitabı oluşturun custom_homepage.yaml.


Yukarıda oluşturulan özel ana sayfayı NGINX'e dağıtıyoruz ve ardından sunucuyu yeniden başlatıyoruz.


 - name: Deploy Custom Homepage and restart hosts: all vars: dev1: "Debian" dev2: "RedHat" tasks: - name: Create Homepage with Jinja2 Template for NGINX ansible.builtin.template: src: index.html.j2 dest: /var/www/html/index.html mode: '644' when: ansible_facts['os_family'] == dev1 notify: restart nginx handlers: - name: Restart NGINX listen: "restart nginx" ansible.builtin.service: name: nginx state: restarted when: ansible_facts['os_family'] == dev1


11. Linter'ı çalıştırın.

 ansible-lint custom_homepage.yaml


12. Başucu kitabını çalıştırın.

 ansible-playbook --key-file /root/.ssh/id_rsa_ansible -u root -i inventory.yaml custom_homepage.yaml


13. Tarayıcınızda http://localhost:2203 ziyaret ederek dağıtımı onaylayın.

Özet

Müthiş çaba! 🙌 Bir başucu kitabındaki değişkenleri ve gerçekleri nasıl kullanacağımızı ve şablonları kullanarak dinamik dosyaları nasıl oluşturacağımızı öğrendik. Daha sonra modülerleştirmeye ve hata işlemeye bakacağız. O zamana kadar kendine iyi bak!