Bir önceki yazıda Ansible ile alakalı ” Modules, Inventory, Playbook” gibi bazı temel komponentler den bahsetmiş ve Playbook’lar üzerinden çalışma prensibi üzerine konuşmuştuk. Artık daha komplike uygulamalar üzerinde aksiyon alma zamanı geldi diye düşünüyorum. Eğer daha önce okumadıysanız ilgili yazıya burayı tıklayarak erişebilirsiniz.

Bugün üzerine duracağımız konular;

  • Ansible kullanarak VMware platformu üzerindeki operasyonlarımızı nasıl otomatize edebiliriz?
  • VMware tarafında Ansible kullanabilmek için gereksinimler nedir ?
  • Playbook dizaynı ve örnek Playbooklar üzerinden incelemeler

VMware bildiğiniz gibi Türkiye ve Dünya genelinde utilizasyonu, yani kullanımı en çok olan Hypervisor’ çözümlerinden biri. vSphere ailesini genel olarak ele alırsak uçtan uca sunduğu çözümler sayesinde sektöre de yön veren bir noktada. Ansible kullanarak VMware ortamlarınız üzerinde; Guest Provisioning, Host ve Datastore Management, vSwitch configuration gibi bir çok operasyonu otomatize edebilirsiniz. Bunu yaparken kullanacağımız şey ise modüller. Daha önce modüller hakkında konuşmutuk. Bizim için başkaları ya da direk Vendor’lar tarafından hazırlanmış arka tarafta daha kompleks operasyonları tetikleyen kullanıma hazır scriptler ve komut setleriydi. Şu anda 2019 yılı itibariyle Ansible tarafında VMware için kullanabileceğiniz 50’den fazla hazır modüle bulunuyor. Bizler de operasyonlarımızı yönetirken bu modülleri kullanacağız.

Resim-1

Peki gereksinimler neler ?

Ansible uygulanacak olan tasklar için ilk önce farklı ilgili protokoller üzerinden (Windows için Winrm, Linu için SSH vs.) ilgili host üzerine bağlanarak sırası ile taskları uyguluyordu bildiğiniz gibi. VMware tarafıdaki operasyonları modüller üzerinden yönetmek için ise bir bu sefer VMware tarafından geliştirilmiş bir Python SDK’sı olan “pyVmomi” kullanacağız. Yani tek gereksinim Ansible’ın kurulu olduğu sunucu üzerinde pyVmomi’in ve Python 2.7 yada daha üstü bir versiyonun yüklü olması. pyVmomi ile ilgili detaylı bilgiye buraya tıklayarak erişebilirsiniz. PIP ile kolay bir şekilde kurabilirsiniz bu yüzden detayına fazla girerek yazıyı gereksiz yere uzatmak istemiyorum.

Gerekli ön koşulları yerine getirdiğimize göre artık örnek Playbook’lar üzerinden devam edebiliriz. Aşağıda listelediğim operasyonlarımızı otomatize etmek için hazırladığımız Playbook ları çalıştırmak için 4 adet farklı Job Template hazırladım.

  • Snapshot Aldırma
  • Snapshot Silme
  • Sanal sunucu oluşturma
  • vSwitch Port Grup oluşturma

Resim-2

Snapshot operasyonu için ilk önce operasyona bir isim vererek ilgili modülleri uygulayacak host bilgisini giriyoruz. Yani hosts kımında pyVmomi nin kurulduğu olduğu sunucuyu belirtiyoruz. Ben Ansible ve pyVmomi yi aynı sunucu üzerinde çalıştırdığım için “localhost” diye girdim fakat siz farklı bir sunucuya girdiyseniz o sunucuyu adını yazabilirsiniz. Tabi kullanmadan önce ilgiliyi sunucuyu ilgili envater altında host olarak tanımlamayı unutmayın.

---
- name: Snapshot
hosts: localhost
connection: local

ikinci ve önemli aşama ise uygulanacak olan operasyonların Task başlığı altında listelenmesi. “vmware_guest_snapshot” diyerek ilgili modülü çağırıyoruz ve modülün çalışabilmesi için gerekli değişkenleri yani;

  • Vcenter Adresi
  • Vcenter Kullanıcı adı ve adresi
  • Snapshot alınacak sunucu adı
  • Snapshot içerisine girilecek açıklamaları
  • En önemlisi ise snapshot operasyonunun tanımını (Silmek mi istiyoruz yoksa almak mı istiyoruz)

Belirterek Playbook umuzu hazır hale getiriyoruz. Playbook içerisindeki değişkenleri direk yazarak ta bu değişikliği uygulayabilirdik fakat eğer dinamik değişken tanımı yapmaz isek her bir operasyon için ayrı ayrı yüzlerce Playbook yazmak zorunda kalırız.

“{{değişken_adı}}” şeklinde tanımlarımızı yapıyoruz.

tasks:
- name: Create Snapshot
vmware_guest_snapshot:
hostname: "{{ vcenter_hostname }}"
username: "{{ vcenter_username }}"
password: "{{ vcenter_password }}"
esxi_hostname: "{{ esxihost }}"
datacenter: {{ datacenter_name }}"
folder: "/{{ datacenter_name }}/AnsibleVM/"
name: "{{ guest_name}}"
state: present
snapshot_name: demosnapshot
description: snap1_description

Sırada oluşturduğumuz Job Template içerisinde “ADD SURVEY” diyerek Playbook içerisinde tanımladığımız değişkenlerimizi girme kısmı var. Değişkenleri girdikten sonra herhangi biri bu Job Template’i çalıştırmak isterse karşısına sıra ile talep edilen değişkenlerin girilmesi isteyen sorular çıkacak. Bu sayede tek bir Job Template üzerinden farklı farklı sunucular için dinamik değişken kullanarak operasyonumuzu bütün sunucularımız için otomatize edebileceğiz.


Resim-3

Job Template üzerinden ilgili değişken tanımlarımızı yaptıktan sonra kaydedip çıkıyoruz ve Job Template i çalıştırıyoruz. Gördüğünüz gibi olması gerektiği gibi Playbook üzerinde girdiğimiz ve Survey altında tanımladığımız değişkenleri girmemiz istiyor. İlgili değişkenleri giriyoruz ve devam ediyoruz.

Resim-4

Job başarılı bir şekilde tamamlanıyor.

Resim-5

Vmware üzerinden kontrol ettiğimiz de ise başarılı bir şekilde snapshot’ın alındığını görüyoruz.

Resim-6

Bu giriş için oldukça basit bir örnekti. Aynı methodu kullarak mevcut modüller ile sağlanan bütün operasyonlar için sistemlerinizi otomatize edebilirsiniz. Bir sonraki yazımda Ansible kullanarak VMware üzerinde nasıl sunucu oluşturabilir ve değişkenleri Job Template üzerinden el ile girmek yerine API üzerinden nasıl tetikleyebilirsiniz onu anlatıyor olacağım.

TAGs: Ansible, VMware, Vsphere, Ansible Tower, AWX, Playbook, Ansible Modules, VMware Ansible Automation

By Faruk TERZIOGLU

Faruk TERZIOGLU - 2003 senesinden beri aktif olarak bilgi teknolojileri sektöründe çalışıyor. Uzmanlık alanları BT altyapı çözümleri ve yazılım tanımlı veri merkezi teknolojileri, Microsoft ailesi ürünleri, Açık kaynak kodlu sanallaştırma platformları ve uygulamaları olup bulut teknolojileri öncelikli ilgilendiği alanlar arasındadır. 2018 yılında Alibaba Cloud tarafından Bulut Teknolojileri Çözümleri alanında MVP, 2019 Yılında VMware tarafından vExpert ilan edilmiştir.

Leave a Reply

Your email address will not be published. Required fields are marked *

  • Facebook
  • X (Twitter)
  • LinkedIn
  • More Networks
Copy link