Kritik çalışmalar öncesinde snapshot’ın ne kadar hayat kurtarıcı olduğu konusunda hepimiz hemfikiriz diye düşünüyorum. Bu manuel operasyonu Ansible kullanarak otomatize hale getirebiliriz ve VMware ortamlarınız üzerinden kolay bir şekilde snapshot alabiliriz bunun üzerine bir yazı olacak. Daha önce benzer bir konuyu incelemiş fakat önemli bazı detaylara değinmemiştik bugün özellikle değişkenler tarafındaki fark üzerine de konuşacağız. Buraya tıklayarak daha önceki yazıyı okuyabilirsiniz.
Bu operayonu otomasyon ile desteklerseniz Level 1 deki arkadaşlara herhangi bir user\pass bile vermeye gerek duymadan kullanmalarını sağlayabilirsiniz. Hatta ITSM uygulaması ile bağlarsanız son kullanıcı kendisi bile sanal sunucu üzerinden snaphot alabilir.
İlk önce VM template’lerimizi oluşturuyoruz. Daha önce bir çok kez yazdığım için AWX üzerinden vm Template oluşturma kısmına tekrar tekrar girmiyorum. Problem yaşarsanız önceki yazılardan nasıl yapılacağını öğrenebilirsiniz.
İlgili playbook’umuzu hazırlıyoruz. 2 farklı örnek ile ilerleyeceğiz demiştik;
- Statik değişkenli playbook
- Dinamik değişkenli playbook
Statik ile başlıyoruz.
Bu örnekte bütün değişkenler statik olarak playbook içeriside “vars” altına set edilmiş durumda. Yani RUN ettiğinizde direk tanımlı Vcenter’da çalışan tek bir VM üzerinde çalışacak ve onun snapshot’ını alacak. Gerçek dünyaya çok uygun değil çünkü bir çok farklı VM için ayrı ayrı playbook hazırlamak oldukça gereksiz bir operasyon fakat görmeniz açısından paylaşıyorum. Bu konunun detaylarına yazının devamında değineceğim.
Vars altında gerekli bütün değişkenleri tanımladık.
--- - name: Snapshot hosts: localhost connection: local vars: vcenter_hostname: demoansible.faruk.local vcenter_user: administrator@vsphere.local vcenter_pass: Password_buraya datacenter_name: Ansible-Demo esxihost: demohost01.faruk.local datastore: datastore01 guest_name: newvm 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
Template üzerinden oluşturduğumuz playbook’u içerisine tanımladıktan sonra. RUN ediyoruz.
Herhangi bir hata alıp almadığımızı kontrol ettikten sonra
Vmware üzerinden başarılı bir şekilde snapshot alındığını teyit ediyoruz.
Artık dinamik değişkenlerden bahsedebiliriz.
Aşağıdaki 2 farklı playbook örneği mevcut. Sol taraftaki bütün değişkenler statik olarak playbook içerisine tanımlanmışken sağ taraftakinde ise sadece değişken isimleri mevcut. Her bir VM için ayrı ayrı playbook oluşturmak istemiyorsanız sağ taraftaki gibi değişkenleri playbook içerisine tanımladıktan sonra AWX üzerinde oluşturduğunuz template içerisine “survey” ekleyerek bu değişkenleri templat’i RUN ettiğiniz anda manuel olarak girmeniz gerekiyor. Bu sayede her seferinde farklı bir VM için aynı operasyonu gerçekleştirebilirsiniz.
Dinamik değişkenli playbook’umuz aşağıdaki gibi.
--- - name: Snapshot hosts: localhost connection: local 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
Tanımlı değişkenleri ise Template üzerinden aşağıdaki gibi tek tek giriyoruz.
Template’i RUN edince bizden gerekli bilgileri istiyor. Bunları elle girdikten sonra NEXT dememiz yeterli.
Kontrol ettiğimizde başarılı bir şekilde snapshot’ımızın alındığı görüyoruz.