본문 바로가기

리눅스

우분투에서 Ansible AWX를 Minikube로 설치하는 방법

반응형

우분투 24.04에서 Ansible AWX를 Minikube로 설치하는 방법

AWX는 Ansible Tower의 오픈소스 버전으로 웹 기반 UI를 제공하는 Ansible 관리 도구입니다.

 

Ansible의 웹 기반 사용자 인터페이스 및 API로 Ansible 작업을 관리하고 자동화하는 데 사용됩니다. AWX는 Kubernetes 또는 Docker를 기반으로 배포할 수 있습니다.

필수 패키지 설치

sudo apt update
sudo apt install -y curl wget git vim jq

도커 설치

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
newgrp docker
sudo systemctl enable --now docker
sudo rm -f get-docker.sh

Minikube 설치

curl -LO https://github.com/kubernetes/minikube/releases/latest/download/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64

Minikube 버전 확인

minikube version
minikube version: v1.35.0
commit: dd5d320e41b5451cdf3c01891bc4e13d189586ed-dirty

kubectl 설치

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
sudo rm -f kubectl

kubectl 버전 확인

kubectl version --client
Client Version: v1.32.2
Kustomize Version: v5.5.0

Minikube 클러스터 생성(Docker 드라이버와 Ingress 애드온 활성화)

minikube start --driver=docker --addons=ingress --force
더보기

---

$ minikube start --driver=docker --addons=ingress --force
😄  minikube v1.35.0 on Ubuntu 24.04 (vbox/amd64)
❗  minikube skips various validations when --force is supplied; this may lead to unexpected behavior
✨  Using the docker driver based on user configuration
🛑  The "docker" driver should not be used with root privileges. If you wish to continue as root, use --force.
💡  If you are running minikube within a VM, consider using --driver=none:
📘    https://minikube.sigs.k8s.io/docs/reference/drivers/none/
📌  Using Docker driver with root privileges
👍  Starting "minikube" primary control-plane node in "minikube" cluster
🚜  Pulling base image v0.0.46 ...
💾  Downloading Kubernetes v1.32.0 preload ...
    > preloaded-images-k8s-v18-v1...:  333.57 MiB / 333.57 MiB  100.00% 31.32 M
🔥  Creating docker container (CPUs=2, Memory=2200MB) ...
🐳  Preparing Kubernetes v1.32.0 on Docker 27.4.1 ...
    ▪ Generating certificates and keys ...
    ▪ Booting up control plane ...
    ▪ Configuring RBAC rules ...
🔗  Configuring bridge CNI (Container Networking Interface) ...
🔎  Verifying Kubernetes components...
    ▪ Using image registry.k8s.io/ingress-nginx/controller:v1.11.3
    ▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5
    ▪ Using image registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.4.4
    ▪ Using image registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.4.4
🔎  Verifying ingress addon...
🌟  Enabled addons: storage-provisioner, default-storageclass, ingress
🏄  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

---

설치된 클러스터 확인

kubectl get nodes
NAME       STATUS   ROLES           AGE   VERSION
minikube   Ready    control-plane   67s   v1.32.0
kubectl get pod -A

pod

GitHub에서 Ansible AWX Operator의 버전 조회

버전 조회

curl -s https://api.github.com/repos/ansible/awx-operator/releases/latest | jq -r .tag_name
2.19.1

Git 클론 후 버전 확인

git clone https://github.com/ansible/awx-operator.git
cd awx-operator
git tag | sort -V | tail -n1
2.19.1
더보기

---

GitHub에서 Ansible AWX의 버전 조회

버전 조회

curl -s https://api.github.com/repos/ansible/awx/releases/latest | jq -r .tag_name
24.6.1

Git 클론 후 버전 확인

git clone https://github.com/ansible/awx-operator.git
cd awx-operator
git tag | sort -V | tail -n1
24.6.1

---

1. AWX Operator 설치

sudo mkdir -p /opt
cd /opt

AWX Operator 레포지토리 클론

git clone https://github.com/ansible/awx-operator.git

최신 릴리스 태그로 체크아웃

cd awx-operator
git checkout $(curl -s https://api.github.com/repos/ansible/awx-operator/releases/latest | jq -r .tag_name)

NAMESPACE 환경 변수 설정

export NAMESPACE=ansible-awx

AWX Operator 배포

make deploy
더보기

---

namespace/ansible-awx created
customresourcedefinition.apiextensions.k8s.io/awxbackups.awx.ansible.com created
customresourcedefinition.apiextensions.k8s.io/awxmeshingresses.awx.ansible.com created
customresourcedefinition.apiextensions.k8s.io/awxrestores.awx.ansible.com created
customresourcedefinition.apiextensions.k8s.io/awxs.awx.ansible.com created
serviceaccount/awx-operator-controller-manager created
role.rbac.authorization.k8s.io/awx-operator-awx-manager-role created
role.rbac.authorization.k8s.io/awx-operator-leader-election-role created
clusterrole.rbac.authorization.k8s.io/awx-operator-metrics-reader created
clusterrole.rbac.authorization.k8s.io/awx-operator-proxy-role created
rolebinding.rbac.authorization.k8s.io/awx-operator-awx-manager-rolebinding created
rolebinding.rbac.authorization.k8s.io/awx-operator-leader-election-rolebinding created
clusterrolebinding.rbac.authorization.k8s.io/awx-operator-proxy-rolebinding created
configmap/awx-operator-awx-manager-config created
service/awx-operator-controller-manager-metrics-service created
deployment.apps/awx-operator-controller-manager created

---

AWX 리소스 배포 (awx-demo.yml 파일 사용)

kubectl create -f awx-demo.yml -n $NAMESPACE

AWX Pod 상태 확인

kubectl get pod -n $NAMESPACE
NAME                                               READY   STATUS      RESTARTS   AGE
awx-demo-migration-24.6.1-4p6tf                    0/1     Completed   0          10m
awx-demo-postgres-15-0                             1/1     Running     0          15m
awx-demo-task-56d9cb9fb7-rm2mv                     4/4     Running     0          9m47s
awx-demo-web-74b447698f-hvjqb                      3/3     Running     0          13m
awx-operator-controller-manager-58b7c97f4b-dc9dk   2/2     Running     0          16m

Pod 재시작 시도(특정 pod를 삭제하여 자동으로 재시작)

kubectl delete pod <awx_pod_name> -n $NAMESPACE

Pod 로그 확인

kubectl logs -n $NAMESPACE -f <awx_pod_name>

서비스 상태 확인

kubectl get svc -n $NAMESPACE

service

2. AWX UI 접속

웹 브라우저에서 AWX 웹 인터페이스에 접속할 수 있습니다.

 

AWX 서비스에 접근할 수 있는 URL 출력

minikube service awx-demo-service --url -n $NAMESPACE
http://192.168.49.2:31909

Port-forwarding을 백그라운드에서 실행하여 로컬에서 AWX 웹 UI에 접근

nohup kubectl port-forward -n $NAMESPACE service/awx-demo-service 8002:80 --address 0.0.0.0 > port-forward-$NAMESPACE.log 2>&1 &
http://192.168.10.48:8002/#/login

AWX의 기본 관리자 비밀번호 출력 (Base64로 인코딩된 비밀번호를 디코딩)

kubectl get secret awx-demo-admin-password -o jsonpath="{.data.password}" -n $NAMESPACE | base64 --decode; echo

설정한 관리자 계정과 비밀번호로 로그인합니다.

  • 기본 사용자명 : admin
  • 기본 비밀번호 : wnglgZ0S0PO2tr17CboZBASE59HGrIKa

3. AWX CLI 설치

pip install ansible-tower-cli

테스트

awx --version

 

Ansible AWX를 Minikube 환경에서 실행할 수 있습니다.

 

728x90
반응형