#!/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