VMware vSphere Otomasyon – Linux VM

Bu yazımda VMware vSphere ortamımızdaki herhangi bir Linux OS template’i kullanarak Ansible ile basitçe sanal makine deploy etme ve ilk erişim için yeterli olacak ayarları yapacağız.

Sayfanın sonunda paylaştığım bir önceki makalemde Windows için de örnek manifest mevcut.

Linux dağıtımınız her ne olursa olsun kullanacağınız template içerisinde vmware tools ya da open-vm-tools ve perl mutlaka yüklü olmalıdır. Aksi halde customization adımı gerçekleşmeyecektir.

Ansible için ise community.vmware collectionı ayrıca pyvmomi python paketi yüklü olmalıdır.

Bir önceki makalemizdeki gibi bir ortak değişkenler bir de her vm için farklı olacak değişkenler için iki farklı değişken dosyası oluşturalım.

Ortak değişkenler için;

vars_common.yaml
vcenter_hostname: vcenter.fatihsolen.com
vcenter_username: ansible@fatihsolen.com
vcenter_password: Parola
datacenter: Istanbul
dns_servers: ['10.34.0.11', '10.34.0.11']
dns_suffix: fatihsolen.com
win_timezone: "Turkey Standard Time"
lin_timezone: "Europe/Istanbul"
YAML

Yukarıdaki değerleri kendinize uygun şekilde girdikten sonra her sanal makine deploymentı için değişkenleri güncelleyeceğimiz vars_vm.yaml dosyasını oluşturalım.

vars_vm.yaml
template_name: rocky8-template
vm_name: rocky8_test
vm_folder: LabTemp/Test
cluster: FS
network_name: vlan37
datastore: san_09
disk_size_gb: 40
ram_mb: 4096
num_cpus: 2
static_ip: 10.34.254.9
netmask: 255.255.255.0
gateway: 10.34.254.1
YAML

Şimdi bu değişkenleri kullanacak playbookumuzu yazalım. Bu playbook belirttiğimiz templateden sanal makinemizi clonelayıp, ip, dns, subnet, gateway, sanal makine kaynakları, timezone gibi bilgilerini girecek. Sanal makineyi power-on edip sonrasında 22 (SSH) portunun erişilip erişelemediği kontrol edecek. (Template VM üzerinde ssh server kurulu olduğuna ve firewall üzerinden izin verildiğine emin olun, alternatif olarak sunucu üzerindeki başka bir portu da kontrol ettirebilirsiniz.)

Hem vmware_guest, hem de vmware_guest/disk alanında datastore alanı mevcut, bildiğimiz gibi vm dosyaları ile diskleri farklı datastorelarda konumlandırabiliyoruz, eğer birden fazla disk eklemek isterseniz de yine disk altındaki datastore alanına girebilirsiniz.

create_windows_vm.yaml
 - name: Templateden Rocky Linux VM Olusturma
   hosts: localhost
   connection: local
   vars_files:
 	- vars_common.yaml
	- vars_vm.yaml

   tasks:
    - name: VM Template Clone
      vmware_guest:
        customization : 
          domain: "{{ dns_suffix }}"
          dns_servers: "{{ dns_servers }}"
          dns_suffix: "{{ dns_suffix }}"
          timezone: "{{ lin_timezone }}"
          hostname: "{{ vm_name }}"
	    # customization_spec : Rocky # Eger VMware uzerinde guest customization templateiniz var ise adini buraya yazabilirsiniz. Bu durumda bir ust satırı silmeniz/comment out gerekir, ayrıca asagida vereceginiz ip vb. degerleri template degerleri ile ezecektir.
        hostname: "{{ vcenter_hostname }}"
        username: "{{ vcenter_username }}"
        password: "{{ vcenter_password }}"
        validate_certs: no
        name: "{{ vm_name }}"
        template: "{{ template_name }}"
        folder: "{{ vm_folder }}"
        datastore: "{{ datastore }}"
	    # autoselect_datastore: true # Bir ust satirda spesifik bir datastore belirtiyoruz. Eger en fazla bos alana sahip datastoreun otomatik secilmesini istiyorsanız ust satiri silin/comment out edin.
        state: powered-off
        datacenter: "{{ datacenter }}"
        cluster: "{{ cluster }}"
        hardware:
          memory_mb: "{{ ram_mb }}"
          num_cpus: "{{ num_cpus }}"
          scsi: paravirtual
        disk:
          - size_gb: "{{ disk_size_gb }}"
            type: thick
          # autoselect_datastore: true
            datastore: "{{ datastore }}"
        networks:
          - name: "{{ network_name }}"
            ip: "{{ static_ip }}"
            netmask: "{{ netmask }}"
            gateway: "{{ gateway }}"
      delegate_to: localhost
      run_once: true

    - name: VM'i calistir
      vmware_guest_powerstate:
        hostname: "{{ vcenter_hostname }}"
        username: "{{ vcenter_username }}"
        password: "{{ vcenter_password }}"
        validate_certs: no
        name: "{{ vm_name }}"
        state: powered-on
      delegate_to: localhost
      run_once: true

    - name: SSH baglantisini kontrol et
      wait_for:
        host: "{{ static_ip }}"
        port: 22 # OS templatede ssh-server kurulu ve firewall izni var ise
        delay: 10
        timeout: 300
        sleep: 5
      delegate_to: localhost
      run_once: true
YAML

Eğer herşey yolunda gittiyse artık yeni kurduğunuz vm’e belirttiğiniz ip adresi üzerinden erişebilir olmanız gerekiyor. Dilerseniz bu aşamada makinenizi customization alanında domaine de join edebilirsiniz. Kullanabileceğiniz tüm parametreler için aşağıdaki resmi dokumana göz atabilirsiniz.

https://docs.ansible.com/ansible/latest/collections/community/vmware/vmware_guest_module.html

İLGİNİZİ ÇEKEBİLİR

Alibaba Cloud ECS – Ansible Windows VM Kurulumu

Günümüzde, işletmelerin hızlı ve etkili bir şekilde sanal makineler oluşturması ve yönetmesi, başarılı bir IT ...

Alibaba Cloud Compute Services Ansible Kullanımı

Ansible, Alibaba Cloud Compute Services (Alicloud) üzerinde kontrol ve yönetim sağlamak için bir dizi modül ...

VMware Explore 2023

VMware Explore 2023, kurumsal uygulamalar, bulut mimarisi, altyapı, EUC, network ve güvenlik ile ilgilenenler de ...

VMware Power Actions 1.0

VMware Power Actions uzun zamandır takip ediyordum ve sonunda 1.0 sürümünün yayınlandığını görmek beni gerçekten ...

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.