Ansible ile Windows Yönetimi (WinRM)

Ansible üzerinde WinRM ile Windows İşletim Sistemi Yönetimi

Ön Bilgi

Ansible konfigürasyon ve otomasyon aracını ve kurulum adımlarını önceki makalelerimde anlatmıştım. SSH ile bağlanabileceğiniz tüm sistemleri yöneteceğiniz gibi yine ajan kurmadan WinRM üzerinden Windows işletim sistemi üzerindeki işlerinizi de Ansible aracı ile kolayca yönetebilirsiniz.

Ansible ile yöneteceğiniz Windows sunucular için gerekli ayarlamaları yapmalısınız. Sorun yaşayanlar için hem ansible tarafı hem de windows tarafındaki adımlar üzerinden tekrar geçelim.

Ansible ile Windows host bağlantınızı 2 yöntemle yapabilirsiniz. Birincisi, WinRM (Windows Remote Management) üzerinden yönetmek diğeri ise; Windows hostunuza SSH client kurarak yönetilmesidir.

Ansible ile Windows bağlantısı için gerekli ayarların yapılması

Ön Gereksinimler

  • Windows hostunuz üzerinde PowerShell için 3.0 ve üzeri versiyon olması,
  • Windows hostunuz üzerinde .NET 4.0 ve üzeri versiyon olması,
  • Ansible ‘ın desteklediği Windows işletim sistemleri;  Windows 7, 8.1, ve 10; aynı zamanda sunucu olarak Windows Server 2008, 2008 R2, 2012, 2012 R2, 2016 ve 2019,
  • WinRM modülü kurulu ve port erişimlerinin aktif olması gereklidir.

Kurulum ve Yapılandırma

WinRm yapılandırması için aşağıdaki powershell script ‘ini yönetici modunda çalıştıralım. Bağlantı için Http/Https protokol listener ve servis ayarlarını yapılandıracaktır.

Script ‘i ConfigureRemotingForAnsible.ps1 adında dosya olarak oluşturduktan sonra çalıştırabilirsiniz.

https://github.com/ansible/ansible/blob/devel/examples/scripts/ConfigureRemotingForAnsible.ps1

WinRM ‘in dinlemede olan aktif portlarımızın durumunu kontrol edelim.

winrm enumerate winrm/config/Listener

Ansible Engine (yönetim) sunucusuna Python,Python Araçları ve Pywinrm kurulumunun yapılması, aşağıdaki komutları sırası ile çalıştıralım.

sudo yum install python
sudo yum install python-pip
sudo pip install --upgrade pip
sudo pip install pywinrm

Ansible hosts dosyasında windows tanımlarının yapılması – /etc/ansible/hosts

[linux]
docker01
docker02
k8s01

[win]
mustafasolmaz01

[win:vars]
ansible_user=administrator
ansible_password=P@ssw0rd
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore

Eğer windows için [win:vars] tanımlarını yapmazsanız ansible engine tanımladığınız sunucuya ssh üzerinden erişmeye çalışacaktır. Bu sebeple gerekli tanımları /etc/ansible/hosts dosyasına yaparak WinRM kullandırarak erişmesini sağlıyoruz. Kullanıcı adı, şifre bilgisini tanımlıyoruz ve sertifika kontrolünü de yoksay olarak tanımladıktan sonra dosyamızı kaydedip çıkıyoruz.

Son olarak WinRM bağlantımızı kontrol edelim

ansible win -i hosts -m win_ping

Görüldüğü üzere komut çıktısında “success” yanıtını aldım, başarılı bir şekilde çalıştı. Artık Windows sunucumda, uzaktan komut veya yaml dosyaları kullanarak istediğim otomasyon görevlerini çalıştırabilirim.

Benim hosts dosyamdaki “mustafasolmaz01” isimli windows server 2016 sunucum “win” kategorisinde tanımlı olduğu için yukarıdaki komutla hosts dosyasındaki win kategorisindeki sunucu için çalıştırmasını istedim. Eğer hosts dosyasındaki tüm sunucular için çalıştırmak isterseniz “-i” parametresi yerine “all” yazıp çalıştırabilirsiniz.

Windows ile ilgili örnekler için Ansible kategorisini takip edebilirsiniz.

Bir Cevap Yazın

EnglishTurkish
%d blogcu bunu beğendi: