Ejecución de AWX (Ansible Tower) en Ubuntu 22.04 mediante Docker
En esta guía veremos cómo ejecutar en un servidor minikube con docker ya preinstalado en una máquina Ubuntu 22.04 un servicio AWX mediante el instalador AWX-Operator de la propia RedHat
Instalación de Minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 sudo install minikube-linux-amd64 /usr/local/bin/minikube
Arrancamos el servidor Minikube con el driver de Docker
minikube start --vm-driver=docker --cpus=4 --memory=6g --addons=ingress
Comprobación de Nodos de K8s
minikube kubectl -- get nodes
Mirar los Pods del servidor
minikube kubectl -- get pods -A
Creación del alias para kubectl
alias kubectl="minikube kubectl --"
Instalación de Kustomize, la herramienta de despliegue
curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh" | bash
Fichero de configuración del despliegue en Kubernetes: kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: # Find the latest tag here: https://github.com/ansible/awx-operator/releases - github.com/ansible/awx-operator/config/default?ref=1.1.0 # Set the image tags to match the git version from above images: - name: quay.io/ansible/awx-operator newTag: 1.1.0 # Specify a custom namespace in which to install AWX namespace: awx
En el caso de que haya cambiado la versión del operador cambiala en las líneas (donde aparece 1.1.0)
Instalación de AWX-Operator en Kubernetes
kubectl apply -k .
Comprobación de los Pods
kubectl get pods -n awx
Cambio de namespace por defecto para kubectl
kubectl config set-context --current --namespace=awx
Fichero del despliegue de awx: awx-demo.yaml
--- apiVersion: awx.ansible.com/v1beta1 kind: AWX metadata: name: awx-demo spec: service_type: nodeport # default nodeport_port is 30080 nodeport_port: 30080
Cambio del fichero de despliegue global: kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: # Find the latest tag here: https://github.com/ansible/awx-operator/releases - github.com/ansible/awx-operator/config/default?ref=1.1.0 - awx-demo.yaml # Set the image tags to match the git version from above images: - name: quay.io/ansible/awx-operator newTag: 1.1.0 # Specify a custom namespace in which to install AWX namespace: awx
Aplicación del depsliegue
kubectl apply -k .
Comprobación del Despliegue
watch minikube kubectl -- get pods -A
Si todo ha desplegado bien, veremos el servicio de AWX
kubectl get svc -n awx
Exportamos la URL del servicio para acceder a él
minikube service awx-demo-service --url -n awx
Accedemos a la URL que nos devuelva, puede tardar un unos cuantos minutos, sobre tod hay que esperar a que los contenedores aws-demo con hash arranquen
Solicitamos la password del usuario admin de awx al secret que la guarda
kubectl get secret awx-demo-admin-password -o jsonpath="{.data.password}" -n awx | base64 --decode
Ya deberíamos poder acceder con el usuario admin y la pass que nos han devuelto
Posibles fallos
En ocasiones me ha dado fallo a la hora de crear los contenedores con un fallo de ImagePullBackOff cuando hago un get pods durante el despliegue, esto puede pasar porque no es capaz de descargar las imágenes docker de los contenedores que debe arrancar. Si esto falla puede ser por muchas cosas, pero la principal es por no meter bien las versiones de operador o de los contenedores de AWX
Comments