VMware vSphere Otomasyon – Windows VM

Bu makalemizde VMware vSphere ortamımızdaki Windows OS templateleri kullanarak Ansible ile basitçe sanal makine deploy etme ve ilk erişim için yeterli olacak ayarları yapacağız.

Bu konularda makale yazmayı ne kadar çok istesem de vakit bulamadığım için yazamıyordum. Son zamanlarda bu konuda gelen sorular artmaya başlayınca sizleri daha fazla bekletmeyeyim dedim. Bu vesileyle yazılarımı takip ettiğiniz ve gönderdiğiniz mailler için teşekkür ederim. Küçük hatırlatma: sorularınızı ilgili makalelerin altına yorum olarak yazarsanız herkes bu cevaplardan faydalanabilir 🙂

Ansible nedir nasıl kullanılır konularına girmeyeceğim, bu konuda yeterince kaynak mevcut aklınıza takılan bir konu olursa yorum bırakmanızı rica ederim. Bu makale hali hazırda en azından giriş seviyesi ansible bilgisi olanlar için uygundur.

Windows templatelerinizde vmware tools mutlaka yüklü olmalıdır.

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

Değişkenlerimiz için vars_common.yaml dosyasını oluşturalım. Bu sayede her vm için ortak olacak değerleri tekrar girmemiz gerekmeyecek. Burada yer alan değerleri kendi ortamınıza göre güncelleyin.

Aşağıda yazdığımız değişkenleri farklı makalelerde yazacağımız playbooklar için de kullanacağız. Bu nedenle bu makale için kullanmayacağımız değişkenlerde yer alıyor olabilir bu sizi yanıltmasın.

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 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: win2022std-template
vm_name: win2022std_test
vm_folder: LabTemp/Test
cluster: FS
network_name: vlan37
datastore: san_09
disk_size_gb: 100
ram_mb: 8192
num_cpus: 4
static_ip: 10.34.254.5
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 3389 (RDP) portunun erişilip erişelemediği kontrol edecek. (Template VM üzerinde RDP nin açık olduğuna dikkat edin, 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 Windows 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: "{{ win_timezone }}"
          hostname: "{{ vm_name }}"
	    # customization_spec : Windows # 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: RDP baglantisini kontrol et
      wait_for:
        host: "{{ static_ip }}"
        port: 3389 # Windows templatede RDP açık 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

Haftaya yazacağım makalemde aynı işlemi linux dağıtımları için nasıl yapacağımızı paylaşacağım.

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

Alibaba Cloud Ansible ile Tüm ECS VM Bilgilerini Çekme

Alibaba Cloud’un sunduğu Ansible modülleri arasında yer alan community.general.ali_instance_info modülü, ECS (Elastic Compute Service) örnekleri ...

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.