Implementar AWX en GKE – Parte 1 (awx-demo)

Volvemos al Blog despues de un tiempito abocado a un proyecto de docencia! En el próximo mes y medio tengo que rendir dos exámenes bravos, así que espero aprovechar las horas de estudio para generar material para nuevos posts.

En esta ocación vamos a levantar un AWX en un Google Kubernetes Services (GKE).

¿Qué es AWX?

Basicamente, AWX (o Ansible AWX) es una alternativa Open Source para utilizar Ansible con una GUI y API Tool encima. Es el proyecto upstream de Ansible Tower (ahora forma parte de Red Hat Ansible Automation Platform), tiene una Interfaz gráfica relativamente moderna que permite manejar a gran parte de las funcionalidades de Ansible como Ansible Playbook, Inventories, Vault, y Credentials.

Links

En versiones menores a 17.1.0, AWX permitía el Deploy a través de Docker Host para el uso en producción:

https://github.com/ansible/awx/blob/17.1.0/INSTALL.md

A partir de la versión 18.0.0 en adelante, la unica forma de implementación soportada es a través del AWX Operator:

Esto reduce la posibilidad de instalación oficial para producción solamente a OpenShift o Kubernetes.

Aquí podemos verificar la documentación del Operador.

¿Qué es el AWX Operator?

El Operador de AWX es basicamente una herramienta que facilita implementación de todos los recursos de una instancia de AWX en un entorno de Kubernetes. Es un componente esencial para simplificar la administración de AWX en entornos modernos basados en contenedores.

Beneficios:

  • Implementación Simplificada.
  • Gestion del Ciclo de Vida.
  • Configuración declarativa.

¿Cómo instalar el AWX Operator?

Bueno ahora vamos a instalar el Operador. Para esto vamos a usar Helm 🙂

Prerrequisitos

  • Obviamente uno de los principales prerrequisitos es tener un Cluster de Kubernetes. Para esto, en este caso, vamos a utilizar un Free Trial de GCP y vamos a utilizar una de las mejores versiones manejadas del K8s: GKE.
  • Conectarse a GKE con Kubctl utilizando tu local CLI.
  • Instalar Helm en el desktop.

Instalar AWX Operator

Lo primero que debemos realizar es descargar el repositorio de Helm.

helm repo add awx-operator https://ansible.github.io/awx-operator/

Luego debemos 1. realizar un update de los repos de Helm y 2. instalar el Operador.

helm repo update
helm install my-awx-operator awx-operator/awx-operator -n awx --create-namespace --version 2.11.0

Una vez que se instale, podremos verificar utilizando el comando “kubectl get pods -n awx” que el Operador fue creado:

kubectl get pods -n awx

Desplegar AWX

Ahora, una vez instalado el AWX Operator, podremos desplegar AWX utilizando el CRD.

Para esto crearemos un archivo llamado awx-deployment.yaml y le asignaremos el siguiente contenido:

---
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
  name: awx-deploy
spec:
  service_type: nodeport
  ingress_type: ingress 

Una vez tengamos el archivo ejecutaremos el commando Kubctl apply:

kubectl apply -f .\awx-deployment.yaml -n awx

Para monitorear los cambios, podemos utiilzar el comando kubctl get pods con el comando –watch :

kubctl get pods -n awx -w

Podremos verificar los siguientes recursos creados:

Exponer el Servico

Una vez creado los recursos, expondremos el servicio utilizando “kubectl expose”:

kubectl expose deployment awx-deploy --name awx-web-lb --type LoadBalancer -n awx

Ahora verificamos todos los recursos creados en el namespace awx:

Obtener Admin Password

Ahora que tenemos todos nuestros Recursos dados de alta en GKE, debemos obtener el password predeterminado del usuario Admin. Para obtener la password del admin utilizando PowerShell, debemos ejecutar el siguiente comando:

$base64EncodedPassword =  kubectl get secret awx-deploy-admin-password -o jsonpath="{.data.password}" -n awx
[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($base64EncodedPassword))

Ahora podremos ingresar a la plataforma utilizando el login del usuario “admin” y la contraseña obtenida en el paso anterior.

Listo! Ya instalamos AWX 🙂

Verificamos la version instalada!


Posted

in

, , ,

by

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.