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.
Aşağıda paylaştığım bir önceki yazımda windows için nasıl yapılacağına göz atabilirsiniz.
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 ayrıca pyvmomi python paketini collectionlarını 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;
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"
YAMLYukarı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.
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.
- 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
YAMLEğ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