From 06b7a0e943554409668426c5b7f20efd1e437e18 Mon Sep 17 00:00:00 2001 From: Nicolas MASSE Date: Tue, 11 May 2021 16:04:49 +0200 Subject: [PATCH] move clusters in a .clusters subfolder --- .gitignore | 1 + bootstrap.tf | 2 +- clusterctl | 124 ++++++++++++++++++++++++------------------------ master.tf | 2 +- post-install.tf | 10 ++-- worker.tf | 2 +- 6 files changed, 70 insertions(+), 71 deletions(-) diff --git a/.gitignore b/.gitignore index c4123de..ce1fbb6 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ terraform.tfvars install-config.yaml .lego local.env +.clusters diff --git a/bootstrap.tf b/bootstrap.tf index 1a2960e..de57239 100644 --- a/bootstrap.tf +++ b/bootstrap.tf @@ -9,7 +9,7 @@ resource "libvirt_volume" "bootstrap_disk" { resource "libvirt_ignition" "bootstrap_ignition" { name = "${var.cluster_name}-bootstrap-ignition" - content = file("${path.module}/${var.cluster_name}/bootstrap.ign") + content = file("${path.module}/.clusters/${var.cluster_name}/bootstrap.ign") } locals { diff --git a/clusterctl b/clusterctl index 67044e7..729a30b 100755 --- a/clusterctl +++ b/clusterctl @@ -6,22 +6,20 @@ trap "exit" INT function init () { local cluster_name="${1:-}" - if [ -d "$cluster_name" ]; then + if [ -d ".clusters/$cluster_name" ]; then echo "Cluster '$cluster_name' already initialized !" exit 1 fi - cluster_name="$1" - - mkdir -p "$cluster_name" - sed "s/__CLUSTER_NAME__/$cluster_name/" install-config.yaml > "$cluster_name/install-config.yaml" - sed "s/__CLUSTER_NAME__/$cluster_name/" terraform.tfvars > "$cluster_name/terraform.tfvars" + mkdir -p ".clusters/$cluster_name" + sed "s/__CLUSTER_NAME__/$cluster_name/" install-config.yaml > ".clusters/$cluster_name/install-config.yaml" + sed "s/__CLUSTER_NAME__/$cluster_name/" terraform.tfvars > ".clusters/$cluster_name/terraform.tfvars" echo "Cluster $cluster_name initialized successfully!" echo echo "Review and adjust the following files to your needs:" - echo "- $cluster_name/install-config.yaml" - echo "- $cluster_name/terraform.tfvars" + echo "- .clusters/$cluster_name/install-config.yaml" + echo "- .clusters/$cluster_name/terraform.tfvars" echo exit 0 } @@ -29,13 +27,13 @@ function init () { function destroy () { local cluster_name="${1:-}" - if [ ! -d "$cluster_name" ]; then + if [ ! -d ".clusters/$cluster_name" ]; then echo "Cluster '$cluster_name' does not exist!" exit 1 fi - terraform destroy -var-file="$cluster_name/terraform.tfvars" -state="$cluster_name/terraform.tfstate" - sed -i.bak 's/^\s*bootstrap_nodes\s*=\s*.*$/bootstrap_nodes = 1/' "$cluster_name/terraform.tfvars" + terraform destroy -var-file=".clusters/$cluster_name/terraform.tfvars" -state=".clusters/$cluster_name/terraform.tfstate" + sed -i.bak 's/^\s*bootstrap_nodes\s*=\s*.*$/bootstrap_nodes = 1/' ".clusters/$cluster_name/terraform.tfvars" } function apply () { @@ -47,25 +45,25 @@ function apply () { fi # Make a backup since the openshift-install command will consume it - if [ -f "$cluster_name/install-config.yaml" ]; then - cp "$cluster_name/install-config.yaml" "$cluster_name/install-config.yaml.bak" + if [ -f ".clusters/$cluster_name/install-config.yaml" ]; then + cp ".clusters/$cluster_name/install-config.yaml" ".clusters/$cluster_name/install-config.yaml.bak" fi # Include the cluster dir in the path for disconnected installations - export PATH="$PWD/$cluster_name:$PATH" + export PATH="$PWD/.clusters/$cluster_name:$PATH" openshift-install version # Create installation files - openshift-install create manifests --dir="$cluster_name" - openshift-install create ignition-configs --dir="$cluster_name" + openshift-install create manifests --dir=".clusters/$cluster_name" + openshift-install create ignition-configs --dir=".clusters/$cluster_name" # Provision the infrastructure and wait for bootstrap to complete - terraform apply -var-file="$cluster_name/terraform.tfvars" -state="$cluster_name/terraform.tfstate" -auto-approve - openshift-install --dir="$cluster_name" wait-for bootstrap-complete --log-level=info + terraform apply -var-file=".clusters/$cluster_name/terraform.tfvars" -state=".clusters/$cluster_name/terraform.tfstate" -auto-approve + openshift-install --dir=".clusters/$cluster_name" wait-for bootstrap-complete --log-level=info # Destroy the bootstrap node - sed -i.bak 's/^\s*bootstrap_nodes\s*=\s*.*$/bootstrap_nodes = 0/' "$cluster_name/terraform.tfvars" - terraform apply -var-file="$cluster_name/terraform.tfvars" -state="$cluster_name/terraform.tfstate" -auto-approve + sed -i.bak 's/^\s*bootstrap_nodes\s*=\s*.*$/bootstrap_nodes = 0/' ".clusters/$cluster_name/terraform.tfvars" + terraform apply -var-file=".clusters/$cluster_name/terraform.tfvars" -state=".clusters/$cluster_name/terraform.tfstate" -auto-approve # Auto-approve all pending CSRs for i in {0..240}; do @@ -74,64 +72,64 @@ function apply () { done & # Wait for the installation to complete - openshift-install --dir="$cluster_name" wait-for install-complete + openshift-install --dir=".clusters/$cluster_name" wait-for install-complete } function ping () { local cluster_name="${1:-}" - if [ ! -d "$cluster_name" ]; then + if [ ! -d ".clusters/$cluster_name" ]; then echo "Cluster '$cluster_name' does not exist!" exit 1 fi - oc --insecure-skip-tls-verify --kubeconfig="$cluster_name/auth/kubeconfig" whoami + oc --insecure-skip-tls-verify --kubeconfig=".clusters/$cluster_name/auth/kubeconfig" whoami } function approve_csr () { local cluster_name="${1:-}" - if [ ! -d "$cluster_name" ]; then + if [ ! -d ".clusters/$cluster_name" ]; then echo "Cluster '$cluster_name' does not exist!" exit 1 fi - oc --insecure-skip-tls-verify --kubeconfig="$cluster_name/auth/kubeconfig" get csr --no-headers \ + oc --insecure-skip-tls-verify --kubeconfig=".clusters/$cluster_name/auth/kubeconfig" get csr --no-headers \ | awk '/Pending/ {print $1}' \ - | xargs --no-run-if-empty oc --insecure-skip-tls-verify --kubeconfig="$cluster_name/auth/kubeconfig" adm certificate approve + | xargs --no-run-if-empty oc --insecure-skip-tls-verify --kubeconfig=".clusters/$cluster_name/auth/kubeconfig" adm certificate approve } function start () { local cluster_name="${1:-}" - if [ ! -d "$cluster_name" ]; then + if [ ! -d ".clusters/$cluster_name" ]; then echo "Cluster '$cluster_name' does not exist!" exit 1 fi - ansible-playbook -i "$cluster_name/inventory" ansible/start.yaml + ansible-playbook -i ".clusters/$cluster_name/inventory" ansible/start.yaml } function stop () { local cluster_name="${1:-}" - if [ ! -d "$cluster_name" ]; then + if [ ! -d ".clusters/$cluster_name" ]; then echo "Cluster '$cluster_name' does not exist!" exit 1 fi - ansible-playbook -i "$cluster_name/inventory" ansible/stop.yaml + ansible-playbook -i ".clusters/$cluster_name/inventory" ansible/stop.yaml } function post_install_nfs () { local cluster_name="${1:-}" - oc apply --insecure-skip-tls-verify --kubeconfig="$cluster_name/auth/kubeconfig" -f "$cluster_name/registry-pv.yaml" - oc patch --insecure-skip-tls-verify --kubeconfig="$cluster_name/auth/kubeconfig" configs.imageregistry.operator.openshift.io cluster --type=json --patch-file=/dev/fd/0 < "$cluster_name/router-certs.yaml" - oc --insecure-skip-tls-verify --kubeconfig="$cluster_name/auth/kubeconfig" apply -f "$cluster_name/router-certs.yaml" -n openshift-ingress - oc --insecure-skip-tls-verify --kubeconfig="$cluster_name/auth/kubeconfig" patch ingresscontroller default -n openshift-ingress-operator --type=merge --patch-file=/dev/fd/0 < ".clusters/$cluster_name/router-certs.yaml" + oc --insecure-skip-tls-verify --kubeconfig=".clusters/$cluster_name/auth/kubeconfig" apply -f ".clusters/$cluster_name/router-certs.yaml" -n openshift-ingress + oc --insecure-skip-tls-verify --kubeconfig=".clusters/$cluster_name/auth/kubeconfig" patch ingresscontroller default -n openshift-ingress-operator --type=merge --patch-file=/dev/fd/0 < "$cluster_name/api-certs.yaml" - oc --insecure-skip-tls-verify --kubeconfig="$cluster_name/auth/kubeconfig" apply -f "$cluster_name/api-certs.yaml" -n openshift-config - oc --insecure-skip-tls-verify --kubeconfig="$cluster_name/auth/kubeconfig" patch apiserver cluster --type=merge --patch-file=/dev/fd/0 < ".clusters/$cluster_name/api-certs.yaml" + oc --insecure-skip-tls-verify --kubeconfig=".clusters/$cluster_name/auth/kubeconfig" apply -f ".clusters/$cluster_name/api-certs.yaml" -n openshift-config + oc --insecure-skip-tls-verify --kubeconfig=".clusters/$cluster_name/auth/kubeconfig" patch apiserver cluster --type=merge --patch-file=/dev/fd/0 < "$cluster_name/sso-secret.yaml" - oc --insecure-skip-tls-verify --kubeconfig="$cluster_name/auth/kubeconfig" apply -f "$cluster_name/sso-secret.yaml" - oc --insecure-skip-tls-verify --kubeconfig="$cluster_name/auth/kubeconfig" apply -f - < ".clusters/$cluster_name/sso-secret.yaml" + oc --insecure-skip-tls-verify --kubeconfig=".clusters/$cluster_name/auth/kubeconfig" apply -f ".clusters/$cluster_name/sso-secret.yaml" + oc --insecure-skip-tls-verify --kubeconfig=".clusters/$cluster_name/auth/kubeconfig" apply -f - </dev/null; do + while ! oc --insecure-skip-tls-verify --kubeconfig=".clusters/$cluster_name/auth/kubeconfig" -n open-cluster-management get mch --all-namespaces -o yaml &>/dev/null; do echo "Waiting for the MultiClusterHub CRD to appear..." sleep 5 done - oc --insecure-skip-tls-verify --kubeconfig="$cluster_name/auth/kubeconfig" apply -f - <