Ansible – Windows Sunucuları Yönetin

Ansible ile windows sunucularımızı yönetmek için bir başlangıç yapalım istedim,

Öncelikle tamamlamamız gereken bazı adımlar var

  1. Kerberos yapılandıralım
  2. Windows Sunucumuzda WinRM servisini ayaklandırmak
  3. Windows sunucularımızı ansible inventory’mize tanımlamak
  4. Örnek birkaç çalışma

1.  Kerberos yapılandıralım

Örnek yapılandırmalar için kullandığım işletim sistemimi CentOS dan Redhat 7.4 olarak değiştirdim. Tüm yapılandırmalar bu system üzerinden örneklendiriliyor.

a. Kerberos yüklememizi yapalım;

sudo yum -y install python-devel krb5-devel krb5-libs krb5-workstation

b. gcc kütüphanelerine ihtiyacımız olacak;

sudo yum install gcc

c. Winrm bağlantılarımız için Kerberos desteği gerekecek;

sudo pip install "pywinrm[kerberos]"

d. Kerberos konfigurasyonumuzu yapacağız. Bunun için  /etc/krb5.conf dosyasını düzenleyeceğiz. Benim laboratuarımda aşağıdaki bilgiler mevcut, buna göre siz kendi ortamınıza uyarlarsınız.

Active Directory Domain’im: ae.local
Domain Controller sunucum: mydc01.ae.local
Service Kullanıcım: myadmin@ae.local

Bu bilgilere göre benim konfigurasyon dosyam aşağıdaki şekilde,

nano /etc/krb5.conf  komutu ile dosyamızı düzenleyelim. Konfigurasyonun küçük büyük harf duyarlı olduğunu hatırlatmak isterim.

Screen Capture: /etc/krb5.cnf

Eğer her şey yolunda ise kinit myadmin@AE.LOCAL komutunu verdiğimizde aşağıdaki gibi bir mesaj bizi karşılamalı, klist komutu ile de ticket durumumuzu gözlemleyebilmeliyiz. (Benim myadmin in şifresi yakında expire olacakmış :))

Screen Capture: kinit klist

2. Windows Sunucumuzda WinRM Servisini ayaklandıralım:

https://github.com/ansible/ansible/blob/devel/examples/scripts/ConfigureRemotingForAnsible.ps1 adresinde bulunan script bize bu konuda hayli faydalı olacaktır. Bu script’i çalıştırırken faydalı olabileceğini düşündüğüm parametrelerini aşağıya yazıyorum. Siz kendi ortamınız için gerekli seçimleri yapabilirsiniz. Script’in içinde hangi parametrenin ne yaptığı ile ilgili detaylı bilgi mevcut. Script’i çalıştırmadan once powershell içinde aşağıdaki kodu verin.

Set-ExecutionPolicy Unrestricted

Script http listener’ı da açtığı için bir güvenlik zaafiyeti yaşamamak adına test ortamımda dahi Basic Authentication’ı disable ediyorum.

ConfigureRemotingForAnsible.ps1 -DisableBasicAuth

Bu komut sizin için Windows üzerinde WinRM I yapılandırdı. Test ortamı için firewall’u disable edebiliriz.

3. Windows Sunucularımızı Ansible Inventory’mize ekleyelim.

nano /etc/ansible/inventory.yml

Inventory dosyamızın içeriği aşağıdaki gibi olacak,

[windows]
SunucuAdımız

[windows:vars]
ansible_ssh_user=myadmin@AE.LOCAL
ansible_ssh_pass=Sifreniz
ansible_ssh_port=5986
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore

#AE.LOCAL benim test ortamımdaki active directory domainim

Ansible ile windows arasındaki iletişimin https üzerinden olmasını istediğim için ssh_port olarak 5986 seçtim, eğer default winrm http portunu kullanacaksanız 5985 kullanabilirsiniz.

Sertifika oluşturmak ile uğraşmadım, sertifika kontrolünü şimdlik pass geçmek için ignore dedim. Bu konuda istek gelirse nasıl Enterprise Sertifika altyapınızdan sertifika oluşturup kullanabileceğinizi de anlatırım. Eğer bu tip bir isteğiniz varsa yorum bölümünden yazabilirsiniz.

Aman efendim sepet efendim. Her şeyimiz hazır. Hadi örnek bir komut çalıştıralım.

ansible windows -i inventory.yml -m win_ping 

Bu sunucu üzerinde Print Spooler servisine ihtiyacım yok, hadi bu servisi de disable edelim;

ansible windows -i inventory.yml -m win_service -a "name=spooler state=stopped start_mode=disabled"

WinRM konusunda daha geniş bilgi istek olursa ileri de ekleyeceğim.

Sevgi ile kalın.

 

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir