İçeriğe geç
NetDevOps
10 dk okuma DevOps

Ansible AWX Kurulumu ve Yapılandırma Rehberi

Ansible AWX Nedir ve Neden Kullanmalısınız?

Ansible AWX, açık kaynak kodlu bir otomasyon platformudur ve Ansible Tower'ın topluluk sürümüdür. Modern IT altyapılarında sunucu yönetimi, konfigürasyon otomasyonu ve deployment süreçlerinin merkezi bir noktadan yönetilmesi kritik önem taşımaktadır. AWX, bu ihtiyacı karşılamak için tasarlanmış güçlü bir araçtır ve web tabanlı arayüzü, REST API'si ve görev motoru ile Ansible playbook'larınızı merkezi bir konumdan çalıştırmanıza olanak tanır.

Geleneksel Ansible kullanımında, komut satırından playbook çalıştırmak zorundasınızdır ve bu yaklaşım küçük ölçekli ortamlarda yeterli olsa da, onlarca veya yüzlerce sunucuyu yönetmeniz gerektiğinde ciddi zorluklar ortaya çıkar. AWX, bu karmaşıklığı ortadan kaldırarak takımınızın playbook'ları görsel arayüz üzerinden çalıştırmasına, zamanlanmış görevler oluşturmasına, kimlik bilgilerini güvenli bir şekilde depolamasına ve tüm otomasyon faaliyetlerini merkezi bir yerden izlemesine imkan tanır.

AWX'in temel özellikleri arasında rol tabanlı erişim kontrolü, iş planlama ve zamanlama, entegrasyon webhook'ları, playbook çıktılarının detaylı loglanması, çoklu envanter desteği ve dinamik envanterler ile çalışma yeteneği bulunmaktadır. Bu özellikler, kurumsal ortamlarda güvenli ve ölçeklenebilir bir otomasyon altyapısı kurmanıza yardımcı olur.

Ansible AWX Kurulumu

AWX'i kurmanın birkaç farklı yolu vardır. En yaygın kullanılan yöntemler Docker Compose, Kubernetes ve Ansible Operator üzerinden kurulumdur. Küçük ve orta ölçekli ortamlar için Docker Compose yeterli olurken, üretim ortamları için Kubernetes tabanlı kurulum önerilmektedir.

Docker Compose ile Kurulum

Docker Compose yöntemi, geliştirme ve test ortamları için hızlı bir kurulum sağlar. Öncelikle sisteminizde Docker ve Docker Compose kurulu olmalıdır. Ardından AWX repository'sini klonlayarak kurulum sürecini başlatabilirsiniz.

git clone https://github.com/ansible/awx.git
cd awx
git checkout 24.6.1
make docker-compose

Bu komutlar, AWX'in en son kararlı sürümünü indirir ve Docker container'larını başlatır. Kurulum tamamlandıktan sonra, tarayıcınızdan http://localhost:80 adresine giderek AWX arayüzüne erişebilirsiniz. Varsayılan kullanıcı adı "admin" ve şifre "password" olarak ayarlanmıştır; ilk girişinizden sonra mutlaka şifreyi değiştirmelisiniz.

Kubernetes Üzerine Kurulum

Üretim ortamları için AWX Operator kullanarak Kubernetes veya OpenShift üzerine kurulum yapmanız önerilir. Bu yöntem, yüksek kullanılabilirlik ve otomatik ölçeklendirme imkanları sunar.

kubectl apply -f https://raw.githubusercontent.com/ansible/awx-operator/devel/deploy/awx-operator.yaml
kubectl apply -f awx-instance.yaml

Operator kurulduktan sonra, AWX instance oluşturmak için bir manifest dosyası kullanmanız gerekir. Bu dosya içinde depolama, kaynak limitleri ve replica sayısı gibi parametreleri belirleyebilirsiniz.

Temel Yapılandırma Adımları

AWX'i başarıyla kurduktan sonra, otomasyon playbook'larınızı çalıştırabilmek için bazı temel yapılandırma adımlarını tamamlamanız gerekmektedir. Bu adımlar credentials, inventories, projects ve job templates oluşturmayı içermektedir.

Kimlik Bilgileri (Credentials) Yapılandırması

Kimlik bilgileri, AWX'in hedef sunuculara bağlanması için gereken authentication bilgilerini depolar. AWX, farklı tipte kimlik bilgilerini desteklemektedir: Machine, SSH, Source Control, Vault, Amazon Web Services, Google Compute Engine, OpenStack ve Azure Resource Manager gibi.

Machine tipi kimlik bilgisi, sunuculara SSH ile bağlanmak için kullanılır ve hem parola hem de SSH key tabanlı authentication'ı destekler. Yeni bir kimlik bilgisi oluşturmak için sol menüden "Credentials" seçeneğine tıklayın ve "+" butonuna basın. Açılan formda kimlik bilgisinin adını, açıklamasını ve tipini belirleyin. Machine tipi için SSH kullanıcı adını ve private key'i girin.

Güvenlik açısından, tüm kimlik bilgileri AWX veritabanında şifrelenmiş olarak saklanır ve görüntülenirken maskelenir. Ayrıca, Vault kimlik bilgileri kullanarak secrets'ları yönetebilir ve Ansible Vault ile entegre çalışabilirsiniz.

Envanter (Inventory) Oluşturma

Envanterler, AWX'in yöneteceği sunucu gruplarını tanımlar. Statik envanterler manuel olarak host ekleyerek oluşturulabilir veya dinamik envanterler kullanarak bulut sağlayıcılarından otomatik olarak host listesi çekilebilir.

Yeni bir envanter oluşturmak için "Inventories" menüsüne gidin ve "+" butonuna tıklayın. Envater adını ve açıklamasını girdikten sonra kaydedin. Ardından "Hosts" sekmesinden sunucularınızı ekleyin. Her host için hostname, IP adresi ve değişkenler belirtebilirsiniz. Örneğin, ansible_host değişkeni ile asıl bağlanılacak adresi tanımlayabilirsiniz.

Host'ları ekledikten sonra, AWX'in bu sunuculara erişip erişemediğini "RUN COMMANDS" butonu ile test edebilirsiniz. Ping modülünü çalıştırarak bağlantıyı doğrulayın. Bu adım, playbook çalıştırmadan önce bağlantı sorunlarını tespit etmenize yardımcı olur.

Proje (Project) Yapılandırması

Projeler, AWX'in çalıştıracağı Ansible playbook'larını temsil eder. Playbook'ları AWX sunucusunda yerel olarak tutabileceğiniz gibi, Git, Subversion veya Mercurial gibi bir SCM sisteminden de çekebilirsiniz.

En iyi uygulama olarak, playbook'larınızı bir Git repository'sinde tutmanızı öneririz. Bu yaklaşım, version control avantajı sağlar ve takımınızın değişiklikleri takip etmesini kolaylaştırır. Yeni bir proje oluşturmak için "Projects" menüsüne gidin, "+" butonuna tıklayın ve proje adını, açıklamasını ve SCM tipini belirleyin.

Git tipi için repository URL'sini girin ve isterseniz belirli bir branch veya tag seçebilirsiniz. "Update on Launch" seçeneğini işaretlerseniz, her job çalıştığında playbook'lar otomatik olarak güncellenir. Bu özellik, sürekli geliştirme süreçlerinde faydalıdır.

Job Template Oluşturma ve Çalıştırma

Job template, bir Ansible playbook'unun nasıl çalıştırılacağını tanımlayan şablonlardır. Bir job template, hangi playbook'un çalıştırılacağını, hangi envantere karşı çalıştırılacağını, hangi kimlik bilgilerinin kullanılacağını ve diğer çalışma parametrelerini belirler.

Template Yapılandırması

Job template oluşturmak için "Templates" menüsüne gidin ve "+" butonuna tıklayıp "Job template" seçeneğini seçin. Formda şu alanları doldurmanız gerekir: template adı, açıklama, çalıştırılacak envanter, kullanılacak kimlik bilgisi, proje ve playbook dosyası.

Ayrıca, "Options" bölümünde bazı gelişmiş seçenekler bulunmaktadır. "Enable Privilege Escalation" seçeneği, sudo ile çalıştırılacak playbook'lar için gereklidir. "Concurrent Jobs" sayısını artırarak aynı template'in paralel olarak birden fazla kez çalıştırılmasına izin verebilirsiniz.

Job Çalıştırma

Template'i kaydettikten sonra, "Launch" butonuna tıklayarak veya template listesinden template adına tıklayarak job'ı başlatabilirsiniz. Job çalışmaya başladığında, AWX gerçek zamanlı olarak playbook çıktısını gösterir.

Job tamamlandıktan sonra, sonuç sayfasında playbook'un başarılı veya başarısız olduğunu, hangi host'ların etkilendiğini ve her görevin ne kadar sürdüğünü görebilirsiniz. Başarısız job'lar için hata mesajları detaylı olarak görüntülenir ve sorun giderme sürecini kolaylaştırır.

Zamanlama ve Otomasyon

AWX'in en güçlü özelliklerinden biri, job'ları zamanlama yeteneğidir. Belirli aralıklarla veya cron benzeri bir schedule ile playbook çalıştırabilirsiniz. Bu özellik, düzenli bakım görevlerini, izleme kontrollerini ve periyodik deployment süreçlerini otomatikleştirmek için idealdir.

Zamanlama oluşturmak için, job template içinde "SCHEDULE" sekmesine gidin ve "+" butonuna tıklayın. Açılan formda schedule adını, başlangıç zamanını ve tekrarlama规则ını belirleyin. AWX, cron formatında da zamanlama tanımlamanıza olanak tanır.

Rol Tabanlı Erişim Kontrolü

AWX, detaylı rol tabanlı erişim kontrolü (RBAC) sunar. Organizasyonlar, kullanıcılar ve takımlar oluşturabilir ve her birine farklı yetkiler atayabilirsiniz. Bu özellik, büyük ekiplerde güvenliği sağlamak ve sorumlulukları ayırmak için kritiktir.

Sistem yöneticileri tüm işlemlere erişebilirken, normal kullanıcılar yalnızca kendilerine atanan kaynaklara erişebilir. Ayrıca, her kaynak için ayrı ayrı okuma, değiştirme ve silme yetkileri tanımlanabilir.

En İyi Uygulamalar ve İpuçları

AWX'i etkili kullanmak için bazı en iyi uygulamaları takip etmeniz önerilir. İlk olarak, playbook'larınızı mutlaka bir Git repository'sinde tutun ve version control kullanın. Bu yaklaşım, değişikliklerin takibini kolaylaştırır ve hata durumunda geri dönüşü sağlar.

İkinci olarak, kimlik bilgilerini düzenli olarak güncelleyin ve güçlü şifreler kullanın. Mümkün olduğunca SSH key tabanlı authentication'ı tercih edin ve parola kullanımını minimuma indirin. Üçüncü olarak, envanterlerinizi mantıksal gruplara ayırın: geliştirme, test ve üretim ortamları için ayrı envanterler oluşturun.

Dördüncü olarak, job template'lerde "Verbose" modunu etkinleştirerek daha detaylı çıktı alabilirsiniz. Bu özellik, özellikle hata ayıklama sürecinde faydalıdır. Beşinci olarak, AWX loglarını düzenli olarak kontrol edin ve başarısız job'ların nedenlerini analiz edin.

AWX vs Ansible Automation Platform

Ansible Automation Platform (AAP), Red Hat tarafından sunulan ticari bir üründür ve AWX'in kurumsal sürümü olarak kabul edilebilir. AAP, AWX'in tüm özelliklerini içermenin yanı sıra, resmi destek, gelişmiş clustering özellikleri, analytics dashboard ve özel destek kanalları gibi ek avantajlar sunar.

Küçük ve orta ölçekli ekipler için AWX genellikle yeterlidir ve açık kaynak olarak ücretsizdir. Ancak, büyük kurumsal ortamlarda ve resmi destek gerektiren durumlarda AAP tercih edilebilir. Her iki ürün de aynı temel teknolojiye dayandığından, AWX'ten AAP'ye geçiş oldukça kolaydır.

Sonuç

Ansible AWX, Ansible tabanlı otomasyonunuzu profesyonel bir seviyeye taşımak için mükemmel bir araçtır. Merkezi playbook yönetimi, görsel arayüz, zamanlama, rol tabanlı erişim kontrolü ve kapsamlı loglama özellikleri ile IT operasyonlarınızı önemli ölçüde iyileştirebilirsiniz.

Bu rehberde, AWX'in kurulumundan temel yapılandırmaya, job template oluşturmadan en iyi uygulamalara kadar geniş bir yelpazede bilgi verdik. AWX'i kullanmaya başlayarak, sunucu yönetimi ve konfigürasyon otomasyonu süreçlerinizi standardize edebilir ve operasyonel verimliliğinizi artırabilirsiniz. Unutmayın, başarılı bir otomasyon stratejisi, doğru araçları seçmekten geçer ve AWX bu yolculukta güvenilir bir partneriniz olacaktır.