task automation using ansible playbooks
Hassas verileri korumak için Ansible oyun kitaplarını ve Ansible kasalarını kullanarak görev otomasyonunu öğrenin:
Önceki Ansible öğreticimizde # 1 , Ansible'ın farklı bileşenlerini ve bu aracın çeşitli modüllerle nasıl kurulup yapılandırılacağını öğrendik. Modüllerin bir işlevi veya görevi gerçekleştirmek için nasıl kullanıldığını da gördük.
Bu bölümde, hassas verileri korumak için Ansible oyun kitaplarını ve Ansible kasalarını kullanan görev otomasyonuna bakacağız.
Önerilen Okuma => DevOps için Öğrenme Kılavuzu
en iyi youtube mp3 dönüştürücü çevrimiçi
Ne öğreneceksin:
- Ansible Başucu Kitapları
- Örneklerle Başucu Kitapları Oluşturma
- Ansible Vault
- Özet
- Önerilen Kaynaklar
Ansible Başucu Kitapları
Modülleri kullanarak tek görevleri veya tek seferlik görevleri nasıl çalıştıracağımızı gördük, ancak ya birden çok görevi yürütmeniz gerekirse? Başucu kitapları onları komut dosyası ile çalıştırmaya yardımcı olur.
Başucu kitapları değişkenleri, konfigürasyonları, dağıtım adımlarını tanımlar, roller atar, birden çok görevi yerine getirir. İçin Örneğin. KOPYALA / SİL Dosyaları ve Klasörleri, paketleri kurun, hizmetleri başlatın. Bu nedenle, öncelikli olarak oyun kitapları, adımları birden çok makineye veya sunucuya düzenlemek ve hepsini istenen belirli bir duruma getirmek için tanımlanır.
Başucu kitabı yazılmıştır YAML biçimi .yml dosya uzantılı. Biçim ve hizalamaya çok dikkat etmek gerekiyor ki bu da onu çok hassas yapıyor.
Aşağıdaki bölümleri içerir:
- Her başucu kitabı 3 tire '-' ile başlar
- Ana bilgisayar bölümü - Başucu kitabının çalışması gereken hedef makineleri tanımlar. Bu Ansible envanter dosyasına dayanmaktadır.
- Değişken bölüm - Bu isteğe bağlıdır ve başucu kitabında gereken tüm değişkenleri bildirebilir. Bazı örneklere de bakacağız.
- Görevler bölümü - Bu bölüm, hedef makinede gerçekleştirilmesi gereken tüm görevleri listeler. Modüllerin kullanımını belirtir. Her görevin, görevin ne yapacağının küçük bir açıklaması olan ve başucu kitabı çalıştırılırken listelenecek bir adı vardır.
Örneğin,
Tomcat'i kurmamız ve yapılandırmamız gerekirse, aşağıdaki görevlerden oluşacaktır:
- Tomcat'i İndirin ve Yükleyin
- Tomcat'i yapılandırın
- Tomcat'i başlatın
Benzer şekilde, başkaMisalDevOps'un sürekli tesliminde kullanılan Tomcat'in kullanımı için görevler aşağıdaki gibi olabilir:
- Uygulamayı durdur
- Uygulamayı kaldır
- WAR dosyasının yeni bir sürümünü yükleyin.
- Uygulamayı başlatın
Başucu Kitabının Örnek Formatı
--- Playbook start - hosts: webservers Specify the group or servers as per inventory to execute tasks become: true tasks: - name: Copy Tomcat ZIP file to install location Short description of the task copy: src=/home/ansible/niranjan/apache-tomcat-8.5.31.tar.gz dest=/opt/niranjan/tomcat
Yukarıdaki komut dosyasında, yukarıdan başlayarak hizalamaya bakın ve bunun korunması gerekir, aksi takdirde sözdizimi hataları alırsınız.
Herhangi bir başucu kitabını çalıştırmak için aşağıdaki komutu kullanın
$ ansible-playbook
Başucu kitabında söz dizimi hatalarını kontrol etmek için
$ ansible-playbook --syntax-check
Ev sahibi listesini görüntülemek için
$ ansible-playbook --list-hosts
Örneklerle Başucu Kitapları Oluşturma
Bu bölümde, düzenli olarak çalıştırmanız gerekebilecek oyun kitaplarının nasıl oluşturulacağına dair birçok örnek göreceğiz. Bu oyun kitaplarının kontrol makinesinden oluşturulması ve çalıştırılması gerekecektir.
Aşağıdaki tüm çalma kitaplarını bir .yml dosyasına kaydedin ve aşağıda gösterildiği gibi çalıştırın.
$ ansible-playbook filename.yml
Örnek 1: Envanter dosyasında ve web sunucusunun grubunda belirtildiği gibi hedef makinelerde veya sunucularda dosyayı oluşturun, aşağıdaki kodu .yml uzantısıyla kaydedin ve başucu kitabını çalıştırın.
- hosts: webservers become: true tasks: - name: Create a file file: path=/home/ansible/niranjan.txt state=touch
Yukarıdaki örnekte, dosya modülü dosyayı oluşturmak için.
Örnek 2: Modu 775 ve sahibi / grubu Ansible olarak bir dizin oluşturun.
--- - hosts: webservers become: true tasks: - name: Create directory file: path=/home/ansible/niranjan state=directory mode=775 owner=ansible group=ansible
Örnek 3: Birden çok dizin oluşturun. Tek bir görevle birden fazla dizin oluşturmak için döngüyü kullanabilirsiniz. with_items Beyan. Dolayısıyla aşağıdaki başucu kitabını çalıştırdığınızda, 3 farklı görev olarak yorumlanır.
--- - hosts: webservers become: true tasks: - name: Create multiple directories file: path={{item}} state=directory with_items: - '/home/ansible/vn1' - '/home/ansible/vn2' - '/home/ansible/vn3'
Örnek 4: Bir kullanıcı oluşturun. Bakalım kullanıcı başucu kitabında kullanıcı oluşturmak ve silmek için modül.
--- - hosts: webservers become: true tasks: - name: Create User user: name=niranjan password=niranjan groups=ansible shell=/bin/bash
Örnek 5: Kullanıcıyı kaldır. Bir kullanıcıyı kaldırmak çok kolaydır ve durum ayarlanacak yok . Bu eşdeğerdir userdel Linux'ta komut.
--- - hosts: webservers become: true tasks: - name: Remove User user: name=niranjan state=absent remove=yes force=yes
Yukarıdaki başucu kitabında, kaldır = evet ana dizini kaldıracak ve kuvvet = evet dizindeki dosyaları kaldıracaktır.
Örnek 6: Kopyalama modülünü kullanarak içeriği bir dosyaya kopyalayın.
Bir dosyayı hedef makinelere veya sunuculara kopyalamanız gerekirse, src ve dest kopyalama modülünde.
--- - hosts: webservers become: true tasks: - name: Copy content to file copy: content='Hello World Niranjan
' dest=/home/ansible/niranjan.txt
Örneğin,
copy: src=/home/ansible/niranjan.txt dest=/tmp/niranjan.txt
Örnek 7: Bir dizenin tüm örneklerini değiştirin.
Kullanma yerine koymak modül bir kelimeyi başka bir kelimeyle değiştirebiliriz. Değiştirme modülü 3 parametreye ihtiyaç duyar, yani 'yol', 'regexp' (belirli kelimeyi bulmak için) ve 'değiştir' (değiştirme için başka bir kelime sağlar).
- hosts: webservers tasks: - name: Replace example replace: path: /home/ansible/niranjan.txt regexp: 'hello' replace: 'world'
Örnek 8: Arşiv veya ZIP dosyaları ve Klasörler
Ansible'ı kullanma Arşiv modül, dosyaları veya klasörleri 'zip', '.gz' veya 'bz2' biçiminde sıkıştırabilirsiniz.
Not : Sıkıştırılacak dosyalar veya klasörler hedef sunucularda bulunmalı ve üzerlerinde tar, bzip2, gzip, zip dosyası paketleri kurulu olmalıdır. Bu paketleri yüklemek için ayrı bir başucu kitabı göreviniz olabilir.
--- - hosts: all become: true tasks: - name: Ansible zip file example archive: path: /home/ansible/niranjan.txt dest: /home/ansible/niranjan.zip format: zip
Yukarıdaki başucu kitabı niranjan.txt dosyasını niranjan.zip dosyasına sıkıştıracaktır.
--- - hosts: all tasks: - name: Ansible zip multiple files example archive: path: - /home/ansible/niranjan1.txt - /home/ansible/niranjan2.txt dest: /home/ansible/niranjan.zip format: zip
Yukarıdaki başucu kitabı, birden çok dosyayı niranjan.zip dosyasına sıkıştıracaktır.
- hosts: all tasks: - name: Ansible zip directory example archive: path: - /home/ansible dest: /home/ansible/niranjan.zip format: zip
Yukarıdaki başucu kitabı / home / ansible dizinindeki tüm dosyaları sıkıştıracaktır.
Örnek 9: Tarih ve zaman damgasıyla çalışma
Sistem tarihini ve zaman damgasını kullanmak, belirli durumlarda veya günlük kaydı amaçlarında yardımcı olur. Ansible gerçekleri, uzak veya hedef sunuculara tarih ve saat erişimi sağlar. Böylece kullanabiliriz hata ayıklama modülü çıktıyı yazdırmak için nerede aşağıda gösterildiği gibi öznitelik.
--- - hosts: webservers become: true tasks: - name: Date and Time Example in Ansible debug: var=ansible_date_time.date
Yukarıdaki başucu kitabı tarihi gösterir.
--- - hosts: webservers become: true tasks: - name: Date and Time Example in Ansible debug: var=ansible_date_time.time
Yukarıdaki başucu kitabı zamanı gösterir.
- hosts: all tasks: - name: Ansible timestamp filename example command: touch niranjan{{ansible_date_time.date}}.log
Yukarıdaki başucu kitabı, şu tarihe göre dinamik bir dosya oluşturacaktır: Örneğin . niranjan2018-07-15.log
Örnek 10: Değişkenler Örneği
Değişkenler, değerleri saklamak için kullanılır. Aşağıdaki Örnekte değişkeni tanımlıyorum isim değerli niranjan . Çıktı olacak niranjan .
- hosts: all vars: name: niranjan tasks: - name: Ansible Basic Variable Example debug: msg: '{{ name }}'
Ayrıca aşağıdaki gibi bir dizi veya değişkenler listesine sahip olabiliriz Misal .
- hosts: all vars: name: - Vasudevamurthy - Niranjan tasks: - name: Ansible Array Example debug: msg: '{{ name(1) }}'
Dizinin indekslenmesi SIFIR (0) 'dan başlar. Dolayısıyla yukarıdaki örnekteki çıktı Niranjan olacaktır.
Örnek 11: Değişkenleri Kaydedin
Herhangi bir görevin çıktısını bir kayıt değişkenine de yakalayabiliriz.
- hosts: all tasks: - name: Ansible register variable basic example shell: 'find *.txt' args: chdir: '/home/Ansible' register: reg_output - debug: var: reg_output
Not: Görüntülemek için - msg özniteliğini kullanın ve herhangi bir değeri yakalamak için - debug modülündeki var özniteliğini kullanın
Örnek 12: Hedef sunuculara veya makinelere vim editörü ve GIT yüklemek için başucu kitabı.
Bu başucu kitabında, nefis Yazılım paketlerinin en son sürümünü yüklemek için modül.
--- - hosts: webservers become: true tasks: - name: Install Package yum: name=vim,git state=latest
Örnek 13: Apache sunucusunu kurun. Aşağıdaki kodu kaydedin ve başucu kitabını aşağıda gösterildiği gibi çalıştırın.
--- - hosts: webservers become: true tasks: - name: Install Package yum: name=httpd state=present - name: Start httpd service service: name=httpd state=started
Dışında nefis modül, hizmet modül ayrıca httpd hizmetini başlatmak için kullanılır. Görevler, yukarıdan aşağıya senkronize olarak çalışır.
Örnek 14: JDK'yı yükleyin
Aşağıdaki başucu kitabı, JDK 8'i tüm hedef makinelere veya sunuculara yüklemek için otomatikleştirecektir. JDK, Maven veya Tomcat gibi diğer yazılım paketlerinin çoğu için bir ön koşuldur.
--- - hosts: webservers become: true vars: download_url: http://download.oracle.com/otn-pub/java/jdk/8u171-b11/512cd62ec5174c3487ac17c61aaa89e8/jdk-8u171-linux-x64.rpm tasks: - name: Download JDK 8 RPM file command: 'wget --no-check-certificate --no-cookies --header 'Cookie: oraclelicense=accept-securebackup-cookie' {{download_url}} ' - name: Install JDK 8 command: 'rpm -ivh jdk-8u171-linux-x64.rpm'
Örnek 15: Maven'i yükleyin
Gerçekleştirilen görevler, maven dosyasını URL'den indirmektir. get_url modülünü açın, indirilen dosyayı çıkarın, daha küçük bir dizine taşıyın, maven'ın yola eklendiği profili güncelleyin ve çalıştırın.
--- - hosts: webservers become: true tasks: - name: Download Maven get_url: url=http://www-us.apache.org/dist/maven/maven-3/3.5.3/binaries/apache-maven-3.5.3-bin.tar.gz dest=/opt/niranjan/apache-maven-3.5.3-bin.tar.gz - name: Extract Maven command: tar xvf /opt/niranjan/apache-maven-3.5.3-bin.tar.gz -C /opt/niranjan - name: Move to a smaller directory command: mv /opt/niranjan/apache-maven-3.5.3 /opt/niranjan/maven - name: Update Profile copy: content='export M2_HOME=/opt/niranjan/maven
' dest=/etc/profile.d/maven.sh # lineinfile is used to add additional or append lines to existing files. - lineinfile: path: /etc/profile.d/maven.sh line: 'export PATH=${M2_HOME}/bin:${PATH}' - name: Source profile shell: source /etc/profile.d/maven.sh
Örnek 16: Tomcat 8'i yükleyin
Aşağıdaki başucu kitabı, Tomcat 8'in hedef makinelere veya sunuculara yüklenmesine ve başlatılmasına yardımcı olur.
Tıklayabilirsiniz İşte Tomcat'in en son sürümünün bağlantı konumunu kopyalamak için 8. Tıklayın İşte Bu başucu kitabında kullandığım Tomcat 8 tar dosyasını içeren URL için.
--- - hosts: webservers become: true gather_facts: no tasks: - name: Download Tomcat get_url: url=http://www-us.apache.org/dist/tomcat/tomcat-8/v8.5.32/bin/apache-tomcat-8.5.32.tar.gz dest=/home/ansible - name: Extract the file downloaded tomcat file command: tar xvf apache-tomcat-8.5.32.tar.gz - name: Move the Tomcat directory to a smaller one command: mv apache-tomcat-8.5.32 tomcat - name: Change Ownership and group of the Tomcat directory file: path=/home/ansible/tomcat owner=ansible group=ansible mode=775 state=directory recurse=yes - name: Start Tomcat command: nohup /home/ansible/tomcat/bin/startup.sh # Execute command even after you have exited from the shell prompt become: true become_user: ansible
Örnek 17: pre_tasks, post_tasks ve etiketler
Kullanabilirsiniz görevler öncesi ve görevler ana görevi çalıştırmadan önce veya sonra belirli görevleri çalıştırmak için.
Normalde bir oyun kitabında, yürütülen çok sayıda göreviniz vardır. Ya yalnızca belirli bir görevi yerine getirmeniz gerekirse? Bunun cevabı etiketlerdir. 3 seçeneğin tümünü içeren aşağıdaki seçeneğe bakalım. 2 görevi vardır, yani biri TAG ile diğeri TAG'sız.
--- - name: Pre , Post tasks and Tags example hosts: localhost become: true tags: - niranjan pre_tasks: - debug: msg='Started task with tag - niranjan. tasks: - name: Going to execute the main task debug: msg='Currently in the target server' post_tasks: - debug: msg='Completed task with tag - niranjan. - name: Play without tags hosts: localhost become: true tasks: - name: Command to list files shell: ls -lrt > niranjan.txt
Başucu kitabını –list-tags seçeneğiyle çalıştırırken ne olduğunu görelim
$ ansible-playbook preposttagseg.yml --list-tags
Yukarıdaki çıktı daha iyi ve net görünüyor. Play # 1'in niranjan etiketi var ama Play # 2'nin hiç etiketi yok.
.dat dosyası nasıl açılır
Görevleri niranjan etiketiyle yürütmeniz gerekiyorsa, çalıştırılacak komut şöyle olacaktır:
$ ansible-playbook preposttagseg.yml --tags niranjan
İkinci oynatma yürütülmez ve dosya oluşturulmaz.
Örnek 18: İşleyiciler
Herhangi bir yazılım paketinde yapılandırma dosyaları bulunur ve üzerinde yapılan herhangi bir değişiklik yalnızca hizmet yeniden başlatıldığında etkili olur. Bu nedenle, hizmetin yeniden başlatılması için ayarlanmış olması gerekir. İçin Örneğin. Aşağıdaki başucu kitabında, eğer birden çok kez çalıştırırsanız, yapılan değişikliklerden bağımsız olarak hizmet yine de yeniden başlayacaktır, bu da doğru değildir.
--- - hosts: webservers tasks: - name: Install the apache Package yum: name=httpd state=latest - name: Copy httpd configuration file copy: src=/home/ansible/httpd.final dest=/etc/httpd/conf/httpd.conf - name: Copy index.html file copy: src=/home/ansible/index.html dest=/var/www/html
# This service below is executed irrespective of changes done or not to any config files - name: Start and Enable httpd service service: name=httpd state= restarted enabled=yes
Bu nedenle, yalnızca yapılandırma dosyalarında değişiklik yapılırsa hizmeti yeniden başlatmamız gerekir. İşleyiciler bu özelliği sağlayın.
Dolayısıyla, işleyicilerle doğru akış, bir haber vermek seçeneği.
--- - hosts: webservers become: true tasks: - name: Install httpd package yum: name=httpd state=latest - name: Copy the httpd configuration file copy: src=/home/ansible/httpd.final dest=/etc/httpd/conf/httpd.conf - name: Copy index.html file copy: src=/home/ansible/index.html dest=/var/www/html notify: - restart httpd - name: Start httpd service service: name=httpd state=started enabled=yes handlers: - name: restart httpd service: name=httpd state=restarted
Böylece ilk defa Apache sunucusu kurulacak ve başlatılacak. Başucu kitabını herhangi bir değişiklik yapmadan yeniden çalıştırsanız bile httpd hizmeti zaten başlatıldığı için yeniden başlamaz.
Yapılandırma dosyalarında herhangi bir değişiklik varsa veya HTML dosyaları değiştirilirse, oynatma kitabı çalıştırıldığında işleyiciye hizmeti yeniden başlatması bildirilir. Bildirim bölümündeki ve işleyicilerdeki ad aynı olmalıdır. İşleyici, diğer herhangi bir görev gibi yazılır, ancak yalnızca değişiklik olduğunda çağrılır.
Ansible Vault
Hassas veya gizli verilerin çoğu zaman başucu kitabında korunması gerektiğinde, herkes tarafından okunabilen bir metin dosyasında saklanmak yerine şifrelenebilir. Ansible Vault, gizli verileri korumak için başucu kitabını şifrelemenize izin verir.
Örneğin, gizli bir iş sözleşmesinin kopyalandığı aşağıdaki görevi düşünün.
Bu gibi durumlarda Ansible Kasasına ihtiyacınız olacaktır.
--- - hosts: webservers become: true tasks: - name: Copying Confidential Job Agreement copy: content='This is a Confidential Job Agreement' dest=/home/ansible/jobagreement.txt
Yukarıdaki başucu kitabı dosyalarını şifrelemek için izlemeniz gereken adımlar aşağıdadır.
# 1) Yeni şifrelenmiş dosyalar oluşturmak
Kasa ile yeni şifrelenmiş dosyalar oluşturmak için cevapsız kasa oluşturma komut.
$ ansible-vault create jobagreement.yml
Şifreyi onayladıktan sonra, dosyaya içerik eklemek için bir düzenleme penceresi açılacaktır.
Ansible, dosyayı kapattığınızda içeriği şifreleyecektir. Gerçek içeriği görmek yerine şifrelenmiş bloklar göreceksiniz.
# 2) Mevcut bir yml dosyasını şifrelemek için aşağıdakileri kullanın
$ ansible-vault encrypt existingfile.yml
Şifreleme için şifre tekrar sorulacaktır.
# 3) Şifrelenmiş dosyayı görüntüleme
Komutu kullanın cevapsız kasa görünümü dosyanın gerçek içeriğine bakmak için.
$ ansible-vault view jobagreement.yml
Dosyanın içeriğine bakmak için sizden tekrar şifre istenecektir.
# 4) Şifrelenmiş dosyaları düzenleme
Dosyayı düzenlemeniz gerekiyorsa şu komutu kullanın: ansible-vault düzenleme
$ ansible-vault edit users.yml
Dosyayı düzenlemek için şifreyi girin.
# 5) Şifrelenmiş dosyaların şifresini değiştirme
Komutu kullanın cevapsız kasa anahtarı dosyanın şifresini değiştirmek için.
$ ansible-vault rekey jobagreement.yml
# 6) Şifrelenmiş bir Ansible oynatma kitabı dosyası çalıştırın
Ansible-playbook komutuyla –ask-vault-pass seçeneğini kullanın.
$ ansible-playbook users.yml --ask-vault-pass
# 7) Şifrelenmiş dosyaların şifresini manuel olarak çözme
Yanıtlanabilir kasa şifresini çöz komutunu kullanın.
$ ansible-vault decrypt jobagreement.yml
Özet
Bu eğiticide, yapılandırma yönetiminin en önemli iki yönünü gördük. Ansible Playbooks ve Ansible Vault'ları kullanarak hassas verileri koruma.
Yukarıdaki başucu kitabı örnekleri, yazılım teslimi sırasında farklı senaryolarda çeşitli görevleri nasıl otomatikleştireceğiniz konusunda size bir fikir verebilirdi.
Yaklaşan eğiticimizde Ansible rollerini kullanarak Başucu Kitabı'nın nasıl modülerleştirileceğini, Jenkins ile nasıl entegre edileceğini ve AWS bulut sunucularının yönetilmesi için Ansible S3 ve EC2 modülleri ile çalışmanın en önemli yönünü (EC2 bulut sunucuları Oluşturma ve Sonlandırma) göreceğiz.
yapay zeka yazılımı nasıl geliştirilir
PREV Eğitimi | SONRAKİ Eğitici
Önerilen Kaynaklar
- Ansible Eğitimi: Ansible Modüllerle Kurulum ve Kullanım
- SeeTest Otomasyon Komutları: Örneklerle Ayrıntılı Bir Açıklama
- Ansible Rolleri, DevOps'ta Jenkins ile Entegrasyon ve EC2 Modülleri
- En Popüler 5 Test Otomasyon Çerçevesini Kullanarak Test Komut Dosyaları Nasıl Geliştirilir (Örnekler)
- Komut Dosyasız Test Otomasyon Çerçevesi: Araçlar ve Örnekler
- Örneklerle Python DateTime Eğitimi
- Örneklerle Unix'te Kesme Komutu
- Test Otomasyonu - Uzmanlaşmış Bir Kariyer mi? Normal Test Uzmanları Otomasyonu da Yapabilir mi?