Vmware SDK ile Ortam Uyumluluk Kontrol Otomasyonu

Mert Kışlakçı
Turk Telekom Bulut Teknolojileri
4 min readOct 20, 2023

Sanallaştırma ve bulut teknolojilerinin giderek daha fazla benimsendiği günümüzde, VMware altyapısının uyumlu ve güvende olduğundan emin olmak kritik bir öneme sahiptir. Bu yazı dizisi boyunca, kendi otomasyon sisteminizi geliştirerek VMware ortamlarının uyumluluk kontrolünü nasıl gerçekleştirebileceğinizi keşfedeceksiniz.

Uyumluluk Kontrol

Ortam uyumluluk kontrolü, kurumlar için hayati önem taşır. Uyumluluk gereksinimlerine uymak, güvenlik açıklarını kapatmak ve operasyonel sürekliliği sağlamak için kritik bir adımdır. VMware altyapısının uyumluluğunu sık sık kontrol etmek ve otomatikleştirmek, sorunların erken tespit edilmesini ve çözülmesini sağlar.

  1. Geliştirme Ortamını Hazırlama

İlk olarak, VMware SDK ile etkileşimde bulunmak için kullanacağınız programlama dilini seçmelisiniz.

VMware SDK, genellikle Python, Java, Perl ve PowerShell gibi dillerle entegre edilebilir. Hangi dilin uygun olduğunu belirleyerek ilgili kütüphaneleri ve araçları edinmelisiniz.

2. Uyumluluk Kurallarını Belirleme

Uyumluluk kontrolü için gereken kuralları tanımlayın. Örneğin, vmware sunucularındaki SSH hizmetinin sadece kullanılırken açık tutulması ve kullanılmadığı zamanlarda bu servisin etkin olmaması gerekir.

3. Otomasyon Kodunu Geliştirme

VMware SDK’yı ve tanımladığınız uyumluluk kurallarını kullanarak otomasyon kodunuzu geliştirin. Aşağıdaki örnek, VMware SDK aracılığıyla Python kullanarak SSH hizmetinin durumunun nasıl alınacağını gösterir. connect.SmartConnectNoSSL() fonksiyonuna vshphere client (vcenter) IP’nizi, kullanıcı adınızı ve şifrenizi girdiğinizde script size ortamda çalışan sunuculardaki SSH hizmetinin durumunu getirecektir.

from pyVim import connect 
from pyVmomi import vim

# vCenter Sunucusuna bağlanma
si = connect.SmartConnectNoSSL(host= "vcenter-ip" , user= "username" , pwd= "password" )

# ESXi host alma
içeriği = si.RetrieveContent()
host_view = content.viewManager.CreateContainerView(content.rootFolder, [vim.HostSystem], True ) host_view.view'deki ana bilgisayar

için : print ( "Ana Bilgisayar Adı: " + ana bilgisayar.adı) print ( "SSH Etkin: " + str (ana bilgisayar) .config.adminIpConfig.sshEnabled)) # vCenter Sunucusu ile birleştirmeyi kapatma connect.Disconnect(si)



4. Uyumluluk Kontrollerini Veritabanına Aktarma

Yukarıda örneği verilen otomasyon kodunu kullanarak belirlediğiniz uyumluluk kurallarını düzenli olarak kontrol etmek için önce alınan çıktıları bir veritabanına aktarmanız gerekmektedir. Daha sonra bu veritabanında yer alan bilgileri izleme araçlarından biri olan Grafana gibi bir araca aktarıp görselleştirebilirsiniz. Aşağıda yer alan script ile sunucudan elde edilen SSH hizmet durumlarının sorgulandıktan sonra postgresql veritabanına aktarılması yer almaktadır.

from pyVim import connect
from pyVmomi import vim
import psycopg2

# vCenter Sunucusuna bağlanma
si = connect.SmartConnectNoSSL(host="vcenter-ip", user="username", pwd="password")

# PostgreSQL veritabanı bağlantısı için gerekli bilgiler
db_host = "postgresql-host"
db_port = "postgresql-port"
db_name = "postgresql-db-name"
db_user = "postgresql-username"
db_password = "postgresql-password"

# PostgreSQL veritabanına bağlanma
try:
connection = psycopg2.connect(
host=db_host,
port=db_port,
database=db_name,
user=db_user,
password=db_password
)

# Bağlantı başarılı olduysa SQL sorgularını burada çalıştırabilirsiniz.

# Örnek bir sorgu çalıştırma
cursor = connection.cursor()

# ESXi host bilgilerini alma
content = si.RetrieveContent()
host_view = content.viewManager.CreateContainerView(content.rootFolder, [vim.HostSystem], True)

for host in host_view.view:
host_name = host.name
ssh_enabled = host.config.adminIpConfig.sshEnabled

# SSH hizmeti uyumsuzsa, PostgreSQL veritabanına kaydetme
if not ssh_enabled:
insert_query = "INSERT INTO uyumsuzluklar (host_name, uyumsuzluk_tarihi, uyumsuzluk_mesaji) VALUES (%s, now(), %s)"
cursor.execute(insert_query, (host_name, "SSH hizmeti kapalı"))
connection.commit()

# Bağlantıyı kapatma
cursor.close()
connection.close()

except Exception as error:
print("Hata:", error)
finally:
# vCenter Sunucusu ile bağlantıyı kapatma
if si:
connect.Disconnect(si)

5. Otomasyona Dahil Etmek

Uyumsuzlukları tespit etmek ve kodu otomatik olarak belirli aralıklarla için Ansible gibi bir otomasyon aracını kullanabilirsiniz. Yazılan scriptin ansible üzerinde çalıştırılabilmesi amacıyla aşağıdaki .yml kullanabilirsiniz.

---
- name: Localde Python Kodunu Çalıştır
hosts: localhost
gather_facts: no
tasks:
- name: Python Kodu Çalıştırma
command: python /path/to/your/python_script.py
# Eğer virtualenv kullanıyorsanız aşağıdaki satırı ekleyin:
# environment:
# PATH: "/path/to/your/virtualenv/bin:{{ ansible_env.PATH }}"
register: python_output

# İsterseniz, Python kodunun çıktısını görüntülemek için aşağıdaki satırı ekleyebilirsiniz.
- debug:
var: python_output.stdout_lines

Bu YAML dosyası, localdeki Python kodunu /path/to/your/python_script.py olarak belirtilen dosyayı çalıştırmak için kullanır. Eğer Python kodunuzu bir sanal ortam içinde çalıştırıyorsanız, sanal ortamın yolunu PATH ortam değişkenine eklemek için yorum satırlarını kaldırabilirsiniz.

6. İzleme Aracı: Grafana

Veritabanına kaydettiğiniz bilgileri daha sonra kullanarak bir izleme aracına aktarabilirsiniz. Aşağıdaki görselde, veritabanına aktarılan sunucuların SSH hizmetlerinin durumları görüntülenmektedir. Bu hizmetin aktif olduğu sunucularda uyarı oluşması için kırmızı ile renklendirilmiştir. Bu görsel, uyumsuzlukların hızlı ve görsel bir şekilde izlenebileceğini göstermektedir.

Grafana

Bu yazı dizisi boyunca, VMware SDK kullanarak kendi uyumluluk otomasyon sisteminizi nasıl tasarlayabileceğinizi adım adım inceledik. VMware altyapısının güvenli ve uyumlu bir şekilde çalıştığından emin olmak, sanallaştırma ve bulut teknolojilerinin benimsendiği günümüzde büyük bir öneme sahiptir. Bu nedenle, kendi otomasyon sisteminizi oluşturarak VMware ortamlarınızı düzenli olarak kontrol etme ve uyumsuzlukları tespit etme yeteneğine sahip oldunuz.

Başlangıçta VMware SDK’nın nasıl kurulacağını ve kullanılacağını öğrendiniz. Ardından, uyumluluk kontrolü için gerekli kuralları tanımladınız ve bu kuralları VMware ortamlarında nasıl uygulayabileceğinizi keşfettiniz. Ayrıca, otomasyon kodunuzu geliştirmek için Python gibi programlama dillerini ve Ansible gibi otomasyon araçlarını nasıl kullanabileceğinizi öğrendiniz. Son olarak, uyumluluk kontrollerinin sonuçlarını bir veritabanına kaydederek ve bu verileri Grafana gibi bir izleme aracıyla görselleştirerek, VMware ortamlarınızı daha etkili bir şekilde izlemeyi sağladınız.

Umarım bu yazı dizisi, VMware ortamlarınızın uyumluluğunu kontrol etmek ve yönetmek için size değerli bir rehberlik sağlamıştır. Gelecekteki projelerinizde bu bilgileri kullanarak daha güvenli ve uyumlu VMware ortamları oluşturabilirsiniz.

--

--

Mert Kışlakçı
Turk Telekom Bulut Teknolojileri

#Cloud Computing #vmware #virtualization #redhat #EdgeComputing #DataScience #AI #IoT #ComputerVision #Python #OpenCV #C #Virtualization