mirror of
https://github.com/ansible/awx-operator.git
synced 2026-03-26 21:33:14 +00:00
135 lines
3.7 KiB
Bash
Executable File
135 lines
3.7 KiB
Bash
Executable File
#!/bin/bash
|
|
# AWX Operator up.sh
|
|
# Purpose:
|
|
# Build operator image from your local checkout, push to quay.io/youruser/awx-operator:dev, and deploy operator
|
|
|
|
# -- Usage
|
|
# NAMESPACE=awx TAG=dev QUAY_USER=developer ./up.sh
|
|
|
|
# -- User Variables
|
|
NAMESPACE=${NAMESPACE:-awx}
|
|
QUAY_USER=${QUAY_USER:-developer}
|
|
TAG=${TAG:-$(git rev-parse --short HEAD)}
|
|
DEV_TAG=${DEV_TAG:-dev}
|
|
DEV_TAG_PUSH=${DEV_TAG_PUSH:-true}
|
|
|
|
# -- Check for required variables
|
|
# Set the following environment variables
|
|
# export NAMESPACE=awx
|
|
# export QUAY_USER=developer
|
|
|
|
if [ -z "$QUAY_USER" ]; then
|
|
echo "Error: QUAY_USER env variable is not set."
|
|
echo " export QUAY_USER=developer"
|
|
exit 1
|
|
fi
|
|
if [ -z "$NAMESPACE" ]; then
|
|
echo "Error: NAMESPACE env variable is not set. Run the following with your namespace:"
|
|
echo " export NAMESPACE=developer"
|
|
exit 1
|
|
fi
|
|
|
|
# -- Container Build Engine (podman or docker)
|
|
ENGINE=${ENGINE:-podman}
|
|
|
|
# -- Variables
|
|
IMG=quay.io/$QUAY_USER/awx-operator
|
|
KUBE_APPLY="kubectl apply -n $NAMESPACE -f"
|
|
|
|
# -- Wait for existing project to be deleted
|
|
# Function to check if the namespace is in terminating state
|
|
is_namespace_terminating() {
|
|
kubectl get namespace $NAMESPACE 2>/dev/null | grep -q 'Terminating'
|
|
return $?
|
|
}
|
|
|
|
# Check if the namespace exists and is in terminating state
|
|
if kubectl get namespace $NAMESPACE 2>/dev/null; then
|
|
echo "Namespace $NAMESPACE exists."
|
|
|
|
if is_namespace_terminating; then
|
|
echo "Namespace $NAMESPACE is in terminating state. Waiting for it to be fully terminated..."
|
|
while is_namespace_terminating; do
|
|
sleep 5
|
|
done
|
|
echo "Namespace $NAMESPACE has been terminated."
|
|
fi
|
|
fi
|
|
|
|
# -- Create namespace
|
|
kubectl create namespace $NAMESPACE
|
|
|
|
|
|
# -- Prepare
|
|
|
|
# Set imagePullPolicy to Always
|
|
files=(
|
|
config/manager/manager.yaml
|
|
)
|
|
for file in "${files[@]}"; do
|
|
if grep -qF 'imagePullPolicy: IfNotPresent' ${file}; then
|
|
sed -i -e "s|imagePullPolicy: IfNotPresent|imagePullPolicy: Always|g" ${file};
|
|
fi
|
|
done
|
|
|
|
|
|
# Delete old operator deployment
|
|
kubectl delete deployment awx-operator-controller-manager
|
|
|
|
# Create secrets
|
|
$KUBE_APPLY dev/secrets/custom-secret-key.yml
|
|
$KUBE_APPLY dev/secrets/admin-password-secret.yml
|
|
|
|
# (Optional) Create external-pg-secret
|
|
# $KUBE_APPLY dev/secrets/external-pg-secret.yml
|
|
|
|
|
|
# -- Login to Quay.io
|
|
$ENGINE login quay.io
|
|
|
|
if [ $ENGINE = 'podman' ]; then
|
|
if [ -f "$XDG_RUNTIME_DIR/containers/auth.json" ] ; then
|
|
REGISTRY_AUTH_CONFIG=$XDG_RUNTIME_DIR/containers/auth.json
|
|
echo "Found registry auth config: $REGISTRY_AUTH_CONFIG"
|
|
elif [ -f $HOME/.config/containers/auth.json ] ; then
|
|
REGISTRY_AUTH_CONFIG=$HOME/.config/containers/auth.json
|
|
echo "Found registry auth config: $REGISTRY_AUTH_CONFIG"
|
|
elif [ -f "/home/$USER/.docker/config.json" ] ; then
|
|
REGISTRY_AUTH_CONFIG=/home/$USER/.docker/config.json
|
|
echo "Found registry auth config: $REGISTRY_AUTH_CONFIG"
|
|
else
|
|
echo "No Podman configuration files were found."
|
|
fi
|
|
fi
|
|
|
|
if [ $ENGINE = 'docker' ]; then
|
|
if [ -f "/home/$USER/.docker/config.json" ] ; then
|
|
REGISTRY_AUTH_CONFIG=/home/$USER/.docker/config.json
|
|
echo "Found registry auth config: $REGISTRY_AUTH_CONFIG"
|
|
else
|
|
echo "No Docker configuration files were found."
|
|
fi
|
|
fi
|
|
|
|
|
|
# -- Build & Push Operator Image
|
|
echo "Preparing to build $IMG:$TAG ($IMG:$DEV_TAG) with $ENGINE..."
|
|
sleep 3
|
|
make docker-build docker-push IMG=$IMG:$TAG
|
|
|
|
# Tag and Push DEV_TAG Image when DEV_TAG_PUSH is 'True'
|
|
if $DEV_TAG_PUSH ; then
|
|
$ENGINE tag $IMG:$TAG $IMG:$DEV_TAG
|
|
make docker-push IMG=$IMG:$DEV_TAG
|
|
fi
|
|
|
|
# -- Deploy Operator
|
|
make deploy IMG=$IMG:$TAG NAMESPACE=$NAMESPACE
|
|
|
|
# -- Create CR
|
|
# uncomment the CR you want to use
|
|
$KUBE_APPLY dev/awx-cr/awx-openshift-cr.yml
|
|
# $KUBE_APPLY dev/awx-cr/awx-cr-settings.yml
|
|
# $KUBE_APPLY dev/awx-cr/awx-k8s-ingress.yml
|
|
|