Ansible Quick Start Notlarım: Ansible Kurulumu ve Konfigurasyonu

Ansible bir “automation engine”dir ve ansible sayesinde ajansız olarak remote sistemler üzerinde konfigurasyonlar ve deployment’lar yapma imkanı bulmaktayız. Ansible’ın gerçek gücü onun basitliğinden gelmektedir. Ansible SSH üzerinde çalışmaktadır ve ansible modülleri uzak sistemler üzerinde çalışarak onlara çok hızlı bir şekilde kurulumlar yapabilmekteyiz. Ansible’da bir tane control node‘umuz vardır ve bu control node üzerindeki “inventory” listesine göre, uzak sistemler üzerinde “playbooks” çalıştırarak kurulumları gerçekleştirebilmekteyiz.

Ben bu “Ansible Quick Start” yazılarım boyunca aşağıdaki yapıya göre ilerleyeceğim. Bir tane lokal pc’im üzerindeki Centos 7 makinası üzerinde ansible kuracağız ve bu makinenin erişebildiği 10.250.2.230 ve 231 ip adresleri workstation1 ve workstation2 makineleri üzerine günün sonunda apache servisi kuracağım ve bu web servisin index.html dosyasına çok basit bir deploy geçeceğim.

 

Centos 7 Üzerine Ansible Kurulumu

Ansible’ı centos 7 üzerinde kurabilmek için önce, centos 7 üzerine epel repository‘sini eklemeliyiz.

[root@control-node ~]# yum install epel-release

epel repository’sini ekledikten sonra yum ile artık ansible’ı control-node üzerine install edebiliriz.

[root@control-node ~]# yum install ansible

Ansible’ı başarılı bir şekilde kurduğumuzu ansible –version komutu ile teyit edelim.

[root@control-node ~]# ansible --version

Control Node ile Workstation’lar Arasındaki SSH Konfigurasyonu

Ansible uzak makinalere SSH üzerinden konfigurasyonları yaptığını yazımın başında belirtmiştim. Şimdi kontrol node ile workstation’lara arasındaki SSH bağlantısını sürekli olarak sağlayalım ve her defasında SSH parolası girmekten kurtulalım.

1. Control Node üzerine ansible kullanıcısı oluşturalım.

Control node üzerinde parolası olmayan “ansible” kullanıcısı create edelim.

[root@control-node ~]# useradd ansible

Ayrıca control node üzerinde , hostname’ler ile işlem yapacağımız için /etc/hosts dosyamızda workstation’ların dns kayıtlarının olup olmadığını teyit edelim. Eğer ortamda bir dns sunucu varsa ve isimleri doğru çözüyor iseniz o da kabuldur.

[root@control-node ~]# cat /etc/hosts

2. Workstation’lar üzerinde ansible kullanıcısı oluşturalım.

Şimdi workstation’lar üzerinde de ansible kullanıcısı oluşturalım ve bu kez ona bir password atayalım. (Aynı işlemi her iki workstation’da yapalım.)

[root@workstation1 ~]# useradd ansible
[root@workstation1 ~]# passwd ansible

3. Ansible Control Node üzerinde , Workstation’lara password sormadan log in olabilmek için gerekli olan pre-shared key konfigurasyonu

Ansible control node üzerinden workstation’lara parola sormadan login olabilmek için ssh-keygen ve ssh-copy-id konfigurasyonlarını yapalım. Bu işlemleri control-node üzerinde yapacağız.

Control-node üzerinde create ettiğimiz ansible kullanıcısına geçiş yapalım.

[root@control-node ~]# sudo su - ansible

Rsa key pair’i ssh-keygen komutu ile üretelim.

[ansible@control-node ~]$ ssh-keygen

4. Public ssh key’lerimizi workstation’lara intall edelim ve artık bu sunuculara ssh atarken bize parola sorulmayacağını teyit edelim.

Oluştuğumuz’bu key’i ssh-copy-id ile workstation1 ve workstation2 üzerine install edelim.

[ansible@control-node ~]$ ssh-copy-id workstation1
[ansible@control-node ~]$ ssh-copy-id workstation2

Artık control node üzerinden workstation’lara bize parola sorulmadan ssh atabileceğiz.

5. Wokstation’lar üzerinde ansible kullanıcısına sudo yetkisi

Ansible uzak sunuculara program kurarken veya servis çalıştırıken sudo yetkilerine ihtiyaç duymaktadır. Bu yetkiyi verebilmek için workstation’lar üzerinde visudo dosyasına aşağıdaki satırı eklememiz gerekmektedir.

[root@workstation1 ~]# visudo
ansible ALL=(ALL)   NOPASSWD: ALL

Artık ansible ile workstation üzerinde çalışma yapma için gerekli olan ön kurulumları tamamladım. Ansible ile alaklı detaylı bilgileri https://docs.ansible.com adresinde öğrenebiliriz. Bir sonraki yazımda ansible ad-hoc yapısını anlamaya çalışacağım.

İlk yorum yapan olun

Bir yanıt bırakın

E-posta hesabınız yayımlanmayacak.


*