Ansible - Gelişmiş Yürütme
Bu bölümde Ansible ile gelişmiş uygulamanın ne olduğunu öğreneceğiz.
Yürütmeyi Görevlere Göre Sınırlama
Bu, bir kişinin tüm oyun kitabını değil, yalnızca bir yürütmeyi yürütmesi gereken çok önemli bir yürütme stratejisidir. For example, sadece bir sunucuyu durdurmak (bir üretim sorunu olması durumunda) ve ardından yalnızca sunucuyu başlatmak istediğiniz bir yama uygulayarak göndermek istediğinizi varsayalım.
Burada, orijinal oyun kitabında dur ve başla, aynı oyun kitabındaki farklı rollerin bir parçasıydı, ancak bu, etiketlerin kullanımıyla ele alınabilir. Farklı rollere (sırayla görevleri olan) farklı etiketler sağlayabiliriz ve bu nedenle, yalnızca belirtilen rol / görev yürütüldüğünde yürütücü tarafından sağlanan etiketlere dayanarak. Dolayısıyla, verilen yukarıdaki örnek için, aşağıdaki gibi etiketler ekleyebiliriz -
- {role: start-tomcat, tags: ['install']}}
Aşağıdaki komut etiketlerin kullanılmasına yardımcı olur -
ansible-playbook -i hosts <your yaml> --tags "install" -vvv
Yukarıdaki komutla yalnızca start-tomcat rolü çağrılacaktır. Sağlanan etiket büyük / küçük harfe duyarlıdır. Komuta tam eşleşmenin aktarıldığından emin olun.
Ana Bilgisayarlara Göre Yürütme Nasıl Sınırlandırılır
Belirli ana bilgisayarlarda belirli adımların yürütülmesini sağlamanın iki yolu vardır. Belirli bir rol için, belirli bir rolün çalıştırılması gereken belirli ana bilgisayarlara ilişkin ana bilgisayarlar tanımlanır.
Misal
- hosts: <A>
environment: "{{your env}}"
pre_tasks:
- debug: msg = "Started deployment.
Current time is {{ansible_date_time.date}} {{ansible_date_time.time}} "
roles:
- {role: <your role>, tags: ['<respective tag>']}
post_tasks:
- debug: msg = "Completed deployment.
Current time is {{ansible_date_time.date}} {{ansible_date_time.time}}"
- hosts: <B>
pre_tasks:
- debug: msg = "started....
Current time is {{ansible_date_time.date}} {{ansible_date_time.time}} "
roles:
- {role: <your role>, tags: ['<respective tag>']}
post_tasks:
- debug: msg = "Completed the task..
Current time is {{ansible_date_time.date}} {{ansible_date_time.time}}"
Yukarıdaki örneğe göre, sağlanan ana bilgisayarlara bağlı olarak, ilgili roller yalnızca çağrılacaktır. Şimdi ana bilgisayarlarım A ve B, ana makinelerde (envanter dosyası) tanımlandı.
Alternatif Çözüm
Farklı bir çözüm, başucu kitabının ana bilgisayarlarını bir değişken kullanarak tanımlamak ve ardından belirli bir ana bilgisayar adresini kullanarak --extra-vars -
# file: user.yml (playbook)
---
- hosts: '{{ target }}'
user: ...
playbook contd….
Başucu Kitabını Çalıştırmak
ansible-playbook user.yml --extra-vars "target = "<your host variable>"
{{Hedef}} tanımlanmamışsa başucu kitabı hiçbir şey yapmaz. Gerekirse hosts dosyasından bir grup da geçirilebilir. Ekstra değişkenler sağlanmadığında bu zarar vermez.
Tek bir ana bilgisayarı hedefleyen başucu kitabı
$ ansible-playbook user.yml --extra-vars "target = <your hosts variable>" --listhosts