Bu yazım da size Windows sunucuya login bile olmadan bir Linux Ansible kontrol makinası üzerinden nasıl Windows sunucuları konfigüre edip yönetebileceğimizi göstereceğim. Ansible ile ilgili olarak Ansible’a giriş niteliğinde olan şu ve şu yazıları da inceleyebilirsiniz.
Ansible Linux sunucuları ssh ile Windows sunucuları da WinRM kullanarak yönetir. İlk olarak size WinRM’den bahsetmek istiyorum. WinRM Vista/Server 2008 ve sonrası için adminlere uzaktan script çalıştırmamızı sağlayan özelliktir. WinRM, SOAP temelli WS-Management implemantasyonu olduğu için non-Windows ortamlar ile kullanılabilir. WinRM suncularda defaultta yüklü olarak gelir ancak Ansible kontrol makinasının connection kurması için enable edilip listener ve service konfigürasyon ayarları yapılmalıdır. Bunun için Ansible tarafından hazırlanan script’ı github’dan indirip kullanabilirsiniz. Bu script ile default portlar için http(5985) ve https(5986) listenerlar oluşturup basic authentication için service create edilir.

Resim -1
Listenerları ve servisi aşağıdaki komutlar ile kontrol edebilirsiniz.
winrm enumerate winrm/config/Listener

Resim -2
winrm get winrm/config/Service
winrm get winrm/config/Winrs

Resim -3
WinRM bağlantısını kontol etmek için remote sunucularda aşağıdaki komutlar çalıştırılabilir.
Linux => nc -z -w1 <IP or host name> 5985;echo $?
windows => Test-WSMan -ComputerName <IP or host name>

Resim – 4
/etc/ansible/hosts dosyamızı aşağıdaki gibi güncelliyorum. Variableları envanter dosyasında verilebileceğimiz gibi playbook içinde de tanımlayabiliriz.
[windows]
192.168.50.53
[windows:vars]
ansible_user=mshowto
ansible_password=Password1
ansible_connection=winrm
ansible_winrm_cert_validation=ignore
Ansible engine ile Python için winrm modülü yüklü halde gelmiyor bunun için pip ile yüklememiz gereklidir. Benim sunucumda pip daha önceden yüklü olmadığı için önce pip’i yükleyip ardından pip yardımıyla pywinrm modülünü yükleyeceğim.
yum -y install python-pip
yum install python-devel
yum groupinstall ‘development tools’
pip install pywinrm
Şimdi ihtiyacımız olan gereksinimleri tamamladık. Ad-Hoc komut ile Ansible kontrol makinamızdan windows sunucuya komut gönderim testini yapalım.

Resim -5
Ben basit bir örnek olması için win_chocolatey modülünü kullanarak Windows sunucu üzerine notepad++ ve putty yükledim. Chocolatey Windows için paket yöneticisidir. Buradan paketleri inceleyebilirsiniz.
[root@ansible-master ansible]
# cat package.yml
—
– hosts: windows
tasks:
– name: gerekli paketleri yükleme
win_chocolatey:
name: ‘{{ item }}’
state: present
with_items:
– putty
– notepadplusplus

Resim – 6
Çalıştırdığımız playbook Windows serverımız üzerinde iki tane değişiklik yaptı ve playbooktaki paketleri indirip sunucumuza kurdu. İhtiyaçlarınıza uygun Windows modüllerine bu linkten erişebilirsiniz. Göreceğiniz gibi birçok işlemi Windows sunucuya login bile olmadan Ansible kontrol makinası üzerinden yapabiliriz.
Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar
TAGs: Ansible, Windows Server, Linux, OpenSource, ansible-playbook, WinRM, Chocolatey, pywinrm,ansible ile windows server yönetimi
Günün birinde Ansible Tower kullanmak isterseniz Windows sunucualarda erişimde sıkıntı kimlik doğrulamada sıkıntı yaşayabilirsiniz. Çözümü için aşağıdaki komut işinize yarayacaktır.
winrm set winrm/config/service ‘@{AllowUnencrypted=“true”}’
Merhaba,
Buradaki adımlara ek olarak aşağıdaki variable’ı da ekleyince windowsta job çalıştırabildim.
Teşekkürler.
ansible_winrm_transport: ntlm