Open Source Vmware VMware

Ansible Kullanarak VMware üzerinde OVA Deploy Etme

Sanallaştırma teknolojileri hayatımıza girdiğinden beri kurulan sunucu sayısında ciddi bir artış var. Hatta o kadar çoklar ki kimi zaman ne için kullanıldığı bile unutuluyor bu neydi acaba diye araştırmak zorunda kalıyoruz. Eskiden fiziksel bir sunucu kurduğumuzda harcadığımız efor\emek sebebi ile mi bilmiyorum ama sanırım biraz daha kıymetli oluyordu ve her şeyini ezbere biliyorduk. Günümüzde sunucuları artık tek tek manuel olarak değil platforma özel hazırladığımız Template leri kullanarak ayağa kaldırıyoruz. Tabi burada iş bitmiyor yapılması gereken farklı konfigürasyon lar ve öncesinde tetiklenmesi gereken manuel süreçler hala var.

Template üzerinden sunucu kurulumlarınızı Ansible kullanarak Vmware için nasıl otomatize edebilirsiniz ,bunun üzerine bir yazı olacak fakat ufak bir fark var. Sunucu üzerinde duran hazır bir Template’i değil elimizde OVA formatında bulunan yani dışarıdaki bir dosya üzerinden deployment yapacağız.

Hocam direk sunucuya template olarak yüklesek sonra oradan yeni sunucu oluştursak diyebilirsiniz ki haklısınız normalde süreç böyle işler ama burada ki senaryo biraz daha farklı. Diyelim ki geliştirdiğiniz bir uygulama mevcut ve arka tarafta aşağıdaki gibi 4 farklı sunucuya ihtiyaç duyuyor.

  • Application
  • Database
  • Messages Queue
  • Loglama

Bu durumda yaygın 2 farklı yükleme yöntemi var. Ya gidip müşteride bunları sıfırdan kuracaksınız ya da elinizdeki hazır OVA dosyalarını müşteriye ileteceksiniz deploy etmesini isteyeceksiniz. Biz buraya 3 ncü bir yöntem ekliyoruz ve bu OVA deployment sürecini ansible ile vmware web paneline login bile olmaya gerek olmadan gerçekleştiriyoruz.

Ön Gereksinimler:

1-Ansible sunucumuzda pyvimomi ve community.vmware colletion’ının yüklü olması gerekiyor. Eğer docker üzerinden AWX\Tower kullanıyorsanız docker container’e login olup oraya da yüklemeniz gerekiyor.

Aşağıdaki gibi pyvmomi kurulumunu yapabilirsiniz

pip install pyvmomi

Collection yüklemesi için çalıştırmanız gereken komut.

ansible-galaxy collection install community.vmware

2-Hazırladığımız template üzerinde Vmware Tools yüklü olmalı.

Hemen playbook’umuzu yazmaya başlıyoruz. İlk kısımda Vmware altında ” DemoApplication” adında yeni bir folder oluşturuyoruz.

- name: Vmware Deploy OVA 
  hosts: localhost
  gather_facts: no

  tasks:
    - name: Klasor Olusturma
      community.vmware.vcenter_folder:
        hostname: "{{ vcenter_hostname }}"
        username: "{{ vcenter_username }}"
        password: "{{ vcenter_password }}"
        datacenter: "{{ datacenter }}"
        folder_name: DemoApplication
        state: present
        validate_certs: no
      delegate_to: localhost

Sonrasında ise Sunucularımızı Deploy ediyoruz. Hazırladığımız template olarak kullanılacak ova dosyasını sunucu üzerinde bir path’e atarak playbook üzerinde tanımlamanız gerekiyor. Ben burada path olarak /var/lib/awx/template.ova verdim.

- name: Ova Deploy Etme Application
      community.vmware.vmware_deploy_ovf:
        hostname: “{{ vcenter_hostname }}”
        username: “{{ vcenter_username }}”
        password: “{{ vcenter_password }}”
        datacenter: “{{ datacenter }}”
        cluster: “{{ cluster }}”
        datastore: Data
        name: Application
        folder: “{{ datacenter }}”/vm/DemoApplication
        validate_certs: no
        power_on: yes
        ovf: /var/lib/awx/template.ova
      delegate_to: localhost
 
     - name: Ova Deploy Etme Database
      community.vmware.vmware_deploy_ovf:
        hostname: “{{ vcenter_hostname }}”
        username: “{{ vcenter_username }}”
        password: “{{ vcenter_password }}”
        datacenter: “{{ datacenter }}”
        cluster: “{{ cluster }}”
        datastore: Data
        name: Database
        folder: “{{ datacenter }}”/vm/DemoApplication
        validate_certs: no
        power_on: yes
        ovf: /var/lib/awx/template.ova
      delegate_to: localhost
      
    - name: Ova Deploy Etme Messages Queue
      community.vmware.vmware_deploy_ovf:
        hostname: “{{ vcenter_hostname }}”
        username: “{{ vcenter_username }}”
        password: “{{ vcenter_password }}”
        datacenter: “{{ datacenter }}”
        cluster: “{{ cluster }}”
        datastore: Data
        name: MessageQueue
        folder: “{{ datacenter }}”/vm/DemoApplication
        validate_certs: no
        power_on: yes
        ovf: /var/lib/awx/template.ova
      delegate_to: localhost
      
    - name: Ova Deploy Etme Logging
      community.vmware.vmware_deploy_ovf:
        hostname: “{{ vcenter_hostname }}”
        username: “{{ vcenter_username }}”
        password: “{{ vcenter_password }}”
        datacenter: “{{ datacenter }}”
        cluster: “{{ cluster }}”
        datastore: Data
        name: Logging
        folder: “{{ datacenter }}”/vm/DemoApplication
        validate_certs: no
        power_on: yes
        ovf: /var/lib/awx/template.ova
      delegate_to: localhost
      
    - pause: seconds=120

 

– pause parametresi ile deployment’ların bitmesini bekliyoruz, siz burada süreyi istediğniz kadar uzatabilirsiniz. Buraya tıklayarak modül ile igili detaylara erişebilirsiniz. Otomatik olarak power on etme ya da disk tipi olarak thin\thick parametlerini kendinize göre düzenleyebilirsiniz. Sonrasında ise sunucuların ip adreslerini güncelliyoruz. Bunun için vmware_vm_shell modülü kullanarak vmware tools üzerinden direk sunucuya login olup istediğimiz gibi network konfigürasyonlarını yapabiliriz. Tek bir task ile de yapılabilir fakat ben örnek olması açısından her taskı ayrı ayrı yazdım.

- name: IP adresi Degistirme
      community.vmware.vmware_vm_shell:
        hostname: “{{ vcenter_hostname }}”
        username: “{{ vcenter_username }}”
        password: “{{ vcenter_password }}”
        validate_certs: no
        datacenter: “{{ datacenter }}”
        folder: “{{ datacenter }}”/vm/DemoApplication
        vm_id: Application
        vm_username: root
        vm_password: “{{ vm_password }}”
        vm_shell: "/usr/bin/nmcli"
        vm_shell_args: "connection modify ens160 IPv4.address 172.16.10.41"
      delegate_to: localhost
     
    - name: Gateway Degistirme
      community.vmware.vmware_vm_shell:
        hostname: “{{ vcenter_hostname }}”
        username: “{{ vcenter_username }}”
        password: “{{ vcenter_password }}”
        validate_certs: no
        datacenter: “{{ datacenter }}”
        folder: “{{ datacenter }}”/vm/DemoApplication
        vm_id: Application
        vm_username: root
        vm_password: “{{ vm_password }}”
        vm_shell: "/usr/bin/nmcli"
        vm_shell_args: "connection modify ens160 IPv4.gateway 172.16.10.1"
      delegate_to: localhost

    - name: DNS Adresi Güncelleme
      community.vmware.vmware_vm_shell:
        hostname: “{{ vcenter_hostname }}”
        username: “{{ vcenter_username }}”
        password: “{{ vcenter_password }}”
        validate_certs: no
        datacenter: “{{ datacenter }}”
        folder: “{{ datacenter }}”/vm/DemoApplication
        vm_id: Application
        vm_username: root
        vm_password: “{{ vm_password }}”
        vm_shell: "/usr/bin/nmcli"
        vm_shell_args: "connection modify ens160 IPv4.dns 8.8.8.8"
      delegate_to: localhost
      
    - name: Network Servisleri Restart
      community.vmware.vmware_vm_shell:
        hostname: “{{ vcenter_hostname }}”
        username: “{{ vcenter_username }}”
        password: “{{ vcenter_password }}”
        validate_certs: no
        datacenter: “{{ datacenter }}”
        folder: “{{ datacenter }}”/vm/DemoApplication
        vm_id: Application
        vm_username: root
        vm_password: “{{ vm_password }}”
        vm_shell: "/usr/bin/nmcli"
        vm_shell_args: "networking off && nmcli networking on"
      delegate_to: localhost

Playbook’umuzu AWX üzerinde template olarak oluşturduktan sonra. Çalıştırıp kontrol ediyoruz ve kurulumlara başladığını görüyoruz. Task’lar sıra ile execute ederek VM’leri oluşturacak

Resim-1

Vmware web konsol üzerinden baktığımızda ise deployment işlemleri başlamış olarak gözüküyor.

Resim-2

Playbook tamamlandıktan sonra kontrol ettiğimizde bütün sunucuların kurulumları tamamlanmış olarak gözüküyor

Resim-3

About the author

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 Comment