ANSIBLE NEDİR?.. KURULUMU.. VE KULLANIMI…

Uğur Duran
4 min readJun 27, 2021

--

Selamlar , ben Uğur . Bugün sizlere workfordreamseries beşinci sayımda sizlere herkes için otomasyon diyerek kullandığımız “Ansible” hakkında bilgi verdikten sonra ve kullanımını, ansible ile apache kurulumunu aktarmak için kalemi elime alıyorum..

ansible

Zaman hepimiz için çok değerli. Bilişim sektörü çalışanları olarak bu zamanı en uygun şekilde değerlendirebilmek için otomasyon sistemlerine de muhakkak hakim olmamız gerekiyor.

IT operasyonlarını otomatize etmek isteyen fakat nereden başlayacağını bilemeyen veya mevcut seçenekler arasında seçim yapamayan arkadaşlar için umarım bilgilendirici bir yazı olur.

1- Ansible Nedir?

Ansible Red-Hat‘in geliştirdiği, Python ve Ruby ile yazılmış özgür bir otomasyon yazılımıdır. Yöneteceğimiz sunucular üzerine herhangi bir agent kurmadan(only unix, windows’da çalıştırmak istersek script çalıştırmamız gerekiyor.) işlem yapmamıza olanak sağlar. Bunun yanında bünyesinde barındırdığı 400’den fazla modül ile gerek on-prem ortamlarımızı, gerekse cloud ortamlarımızı yönetebilmemizi sağlayan oldukça geniş bir kullanım alanı sunar.

Kurulum işlemleri çok basit, kısaca Ubuntu sistemler için;

-İlk olarak server ‘ı update işlemi yapılır.

-Ansible, Ubuntu 20.04'ün temel deposunda mevcuttur. Ansible yüklemek için aşağıdaki komutu çalıştırın:

-Ardından, komutu kullanarak yanıtlanabilir sürümü kontrol edin,

Ana bilgisayar yapılandırma dosyası /etc/ansible/hosts dosyasında saklanır. Aşağıdaki komut yardımıyla localhost sunucu IP’nizi dosyaya ekleyin. Bir sudo kullanıcınız olduğundan emin olun.

Bizim durumumuzda “ubuntu” sudo ayrıcalığına sahiptir. Burada benim ismimi “myserver” olarak verdim, siz de kendi isminizi verebilirsiniz. Ayrıca, ubuntu kullanıcısının sistemde sudo kullanıcısı olduğunu unutmayın.

Daha sonra , sadece aşağıdaki komutu kullanarak kontrol edin,

Yukarıdaki çıktılar ile aynı sonuç var ise kurulum tamamlanmıştır.

2- Playbook Oluşturma

Örneğin 10 sanal sunucu üzerine kurmanız gereken webserver var, Ansible ile bunu bir Yaml dosyası yazarak tek seferde yazıp 10 sunucu üzerinde tek bir komutla koşarak kurabiliyorsunuz. Adından da anlaşılacağı üzere Ansible dosyaları Yaml formatıyla yazılıyor. Bu hem rahat yazma hem de rahat okuma imkanı sağlıyor.

Ansible terimlerinden ve dosya yapısına gelecek olursak:

default: Bu rolde kullanılacak olan varsayılan değişkenlerin saklandığı dosyaları.

files: Burada uzak sunucuya yüklenmek istenilen dosyalar barındırılır.

handlers: Burada genelde servislerin durumlarını kontrol edebileceğimiz değişkenler saklanır. restart, stop, start gibi

meta: Burası oluşturulan rol hakkında bilgi verilen kısımdır. Buradaki bilgiler ansible tarafından okunarak gerekli bağımlılıklar tarafından sağlanır.

task: En önemli dosya diyebiliriz. Role tarafından yürütülecek görevler burada farklı dosyalar içerisinde bulunabilir.

templates: Burada sunucuya gönderilmek istenilen bir konfigürasyon falan varsa bulundurulur.

vars: Burada görevler tarafından kullanılacak olan değişkenler saklanır.

PLAYBOOK: Ansible’ı Apache için Yapılandırma

Ansible kurulduktan sonra, hangi ana bilgisayarlarla konuşacağımızı belirtmemiz gerekiyor. Ancak /etc/ansible/hosts içinde bulunan, sisteminizde global olarak uygulanan ve genellikle yönetici izinleri gerektiren varsayılan ana bilgisayar dosyasını kullanabiliriz. İşleri kolaylaştırmak için yerel bir hosts dosyası kullanacağız.

Ansible, çalıştırıldığı yerel dizinde her zaman bir ansible.cfg dosyası arar ve bulunursa, yerel değerlerle genel yapılandırmayı geçersiz kılar.

1– Örnek üzerinden kullanacağımız yeni bir dizin oluşturun
mkdir ansible-apache

2- Bu yeni oluşturulan dizine taşı
cd ~/ansible-apache/

3- Yeni bir dosya oluşturun ansible.cfg
nano ansible.cfg

4-[defaults] grubu içindeki ana bilgisayarların değeriyle ana bilgisayar dosyası yapılandırma seçeneğini ekleyin. Aşağıdakileri ansible.cfg dosyasına kopyalayın.
[defaults]
hostfile = hosts

5- Bir hosts dosyası oluşturun ve düzenlemek için açın
[apache]
secondary_server_ip ansible_ssh_user=username

Not: Ansible’ı hedef ana bilgisayarla aynı kullanıcı olarak çalıştırıyorsanız, ansible_ssh_user=username bileşeni isteğe bağlıdır.

6-Aşağıdakileri hosts dosyasına kopyalayın. Secondary_server_ip’i ikincil sunucunun ana bilgisayar adı veya IP adresiyle değiştirdiğinizden emin olun.
secondary_server_ip | SUCCESS => {
"changed": false,
"ping": "pong"
}

Daha sonra aşağıdaki komutu çalıştırın

ansible apache -m command -a "/bin/echo hello world"secondary_server_ip | success | rc=0 >>
hello world

Playbook’lar, Ansible’ın yapılandırma, dağıtım ve düzenleme dilidir. Uzak sistemlerinizin uygulamasını istediğiniz bir politikayı tanımlayabilirler. Kısacası, çalışma kitapları insan tarafından okunabilecek şekilde tasarlanmıştır ve uzak makinelerin yapılandırmalarını ve dağıtımlarını yönetmek için kullanılır.

1- apache.yml çalışma kitabını komut modülü yerine apt modülü ile güncelleyin.
nano apache.yml

2- apache.yml dosyasında zaten içerik varsa, içeriği silin ve aşağıdakiyle değiştirin.
---
- hosts: apache
sudo: yes
tasks:
- name: install apache2
apt: name=apache2 update_cache=yes state=latest

3- Playbook’u çalıştırın.

ansible-playbook apache.yml --ask-sudo-pass

Yukarıdaki komutu çalıştırdıktan sonra aşağıdaki gibi bir process işlemi olucaktır.

PLAY [apache] ******************************************************************

TASK [Gathering Facts] *********************************************************
ok: [secondary_server_ip]

TASK [install apache2] *********************************************************

changed: [secondary_server_ip]

PLAY RECAP *********************************************************************
secondary_server_ip : ok=2 changed=1 unreachable=0 failed=0

Tarayıcınızda ikincil sunucunuzun ana bilgisayar adını veya IP adresini ziyaret ederseniz, şimdi sizi karşılayacak bir Apache2 Ubuntu Varsayılan Sayfası almalısınız, aşağıdaki gibi,

ansible-playbook apache.yml --ask-sudo-pass

Everything as a code !!!

Artık sizlerde basit bir adımla everything as a code diyerek uygulamalarınızı step by step design edebilir ve yönetimini ansible gibi otomasyon tool’ları ile kolayca uygulayabilirsiniz :)

Uğur Duran
Bestcloudfor.me Cloud Native Engineer Associate

#workfordreamseries

--

--