install.fairie/docs/scripts/after/run_onchange_after_81-k8s-digitalocean.sh.tmpl.md
2023-11-05 01:46:18 +00:00

3 KiB

title description sidebar_label slug githubLocation scriptLocation repoLocation
DigitalOcean Kubernetes Connects to DigitalOcean Kubernetes cluster 81 DigitalOcean Kubernetes /scripts/after/run_onchange_after_81-k8s-digitalocean.sh.tmpl https://github.com/megabyte-labs/install.doctor/blob/master/home/.chezmoiscripts/universal/run_onchange_after_81-k8s-digitalocean.sh.tmpl https://github.com/megabyte-labs/install.doctor/raw/master/home/.chezmoiscripts/universal/run_onchange_after_81-k8s-digitalocean.sh.tmpl home/.chezmoiscripts/universal/run_onchange_after_81-k8s-digitalocean.sh.tmpl

DigitalOcean Kubernetes

Connects to DigitalOcean Kubernetes cluster

Overview

This script runs when DIGITALOCEAN_ACCESS_TOKEN is defined as an environment variable or as an encrypted key (see Secrets documentation). If the check passes, then the script ensures the DigitalOcean CLI is installed (i.e. doctl). Then, it uses doctl to connect to the Kubernetes cluster defined by the the configuration stored under .user.digitalOceanClusterId in home/.chezmoi.yaml.tmpl.

Source Code

{{- if (and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "DIGITALOCEAN_ACCESS_TOKEN")) (env "DIGITALOCEAN_ACCESS_TOKEN")) -}}
#!/usr/bin/env bash
# @file DigitalOcean Kubernetes
# @brief Connects to DigitalOcean Kubernetes cluster
# @description
#     This script runs when `DIGITALOCEAN_ACCESS_TOKEN` is defined as an environment variable or as an encrypted key (see
#     [Secrets documentation](https://install.doctor/docs/customization/secrets#encrypted-secrets)). If the check passes,
#     then the script ensures the DigitalOcean CLI is installed (i.e. `doctl`). Then, it uses `doctl` to connect to the Kubernetes
#     cluster defined by the the configuration stored under `.user.digitalOceanClusterId` in `home/.chezmoi.yaml.tmpl`.

{{ includeTemplate "universal/profile" }}
{{ includeTemplate "universal/logg" }}

### Ensure `DIGITALOCEAN_ACCESS_TOKEN` is defined (used for headlessly connecting to the k8s cluster)
export DIGITALOCEAN_ACCESS_TOKEN="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "DIGITALOCEAN_ACCESS_TOKEN")) }}{{ includeTemplate "secrets/DIGITALOCEAN_ACCESS_TOKEN" | decrypt }}{{ else }}{{ env "DIGITALOCEAN_ACCESS_TOKEN" }}{{ end }}"

if [ -n "$DIGITALOCEAN_ACCESS_TOKEN" ] && [ -n '{{ .user.digitalOceanClusterId }}' ]; then
    ### Ensure DigitalOcean CLI is instaled
    if ! command -v doctl > /dev/null; then
        logg info 'doctl is missing - installing via Homebrew'
        brew install doctl
    fi

    ### Connect to the k8s cluster with `doctl`
    logg info 'Connecting to the DigitalOcean k8s cluster with doctl'
    doctl kubernetes cluster kubeconfig save {{ .user.digitalOceanClusterId }}
else
    logg info 'Skipping connecting to the DigitalOcean k8s cluster because either the DIGITALOCEAN_ACCESS_TOKEN or the .user.digitalOceanClusterId is not defined'
fi

{{ end -}}