| 
 | 1 | +#!/bin/bash  | 
 | 2 | + | 
 | 3 | +set -o pipefail  | 
 | 4 | +set -o errexit  | 
 | 5 | + | 
 | 6 | +printHelp() {  | 
 | 7 | +    echo "usage: $0 [-h] [---skip-manifest-download]"  | 
 | 8 | +}  | 
 | 9 | + | 
 | 10 | +function join_by {  | 
 | 11 | +    local IFS="$1";  | 
 | 12 | +    shift;  | 
 | 13 | +    echo "$*";  | 
 | 14 | +}  | 
 | 15 | + | 
 | 16 | +ingressHostname="host.docker.internal"  | 
 | 17 | +generatedFilesDir="playbook/roles/argocd/files/generated"  | 
 | 18 | + | 
 | 19 | +while [ "$1" != "" ]; do  | 
 | 20 | +    case $1 in  | 
 | 21 | +        -h | --help )             printHelp  | 
 | 22 | +                                  exit  | 
 | 23 | +                                  ;;  | 
 | 24 | +        -i | --ingress-hostname ) shift  | 
 | 25 | +                                  ingressHostname="${1}"  | 
 | 26 | +                                  ;;  | 
 | 27 | +        -s | --skip-manifest-download )  | 
 | 28 | +                                  skipManifestDownload="true"  | 
 | 29 | +                                  ;;  | 
 | 30 | +        * )  | 
 | 31 | +            echo "Invalid parameter '$1'"  | 
 | 32 | +            printHelp  | 
 | 33 | +            exit 1  | 
 | 34 | +    esac  | 
 | 35 | +    # Shift all the parameters down by one  | 
 | 36 | +    shift  | 
 | 37 | +done  | 
 | 38 | + | 
 | 39 | +# install argocd  | 
 | 40 | + | 
 | 41 | +mkdir -p "${generatedFilesDir}"  | 
 | 42 | + | 
 | 43 | +if [ -f "${generatedFilesDir}/k3s_token.txt" ]; then  | 
 | 44 | +  K3S_TOKEN=$(cat "${generatedFilesDir}/k3s_token.txt")  | 
 | 45 | +else  | 
 | 46 | +  K3S_TOKEN=$(head /dev/urandom | LC_ALL=C tr -dc 'A-Za-z0-9' | head -c 32 | tee "${generatedFilesDir}/k3s_token.txt")  | 
 | 47 | +fi  | 
 | 48 | + | 
 | 49 | +export K3S_TOKEN  | 
 | 50 | +docker compose up -d  | 
 | 51 | + | 
 | 52 | +sleep 5  | 
 | 53 | + | 
 | 54 | +mkdir -p "${generatedFilesDir}"  | 
 | 55 | + | 
 | 56 | +# export server ca so ansible is less cranky  | 
 | 57 | +docker cp local_argo-server-1:/var/lib/rancher/k3s/server/tls/server-ca.crt "${generatedFilesDir}/k3s_server_ca.crt"  | 
 | 58 | + | 
 | 59 | +if [ -f "${generatedFilesDir}/ldap_cfg.txt" ]; then  | 
 | 60 | +  ldapAdminPassword=$(grep 'adminPassword:' "${generatedFilesDir}/ldap_cfg.txt" | sed 's/adminPassword://')  | 
 | 61 | +  ldapUsername=$(grep 'username:' "${generatedFilesDir}/ldap_cfg.txt" | sed 's/username://')  | 
 | 62 | +  ldapPassword=$(grep 'password:' "${generatedFilesDir}/ldap_cfg.txt" | sed 's/password://')  | 
 | 63 | +else  | 
 | 64 | +  ldapAdminPassword=$(head /dev/urandom | LC_ALL=C tr -dc 'A-Za-z0-9' | head -c 32)  | 
 | 65 | +  read -r -p    "Enter LDAP username: " ldapUsername  | 
 | 66 | +  read -r -s -p "Enter LDAP password: " ldapPassword  | 
 | 67 | + | 
 | 68 | +  echo "adminPassword:${ldapAdminPassword}" >  "${generatedFilesDir}/ldap_cfg.txt"  | 
 | 69 | +  echo "username:${ldapUsername}"           >> "${generatedFilesDir}/ldap_cfg.txt"  | 
 | 70 | +  echo "password:${ldapPassword}"           >> "${generatedFilesDir}/ldap_cfg.txt"  | 
 | 71 | +fi  | 
 | 72 | + | 
 | 73 | +# argocd kubernetes manifest  | 
 | 74 | +if [[ -f "${generatedFilesDir}/argo_install_manifest.yml" || "${skipManifestDownload}" == *"true"* ]]; then  | 
 | 75 | +    echo "Skipping manifest download"  | 
 | 76 | +else  | 
 | 77 | +    echo "Downloading latest ArgoCD manifest"  | 
 | 78 | +    curl -o "${generatedFilesDir}/argo_install_manifest.yml" https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml  | 
 | 79 | +fi  | 
 | 80 | + | 
 | 81 | +# keypair for git in-cluster git operations  | 
 | 82 | +if [[ ! -f "${generatedFilesDir}/test_key" ]]  | 
 | 83 | +then  | 
 | 84 | +   ssh-keygen -t rsa -b 4096 -C  "[email protected]" -m pem -N  '' -f  "${generatedFilesDir}/test_key" | 
 | 85 | +fi  | 
 | 86 | + | 
 | 87 | +# python3 -m venv localvenv  | 
 | 88 | +# source localvenv/bin/activate  | 
 | 89 | +# pip install kubernetes  | 
 | 90 | +# ansible-galaxy collection install kubernetes.core  | 
 | 91 | +ansible-playbook -i ./playbook/inventory.yml \  | 
 | 92 | +  -e ingress_hostname="${ingressHostname}" \  | 
 | 93 | +  -e ldap_admin_password="${ldapAdminPassword}" \  | 
 | 94 | +  -e ldap_username="${ldapUsername}" \  | 
 | 95 | +  -e ldap_password="${ldapPassword}" \  | 
 | 96 | +  ./playbook/main.yml  | 
 | 97 | + | 
 | 98 | +cat > "${generatedFilesDir}/test_input.properties" << EOF  | 
 | 99 | +ARGO_IT_APP_NAMESPACE=test-namespace  | 
 | 100 | +ARGO_IT_BASE_API=https://${ingressHostname}  | 
 | 101 | +ARGO_IT_BASIC_ADMIN_PASSWORD=$(< "${generatedFilesDir}/argocd_admin_password.txt")  | 
 | 102 | +ARGO_IT_KUBECONFIG_PATH=local_argo/${generatedFilesDir}/kubeconfig.yaml  | 
 | 103 | +ARGO_IT_LDAP_USERNAME=${ldapUsername}  | 
 | 104 | +ARGO_IT_LDAP_PASSWORD=${ldapPassword}  | 
 | 105 | +EOF  | 
0 commit comments