vRealize Orchestrator VMware’deki operasyonel işlerinizi hızlıca orkestrasyona bağlayabileceğiniz VMware’in lisans gerektirmeyen ürünüdür. Ancak 8.0 ile gelen özelliklerin kullanımı için vRA ya da vRealize Suite lisansınız olması gerekmektedir. vRO ile VMware ürünlerindeki operasyonel işleri otomasyona bağlamak yanında API vasıtasıyla kendiniz veya third party pluginleriyle istediğiniz ürünün otomasyonunu yapabilirsiniz.
vRO appliance olarak deploy ediliyor ve üzerinde PostgreSQL db ile birlikte geliyor. Workflow statelerini,config bilgilerini burada store ediyor. Ayrıca workflow çalışırken her adımı db’ye kaydediyor böylece hang durumlarında data kaybı yaşanmıyor.
IDE’sini kendi sağlıyor 8.0’den önceki versionlarda java client üzerinden development yapılırken 8.0 ile hmtl üzerinden development yapılabiliyor. VS code için plugini de mevcut isterseniz VS code’da da development yapabilirsiniz. Kendi sağladığı scripting engine’de version control,variable type check exception handling gibi yetenekler sunuyor. Ayrıca 8.0’a kadar sadece javascript ile development yapılabilirken 8.0’dan sonra python,powershell,nodejs gibi dillerde kullanılabilir oldu tabi vRA lisansı ile birlikte geliyolar. Ayrıca vRA lisansı ile git entegrasyonu ve user right management özellikleri de gelmektedir. Scripting engine olarak Mozilla’nın Rhino’sunu kullanıyor.
Authentication provider olarak genelde vCenter üzerinden konfig yapılıyor amavRA,LDAP,AD gibi providerlar da kullanılabilir.
Photon üzerinde container altyapısında çalışıyor. Server service, control center service ve orchestration ui gibi appliance componentleri kubernetes katmanı ile yönetiliyor.
3 node’lu yapıda vro cluster’ı deploy etmek için aşağıdaki scripti kullabilirsiniz. Load balancer olarak Kemp’i kullandım.
vRO HA deployment script:
#!/usr/bin/pwsh Connect-VIServer vcenter_ip $vroovffile = '/vro/O11N_VA-8.1.0.9326-15995344_OVF10.ova' $vroovfconfiguration = Get-ovfconfiguration -ovf $vroovffile $vroinstances = @{ 'hostname' = 'vro01_fqdn' 'ip' = 'vro01_ip' 'vmname' = 'vro01' 'password' = 'strongpass' }, @{ 'hostname' = 'vro02_fqdn' 'ip' = 'vro02_ip' 'vmname' = ' vro02' 'password' = 'strongpass' }, @{ 'hostname' = 'vro03_fqdn' 'ip' = 'vro03_ip' 'vmname' = ' vro03' 'password' = 'strongpass' } foreach ($vroinstance in $vroinstances){ $vroovfconfiguration.Common.vami.hostname.value = $vroinstance.hostname $vroovfconfiguration.Common.varoot_password.value = $vroinstance.password $vroovfconfiguration.Common.va_ssh_enabled.value = $true $vroovfconfiguration.IpAssignment.IpProtocol.value = 'IPv4' $vroovfconfiguration.NetworkMapping.Network_1.value = 'portgrup_name' $vroovfconfiguration.vami.VMware_vRealize_Orchestrator_Appliance.gateway.value = 'default_gateway' $vroovfconfiguration.vami.VMware_vRealize_Orchestrator_Appliance.domain.value = 'domain_name' $vroovfconfiguration.vami.VMware_vRealize_Orchestrator_Appliance.searchpath.value = 'domain_name' $vroovfconfiguration.vami.VMware_vRealize_Orchestrator_Appliance.DNS.value = 'dns_ip' $vroovfconfiguration.vami.VMware_vRealize_Orchestrator_Appliance.ip0.value = $vroinstance.ip $vroovfconfiguration.vami.VMware_vRealize_Orchestrator_Appliance.netmask0.value = 'Subnetmask' write-host "VRO appliances deployment" -ForegroundColor Green $vroovfconfiguration.Common.vami | fl * $vroovfconfiguration.Common | fl * $vroovfconfiguration.vami.VMware_vRealize_Orchestrator_Appliance | fl * $vroovfconfiguration.NetworkMapping | fl * Import-Vapp -ovfConfiguration $vroovfconfiguration -VMhost 'vcenter_ip' -source $vroovffile -name $vroinstance.vmname -datastore 'datastore_name -InventoryLocation 'vcenter_folder' } write-host "LB appliance deployment" -ForegroundColor Green $lb_vmname = 'vrolb' $lbovffile = '/vro/lb/LoadMaster-VLM-7.2.50.0.18765.RELEASE-VMware-OVF-FREE.ova' $lbovfconfiguration = Get-ovfconfiguration -ovf $lbovffile $lbovfconfiguration.NetworkMapping.Network.value = 'portgroup_name' $lbovfconfiguration.NetworkMapping.Farm.value = 'portgroup_name' Import-Vapp -ovfConfiguration $lbovfconfiguration -VMhost 'vcenter_ip' -source $lbovffile -name $lb_vmname -datastore 'datastore_name' -InventoryLocation 'folder'
Load balancer’da applianceların 443 portlarını member olarak eklemelisiniz ayrıca healtcheck için de 8008 portundan /health url’i eklenmelidir.
vro01 node’unu master olarak kabul edip ssh yapıyoruz ve aşağıdaki komut ile cluster yapıya çeviriyoruz. Sonrasında da control-center’daki host settings’den hostname i load-balancer-fqdn olarak değiştirmeliyiz.
#vracli load-balancer set load-balancer-fqdn
vro02 ve vro03 nodelarınıda bu cluster’a join ediyoruz
#vracli cluster join load-balancer-fqdn
Son olarak’da deploy scriptini çalıştırıp kubectl get nodes -w komutu ile diğer nodeların eklenmesini izliyoruz.
#/opt/scripts/deploy.sh Prelude has been deployed successfully To access, go to https:// load-balancer-fqdn
Son olarak aşağıdaki gibi bi çıktı olması gerekmektedir.
root@vro01 [ ~ ]# kubectl get nodes NAME STATUS ROLES AGE VERSION vro01_fqdn Ready master 5d v1.14.6 vro02_fqdn Ready master 4d22h v1.14.6 vro03_fqdn Ready master 4d22h v1.14.6
Kurulum öncesinde dns tanımlarının tam yapılması gerekmektedir. Son olarak da aşağıdaki komut ile root şifresi expire olmaması sağlanabilir
# passwd -x 99999 root
LB olarak tanımadığımız fqdn ile erişip authentication provider veya lisans gibi ayarları yapabilirsiniz.
Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar:
www.mshowto.org
TAGs: VRO, VMware, Orchestrator, Automation, vRealize Orchestrator