Eğer bir sistem yöneticisiyseniz, kullandığınız tüm sunucuları ve bilgisayarları yönetmek için tutarlı bir yönteme sahip olmanız önemlidir. Yapılandırma yönetimi sistemleri bu süreci büyük ölçüde kolaylaştırabilir. Tüm sistemleri merkezi bir konumdan verimli bir şekilde yönetirler.
On Linux üzerinde birden fazla yapılandırma yönetimi sistemi mevcuttur. Örneğin, Puppet, Chef, Ansible, Bcfg2, Juju, CFEngine vb. Puppet ve Chef gibi araçlar daha karmaşık ve gelişmiş olma eğilimindeyken, Ansible basitlik ve kullanım kolaylığı sunar. Ansible'ın çalışması için düğümlere herhangi bir ek istemci yazılımı yüklemeniz gerekmez. Bunun yerine, Ansible SSH teknolojisini sistemleri yönetmek ve otomatikleştirmek için kullanır. Ansible açık kaynaklı bir yazılımdır. Ayrıca son derece ölçeklenebilir, tutarlı ve güvenilirdir.
Bu kılavuz, üzerinde Ansible'ın nasıl kurulacağını ve yapılandırılacağını gösterir: Ubuntu 20.04.
Ubuntu üzerinde Ansible
Ansible üç tür otomasyon gerçekleştirebilir:
-
Hazırlama (Provisioning): Altyapının ihtiyaçlarına göre çeşitli sunucular kurabilir.
-
Yapılandırma yönetimi: Sunucularda çeşitli yapılandırma değişiklikleri gerçekleştirebilir. Örneğin, servisleri başlatma ve durdurma, uygulamaları ve güncellemeleri yükleme, güvenlik politikalarını uygulama vb.
-
Uygulama dağıtımı: Dahili olarak geliştirilen uygulamaların ürün sistemine otomatik olarak dağıtılmasıyla DevOps'u kolaylaştırır.
Ansible, barındırılan veya geleneksel sunucular, sanallaştırma platformları veya bulut olsun, hemen hemen her BT ortamında mükemmel şekilde çalışabilir. Ayrıca veritabanları, ağlar, güvenlik duvarları, depolama aygıtları ve diğer pek çok sistemin yönetilmesini de destekler. CloudSigma da bulut altyapımız için Ansible'ı desteklemektedir.
Gereksinimler
Bu kılavuz için birkaç makineye ihtiyacımız var:
-
Kontrol düğümü (Control node): Kontrol düğümü, tüm ana bilgisayar düğümlerine bağlanan, görevleri veren ve sistemin çeşitli yönlerini yöneten merkezi düğümdür. Kontrol düğümü herhangi bir şey olabilir – yerel bir makine veya uzak bir sunucu.
-
Ana bilgisayar düğümü (Host node): Ansible ana bilgisayarları, Ansible kontrol düğümünün otomatikleştirebileceği makinelerdir.
Kılavuzun başlığından da anlaşılacağı gibi, tüm bu makinelerin en son paketlerle Ubuntu 20.04 ile yapılandırılmış olması beklenmektedir. İşte Ubuntu sunucusu kurulumu hakkında hızlı bir kılavuz. Ansible makinelere bağlanmak için SSH kullandığından, tüm ana bilgisayar düğümlerinin kontrol düğümü ile SSH anahtarları düzgün bir şekilde ayarlanmalıdır. Tüm ana bilgisayar düğümlerinin, kontrol düğümünün genel SSH anahtarını authentication_keys dosyasına eklediğinden emin olun. Linux sunucularına SSH anahtarlarının nasıl oluşturulacağını ve ekleneceğini öğrenmek için eğitimimizi takip edin.
Adım 1: Ansible Kurulumu
Ubuntu durumunda, herhangi bir ek paket veya depo yapılandırmasına gerek yoktur. Ansible, resmi Ubuntu paket sunucularından doğrudan temin edilebilir. Sistem düzeyinde herhangi bir değişiklik yapmak, yönetici erişimi gerektirir – root kullanıcısı veya sudo ayrıcalığına sahip root olmayan bir kullanıcı. Sudoers dosyası, kullanıcılara ve gruplara yönelik sudo izinlerini yönetir.
İlk olarak, kontrol düğümü olarak hizmet verecek bilgisayara Ansible'ı kuracağız. Kontrol düğümüne Ansible'ı kurmak için aşağıdaki komutları çalıştırın:
|
1 |
sudo apt update |

|
1 |
sudo apt install ansible -y |

SSH kimlik doğrulama mekanizması olarak bir şifre kullanacaksanız, sshpass paketinin kurulu olması gerekir:
|
1 |
sudo apt install sshpass |

Adım 2: Envanter (Inventory) Dosyasını Yapılandırma
Ansible'da envanter dosyası, Ansible'ın yöneteceği tüm hosts hakkında bilgi içerir. Bu, inventory dosyasında kayıtlı onlarca veya yüzlerce sunucu olabilir. Sunucular ayrıca gruplara ve alt gruplara ayrılabilir. Genellikle, inventory dosyası, yalnızca belirli hosts veya gruplar için geçerli olacak değişkenleri tanımlamak için kullanılır. Bu, playbook'lar ve şablonlar yazarken kullanışlı bir tekniktir. Belirli değişkenler bir playbook'un nasıl çalıştırılacağını da etkileyebilir.
Ansible varsayılan bir envanter dosyasıyla birlikte gelir. İlk olarak, dosyayı bir metin düzenleyicide açın:
|
1 |
sudo vim /etc/ansible/hosts |

Varsayılan olarak, envanter dosyası referans için çeşitli örnekler içerir. İşte servers adında, üç farklı sunucu içeren bir grup örneği. ansible_python_interpreter değişkeni, envanterde yer alan tüm hosts için Python yorumlayıcısını tanımlar. ansible_user yönergesi ile Ansible'ın bağlanacağı kullanıcı hesabını bildirebiliriz:
|
1 2 3 4 5 6 7 |
[servers] server_1 ansible_host=<server_1_ip> ansible_user=<server_1_username> server_2 ansible_host=<server_2_ip> ansible_user=<server_2_username> server_3 ansible_host=<server_3_ip> ansible_user=<server_3_username> [all:vars] ansible_python_interpreter=/usr/bin/python3 |

Ardından, dosyayı kaydedin ve düzenleyiciyi kapatın. Envanteri kontrol etmek için aşağıdaki komutu çalıştırın:
|
1 |
ansible-inventory --list -y |
Çıktı şuna benzer görünmelidir:

Adım 3: Bağlantı Testi
Envanter dosyasını yapılandırdıktan sonra, Ansible'ın bu sunuculara SSH üzerinden bağlanıp bağlanamadığını test etmemiz gerekir. Bunu sadece tüm ana bilgisayar düğümlerine ping atarak yapabiliriz. kontrol düğümünden, tüm ana bilgisayar düğümlerine ping atın:
|
1 |
ansible all -m ping |
The ping modülü şu hususları kontrol eder:
-
Ana bilgisayar erişilebilirliği
-
SSH kimlik bilgilerinin geçerliliği
-
Ana bilgisayarların Python kullanarak Ansible modüllerini çalıştırabilmesi
Çıktı şuna benzer görünmelidir:

Belirli bir düğümden gelen yanıt pong ise, bu durum düğümün sunucuda Ansible komutlarını ve playbook'larını çalıştırmaya hazır olduğu anlamına gelir.
Adım 4: Ad-Hoc Komutlarını Çalıştırma
Bu isteğe bağlı bir adımdır. Ancak, Ansible'ın uzak sunuculardaki tam işlevselliğini doğrulamada yararlı olabilir. Bu bölüm ayrıca ek Ansible kullanımı ve yapılandırmasına temel bir giriş niteliği de taşıyabilir. Düğümlere bağlantıyı onayladıktan sonra, ad-hoc komutlarını ve playbook'ları çalıştırmaya başlayabiliriz. Uzak sunucularda normalde çalıştıracağınız herhangi bir komut, Ansible ile tüm sunucularda çalıştırılabilir.
Burada, aşağıdaki komutu çalıştırın. Tüm düğümlerdeki disk kullanımını aynı anda kontrol edecektir:
|
1 |
ansible all -a "df -h" |

Tıpkı test etmek için ping modülünü çalıştırdığımız gibi, ad-hoc komut özelliğini kullanarak çeşitli Ansible modüllerini de yürütebiliriz. Örneğin, apt modülü Ubuntu'daki APT paket yöneticisi ile çalışır. Uzak bir Ubuntu düğümündeki paketleri yönetebilir. Sistem düzeyinde değişiklikler yapmak için root izni gerektirdiğini unutmayın. Uzak düğümün root girişine izin vermesi veya kullanıcının yönetimsel görevleri yürütme iznine sahip olması gerekir.
Aşağıdaki örnekte, Ansible tüm ana bilgisayar düğümlerine Nginx kurar:
|
1 |
ansible all -m apt -a "name=nginx state=latest" -u root |
Peki ya komutları yalnızca tek bir sunucuda çalıştırmaya ne dersiniz? Sunucuyu belirtmek için (envanter dosyası içinde atanan) sunucu takma adını kullanacağız:
|
1 |
ansible server_1 -a "df -h" -u cloudsigma |

Birden fazla sunucu da belirtebiliriz. Her bir hedef sunucu takma adını sınırlayıcı olarak iki nokta üst üste işaretiyle bildirin:
|
1 |
ansible server_1:server_2:server_3 -a "df -h" -u cloudsigma |

Son Düşünceler
Bu kılavuzda, Ansible'ı kurmak ve Ansible kontrol düğümünden ad-hoc komutları çalıştırmak üzere bir envanter dosyası yapılandırmak için adım adım bir yöntem gösterdik. Yapılandırıldıktan sonra, kontrol düğümü ana bilgisayarlarda çalıştırmak istediğiniz herhangi bir komutu veya playbook'u yürütebilir.
Keyifli çalışmalar!
Yorumlar
Henüz yorum yapılmamış. İlk siz olun.