Bu yazımızda Ansible programında bir playbook oluşturarak Windows sunularımızı uzaktan güncelleştirme işlemini gerçekleştireceğiz.

Ansible Nedir?

Ansible bilgisayarları yapılandırmak ve yönetmek için kullanılan bir özgür yazılım platformu. Çok uçlu yazılım dağıtımını, özel amaçlı görev yürütmeyi ve yapılandırma yönetimini birleştirir.(wikipedi)

Ansible Playbook Nedir?

Sunucularımızda gerçekleştirmek istediğimiz işlemlerin (kurulum, düzenleme, yönetim gibi) ansible tarafından anlaşılacak şekilde yazmamızı sağlayan dildir. Yani kısaca ansible ile uzaktaki  sistemleri yönetebilir ayrıca isteğimize uygun şekilde oluşturduğumuz playbook lar aracılığıyla işlemleri otomatikleştirebiliriz.

Ansible ve Sunucular Arası İletişim

Ansible açık kaynak kodlu özgür  bir yazılım olduğu için GNU Linux/Unix/*BSD  sistemler ile “ssh” bağlantısı aracılığıyla iletişim sağlar. Windows Sistemlerde ise iletişim sağlamak için kullandığı programın adı “winrm” dir. Windows Uzaktan Yönetimi (WinRM), farklı satıcılardan temin edilen donanım ve işletim sistemlerinin birlikte çalışmasını sağlayan standart Basit Nesne Erişim Protokolü (SOAP) tabanlı ve güvenlik duvarı uyumlu bir protokol olan WS-Management Protokolü’nün Microsoft uygulamasıdır. Winrm güncel Windows sunucularda halihazırda bulunmaktadır.

İlk olarak Ansible ile Windows sunucularımızın iletişimini sağlamak için hazırlanmış olan bir powershell scriptini bağlantı kurmak istediğimiz  Windows sunucunun terminalinde çalıştırmamız gerekiyor. Buraya tıklayarak ihtiyacımız olan scripti indirdik ve masaüstüne attıktan sonra powershell komut satırından scriptimizin olduğu dizine gidiyoruz ve

komutuyla çalıştırıyoruz. Sonrasında aşağıdakine benzer bir çıktı alacağız.

 

Windows tarafında yapmamız gerekenler sadece bu kadar. Şimdi Ansible sunucumuza geçiyoruz ve buradaki işlemlere başlıyoruz.

İlk olarak sunucumuza ait bilgileri “hosts” dosyamıza girmemiz gerekiyor. Benim Ansible host dosyam “sunucular” isminde ve “/etc/ansible/” dizinialtında buluyor. (Varsayılan olarak ansible host dosyası yolu “/etc/ansible/hosts”.)

Dosyamızda aşağıdaki açıklamalara uygun şekilde değişiklikler yapıyoruz.

 

  1. Satırda köşeli parantezlerin içerisinde sunucularımızın grup adını yazıyoruz.
  2. Satırda sunucumuza ait olan ip adresini yazıyoruz.
  3. Satırda ise windows grubundaki sunucularımıza ait olan değerleri (vars-variables) yazmaya başlıyoruz.
  4. Satırda ilk olarak (windows grubundaki) sunucularımızdaki hangi kullanıcıyı kullanacağımızı belirtiyoruz.
  5. Satırda (windows grubundaki) sunucularımıza bağlanmak için kullanacağımız kullanıcıya ait olan parola bilgisini giriyoruz.
  6. Satırda ansible ile (windows grubundaki) sunucularımızın iletişimini sağlayacak olan yöntemi belirtiyoruz.(AYNI KALACAK)
  7. Satırda windows sunuculara bağlanırken kullanılan yöntem nedeniylesertifika doğrulamayı gözardı ediyoruz.(AYNI KALACAK)

Tüm bu satırları kendi sistemimize göre uyarladıktan sonra dosyamızdaki değişiklikleri kayıt ederek çıkıyoruz.

Örnek dosya içeriği:

 

Şimdi çalışma kitabımızı (playbook) hazırlamadan önce bağlantımızı test edelim. Bunu için komut satırına aşağıdaki komutları yazıyoruz ve çıktısının ekrandaki gibi yeşil olması gerekiyor.

 

Şimdi ise çalışma kitabını hazırlamaya başlıyoruz. Bunun için ilk olarak ansible dizinimizin içerisinde bir dosya oluşturup açıyoruz.

 

 

  1. Playbook yazarken kullanacağımız dil yaml olduğu için her zaman ilk satıra 3 tane “-” işareti ekliyoruz.
  2. Satırda oynatacağımız playbook umuzun adını yazıyoruz.
  3. Satırda playbookumuzun hangi gruptaki sunucularda uygulanacağını belirtmek için sunucularımızın grup adını yazıyoruz.
  4. Satırda Yapacağımız işleri belirtmeye başlıyoruz.
  5. Satırda yapacağımız işin adını belirtiyoruz.
  6. Satırda kullanacağımız modülü belirtiyoruz.
  7. Satırda kullanacağımız modüle ait girdi parametresini yazıyoruz.
  8. Satırda playbookumuz çalıştıktan sonra ekrana hangi tip bilgilerin düşmesini istiyorsak ayarlıyoruz. Biz sonuçların düşmesini istediğimiz için “result” isteğini yazdık.
  9. Satırda yeniden başlatma ihtimaline karşın “win_reboot” modülünü ekliyoruz.
  10. Satırda yeniden başlatma işleminin hangi durumda gerçekleştirileceğine ait olan parametreyi yazıyoruz.

Eğer windows sunucularımıza tüm güncelleştirme paketlerinin yüklenmesini istiyorsak 7. satırdaki kısmı: category_names: [‘SecurityUpdates’,’CriticalUpdates’,’UpdateRollups’, ‘Updates’, ‘DefinitionUpdates’]  şeklinde değiştirmemiz yeterli olacaktır.

Eğer sizinde sunucularınıza ait grup adı “windows” ise oluşturduğunuz playbook dosyasının içeriği tam olarak aşağıdaki gibi olmalıdır.

 

Playbook içerisindeki satırları alt alta hizalamak için TAB tuşu kullanıldığında hata vermektedir.

Eğer playbook u çalıştırdığınızda hata alırsanız kullanılan yaml dili hassas olduğu için üsetteki ekran görüntüsüne uygun şekilde düzenlemenizi gözden geçirebilirsiniz.

Şimdi tek yapmamız gereken konsola “ansible-playbook playbook_dosyamızın_adı” yazmak ve çıktıları takip etmeye başlamak.

 

Eğer sunucumuz uzun süre güncelleştirilmemişse uzun bir süre ekranımız sadece yukarıdakine benzer bir şekilde durur. Gerekli güncelleştirme işlemi yapıldıktan sonra yaptığıız ayarlamadan dolayı ekranımıza yeşil renkte sonuç ile ilgili bilgiler gelmektedir. Bu bilgilerde kısaca yüklenilen güncelleştirme paketi adı, KB değeri,paket tipi gibi özellikler yazmaktadır.

En son kısımda ise hangi sunucularda başarı sağlandı, kaç değişiklik yapıldı, hangi sunuculara ulaşılamadı gibi özet bilgiler yer almaktadır.

 

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

This site uses Akismet to reduce spam. Learn how your comment data is processed.