Ansible Nedir?
Ansible, açık kaynaklı bir otomasyon aracıdır. Sistem yöneticileri ve geliştiriciler, Ansible'ı kullanarak sunucuları yapılandırabilir, uygulamaları dağıtabilir ve çeşitli operasyonel görevleri otomatikleştirebilirler. Ansible, playbook adı verilen YAML dosyaları kullanarak yapılandırma yönetimi yapar.
AWX Nedir?
AWX, Ansible otomasyonunu kolaylaştırmak için kullanılan bir web tabanlı kullanıcı arayüzü ve REST API'dir. AWX, Ansible Tower'ın açık kaynaklı bir sürümüdür ve Ansible playbook'larınızı merkezi bir noktadan yönetmenizi, izleyip raporlamanızı sağlar. Özellikle büyük ölçekli sistemlerde otomasyonu yönetmek için kullanılır.
AWX'in Temel Özellikleri
Web Tabanlı Arayüz: AWX, Ansible playbook’larınızı, görevlerinizi ve envanterinizi web tabanlı bir kullanıcı arayüzü üzerinden yönetmenize olanak tanır. Bu, teknik olmayan kullanıcıların veya ekiplerin otomasyonu daha kolay yönetilmesini sağlar.
REST API: AWX, otomasyon işlemlerini programatik olarak yönetmek için REST API sağlar. Bu API, diğer yazılımlarla entegrasyon ve otomasyon işlemlerini otomatikleştirmek için kullanılır.
Görev Planlama ve İzleme: AWX, otomasyon görevlerini zamanlayabilir ve bu görevlerin durumunu izleyebilir. Görevler tamamlandığında, başarı veya hata durumlarını görüntüleyebilir ve bu verileri raporlayabilirsiniz.
Kullanıcı Yönetimi: AWX, farklı kullanıcı rolleri ve izinleri yönetebilir. Bu, farklı ekip üyelerinin veya kullanıcıların sadece yetkili oldukları verilere ve işlevlere erişmesini sağlar.
Kubernetes Nedir?
Kubernetes (K8s), konteyner uygulamalarını dağıtmak, ölçeklendirmek ve yönetmek için açık kaynaklı bir platformdur. Konteynerler, uygulama bileşenlerini paketler ve bu bileşenlerin taşınabilirliğini ve yönetimini kolaylaştırır. Kubernetes, bu konteynerleri kümeler (clusters) halinde yönetir.
MicroK8s Nedir?
MicroK8s, Canonical tarafından geliştirilen hafif bir Kubernetes dağıtımıdır. Özellikle geliştiriciler ve test ortamları için uygundur. MicroK8s, düşük kaynak tüketimi ile tam bir Kubernetes deneyimi sağlar ve tek bir düğüm üzerinde çalışabilir, bu da onu lokal geliştirme ve test işlemleri için ideal kılar.
AWX ve MicroK8s’in Birlikte Çalışması
AWX, MicroK8s üzerinde Kubernetes kaynakları olarak yapılandırılır. MicroK8s, bu Kubernetes kaynaklarını yönetir ve AWX’in web arayüzü, veri tabanı ve diğer bileşenleri Kubernetes ortamında çalıştırılır. Bu yapı, AWX’in ölçeklenmesini, güncellenmesini ve yönetilmesini kolaylaştırır.
MicroK8s Kurulumu
MicroK8s'i kurup etkinleştirin
sudo snap install microk8s --classic
MicroK8s'in çalıştığından emin olun ve gerekli ek bileşenleri etkinleştirin
sudo microk8s status --wait-readysudo microk8s enable dns storage ingress
Kustomize ve kubectl Kurulumu
Kurmak için snap paket yöneticisini kullanın:
sudo snap install kustomizesudo snap install kubectl --classic
Git Kurulumu
Git, sürüm kontrolü için kullanılan bir araçtır. Git'i kurmak için:
sudo apt updatesudo apt install git
Git Kurulumunu Kontrol Etme:
git --version
AWX Operator Kurulumu
AWX Operator'ı kurmak için gerekli kaynak dosyalarını awx-operator dizinine indirin:
git clone https://github.com/ansible/awx-operator.gitcd awx-operator
Kustomize Konfigürasyon Dosyası (kustomization.yaml) Oluşturun
nano kustomization.yaml
içine aşağıdaki yaml kodunu yazın(boşlukların hizalarına dikkat edin):
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
generatorOptions:
disableNameSuffixHash: true
secretGenerator:
- name: awx-admin-password
type: Opaque
literals:
- password=awx-admin-password
resources:
- github.com/ansible/awx-operator/config/default?ref=2.12.2
- awx-deploy.yaml
- awxmeshingress-demo.yml
images:
- name: quay.io/ansible/awx-operator
newTag: 2.12.2
namespace: awx
AWX Kaynak Dosyasını (awx-deploy.yaml) Oluşturun
nano awx-deploy.yaml
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
name: awx
spec:
admin_user:
admin admin_password_secret: awx-admin-password
service_type: ClusterIP
ingress_type: ingress
hostname: medium.example.com
ingress_tls_secret: medium
postgres_configuration_secret: awx-postgres-configuration
awx-deploy.yaml ve awx-demo.yml dosyalarının ikisi de aynı isim ve türdeki AWX kaynağını tanımladıkları için kustomize tarafından bir çakışma oluşur. Bu çakışmayı çözmek için awx-demo.yml dosyasını silinmesi gerekir, çünkü her iki dosya da benzer işlevselliğe sahiptir ve awx-deploy.yaml dosyası tüm gerekli özellikleri içerir. Bu işlem, yapılandırma dosyalarındaki karmaşıklığı azaltır ve çakışmayı ortadan kaldırarak başarılı bir kurulum sağlar.
MicroK8s'i Başlatma ve Yönetim Gruplarına Ekleme
sudo usermod -a -G microk8s $USER
sudo chown -f -R $USER ~/.kube
Ardından, oturumu kapatıp tekrar açın veya terminali kapatıp açın.
MicroK8s CLI Araçlarını Etkinleştirme
sudo microk8s enable dns storage
MicroK8s İle Kubectl Kullanımı
MicroK8s'in kubectl komutunu kullanabilmeniz için kubeconfig dosyasını ayarlayın:
sudo microk8s kubectl config view --raw > $HOME/.kube/configexport KUBECONFIG=$HOME/.kube/config
Kustomize Kullanarak AWX'i Uygulama
Bu komudu kustomize dosyasının olduğu dizinde çalıştırın yani awx-operator dizininde.
kustomize build . | kubectl apply -f -
AWX Pod'larının Durumunu Kontrol Etme
Öncelikle, AWX Pod'larının durumunu kontrol edin. Tüm Pod'ların Running durumda olması gerekiyor. Eğer pod kısmında awx-operator-controller-manager pod'u Pending durumda ise nedeni node üzerinde disk basıncı (disk pressure) olduğundandır. Pod planlaması için yeterli kaynak mevcut değil çünkü node üzerinde yeterli disk alanı bulunmuyor. Bu, pod'un başlatılmamasına neden olabilir.
kubectl get pods -n awx
AWX Servisinin Durumunu Kontrol Etme
AWX'in dışarıya açıldığı servisin IP adresini kontrol edin. Eğer LoadBalancer tipi bir servis oluşturduysanız, bu adrese tarayıcı üzerinden erişebilirsiniz.
kubectl get svc -n awx
Tüm Pod'lar başarıyla çalışır görünüyorsa ve AWX servisiniz de oluşturulmuş durumdaysa. Şimdi, AWX web arayüzüne erişebiliriz.
AWX Web Arayüzüne Erişim
Eğer AWX servisi bir LoadBalancer veya NodePort tipi ile dışa açılmadıysa, kubectl port-forward komutunu kullanarak yerel makinenizden erişebilirsiniz:
kubectl port-forward svc/awx-service 8080:80 -n awx
Bu komut, yerel makinenizin 8080 portunu AWX servisinin 80 portuna yönlendirecek. Ardından, tarayıcınızda http://localhost:8080 adresine giderek AWX arayüzüne erişebilirsiniz.
- Kullanıcı adı: admin
- Şifre: kustomization.yaml dosyanızda belirtilen awx-admin-password adlı secret'tan alınacaktır.
Comments