Ansible ile değişken kullanımı group_vars

Efendim biraz içeriye doğru bir giriş yapalım ve ansible ile daha once tanımladığımız bir değişkeni kullanıcı adı olarak kullanarak bir windows sunucu üzerinde local kullanıcı oluşturalım. Windows üzerinde ansible ile nasıl kullanıcı oluşturulur sorusunun da cevabını vermiş olacağız.

Öncelikle dizin yapımı göstermek istiyorum;

.
├── ansible.cfg
├── group_vars
│   └── all
├── hosts
├── inventory.yml
└── roles

group_vars adında bir klasör altına nano all komutu ile bir dosya oluşturuyorum. Bu dosya bir yaml dosya olduğu için “—” unutmadan değişkenimi tanımlıyorum. Son durumda dosyamız aşağıdaki şekilde içeriğe sahip olacak;

Şimdi bu değişkeni kullanarak bir windows kullanıcı oluşturalım. Bunun için Windows inventory’mde bulunan tüm windowslarda çalışmak üzere aşağıdaki komutu gönderiyorum.

ansible windows -i inventory.yml -m win_user -a "name={{username}} password=Ae123456"

Windows grubumda sadece myansiblewin.ae.local sunucusu tanımlı olduğu için sadece bu sunucuda kullanıcım oluşturuldu.

Gördüğünüz gibi username değişkenimize atadığımız şekilde (my_localuser) kullanıcımız oluştu. Bunu unutmayın daha sonraki örneklerimizde daha anlamlı senaryolarda kullanacağız.

 

Sevgi ile kalın.

 

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.

 

Ansible nedir?

Konfigürasyon yönetimi sistemleri, çok sayıda sunucuyu yöneticilere ve operasyon ekiplerine kolaylıkla kontrol edebilmek için tasarlanmıştır. Bir merkezi konumdan birçok farklı sistemi otomatik olarak kontrol etmenize izin verir. Cheff ve Puppet gibi Linux sistemlerinde kullanılabilen pek çok popüler yapılandırma yönetimi sistemi olmasına rağmen, bunlar çoğu insanın istediği veya ihtiyaç duyduğu karmaşıklıktan daha karmaşıktır. Ansible, bu seçeneklere mükemmel bir alternatiftir çünkü başlamak için çok daha az masrafa sahiptir.

Ansible, Ansible bileşenleri kurulu ve yapılandırılmış bir bilgisayardan istemci makinelerini yapılandırarak çalışır. Uzak makinelerden bilgi almak, komutlar vermek ve dosyaları kopyalamak için normal SSH kanalları veya Windows istemciler için WINRM üzerinden iletişim kurar. Bu nedenle Ansible istemci bilgisayarlara herhangi bir ek yazılım yüklenmesini gerektirmez. Bu, Ansible’ın sunucuların yönetimini basitleştiren özelliğidir. Bir SSH bağlantısına sahip olan herhangi bir sunucu, Ansible’ın yapılandırma şemsiyesine, yaşam döngüsünde hangi aşamada olursa olsun getirilebilir.

Ansible modüler bir yaklaşımı benimser, ana sistemin işlevlerini belirli senaryolara göre genişletmeyi kolaylaştırır. Modüller herhangi bir dilde yazılabilir ve standart JSON’da iletişim kurabilir. Konfigürasyon dosyaları esas olarak YAML veri serileştirme biçiminde yazılmıştır; çünkü ifade niteliği ve popüler biçimlendirme dillerine olan benzerliği nedeniyle. Ansible, istemcilerle komut satırı araçlarıyla veya Playbooks adlı yapılandırma komut dosyaları aracılığıyla etkileşimde bulunabilir.

Bundan sonraki yazılarımda Ansible için ortam hazırlanması, kurulumu ve konfigurasyonu gibi konularda paylaşmak istediğim pek çok konu var. Özellikle windows istemcilerin yönetiminde konfigurasyon ve örnek playbook’lara yer vermek istiyorum. Ansible’ın windows sunucular üzerine kurulumundan ziyade windows işletim sistemine sahip sunucularımızın yönetiminde örnek senaryoları sıfırdan sonuna kadar aktarmaya çalışacağım.