Saturday, 28 February 2026

Bash Script To Install Ansible Automation Platform ( AWX)

 #!/usr/bin/env bash

set -e


echo "=========================================="

echo " Installing Ansible AWX (Operator Method)"

echo "=========================================="


# Variables

AWX_NAMESPACE="awx"

AWX_NAME="awx-demo"


echo "Updating system..."

sudo apt update -y

sudo apt upgrade -y


echo "Installing dependencies..."

sudo apt install -y curl git vim apt-transport-https ca-certificates gnupg lsb-release


#############################################

# Install K3s (Lightweight Kubernetes)

#############################################


echo "Installing K3s..."

curl -sfL https://get.k3s.io | sh -


echo "Waiting for K3s to be ready..."

sleep 15


sudo kubectl get nodes


#############################################

# Configure kubectl for current user

#############################################


echo "Configuring kubectl for ubuntu user..."


mkdir -p $HOME/.kube

sudo cp /etc/rancher/k3s/k3s.yaml $HOME/.kube/config

sudo chown $USER:$USER $HOME/.kube/config

export KUBECONFIG=$HOME/.kube/config


#############################################

# Install Helm

#############################################


echo "Installing Helm..."

curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash


helm version


#############################################

# Install AWX Operator

#############################################


echo "Creating namespace..."

kubectl create namespace $AWX_NAMESPACE || true


echo "Installing AWX Operator..."

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


echo "Waiting for Operator to start..."

sleep 30


kubectl get pods -n $AWX_NAMESPACE


#############################################

# Deploy AWX Instance

#############################################


echo "Deploying AWX instance..."


cat <<EOF > awx.yaml

apiVersion: awx.ansible.com/v1beta1

kind: AWX

metadata:

  name: $AWX_NAME

  namespace: $AWX_NAMESPACE

spec:

  service_type: nodeport

EOF


kubectl apply -f awx.yaml


echo "Waiting for AWX pods (this may take 5-10 minutes)..."


sleep 60


echo "Monitoring pods..."

kubectl get pods -n $AWX_NAMESPACE


#############################################

# Display Access Info

#############################################


echo "=========================================="

echo " Getting AWX Service Information"

echo "=========================================="


kubectl get svc -n $AWX_NAMESPACE


NODEPORT=$(kubectl get svc ${AWX_NAME}-service -n $AWX_NAMESPACE -o jsonpath='{.spec.ports[0].nodePort}')


PUBLIC_IP=$(curl -s ifconfig.me)


echo ""

echo "=========================================="

echo " AWX Installation Complete"

echo "=========================================="

echo "Access AWX at:"

echo "http://$PUBLIC_IP:$NODEPORT"

echo ""

echo "Retrieving admin password..."


kubectl get secret ${AWX_NAME}-admin-password \

-n $AWX_NAMESPACE -o jsonpath="{.data.password}" | base64 --decode


echo ""

echo "=========================================="

echo "Username: admin"

echo "=========================================="

No comments:

Post a Comment

Bash Script To Install Ansible Automation Platform ( AWX)

  #!/usr/bin/env bash set -e echo "==========================================" echo " Installing Ansible AWX (Operator Method...