--- version: "3" vars: PYTHON_BIN: python3 BOOTSTRAP_DIR: "{{.ROOT_DIR}}/bootstrap" ANSIBLE_DIR: "{{.ROOT_DIR}}/ansible" KUBERNETES_DIR: "{{.ROOT_DIR}}/kubernetes" env: KUBECONFIG: "{{.ROOT_DIR}}/kubeconfig" SOPS_AGE_KEY_FILE: "{{.ROOT_DIR}}/age.key" PATH: "{{.ROOT_DIR}}/.venv/bin:$PATH" VIRTUAL_ENV: "{{.ROOT_DIR}}/.venv" ANSIBLE_COLLECTIONS_PATH: "{{.ROOT_DIR}}/.venv/galaxy" ANSIBLE_ROLES_PATH: "{{.ROOT_DIR}}/.venv/galaxy/ansible_roles" ANSIBLE_VARS_ENABLED: "host_group_vars,community.sops.sops" K8S_AUTH_KUBECONFIG: "{{.ROOT_DIR}}/kubeconfig" includes: ansible: .taskfiles/AnsibleTasks.yaml brew: .taskfiles/BrewTasks.yaml cluster: .taskfiles/ClusterTasks.yaml tasks: default: task -l deps: desc: Create a Python virtual env and install required packages summary: task {{.TASK}} cmds: - "{{.PYTHON_BIN}} -m venv {{.ROOT_DIR}}/.venv" - .venv/bin/python3 -m pip install --upgrade pip setuptools wheel - .venv/bin/python3 -m pip install --upgrade --requirement "{{.ROOT_DIR}}/requirements.txt" - .venv/bin/ansible-galaxy install --role-file "{{.ROOT_DIR}}/requirements.yaml" --force init: desc: Initialize configuration files summary: task {{.TASK}} dir: "{{.BOOTSTRAP_DIR}}" cmds: - cp -n vars/addons.sample.yaml vars/addons.yaml - cp -n vars/config.sample.yaml vars/config.yaml - cmd: echo "=== Configuration files copied ===" silent: true - cmd: echo "Proceed with updating the configuration files..." silent: true - cmd: echo "{{.BOOTSTRAP_DIR}}/vars/config.yaml" silent: true - cmd: echo "{{.BOOTSTRAP_DIR}}/vars/addons.yaml" silent: true status: - test -f "{{.BOOTSTRAP_DIR}}/vars/addons.yaml" - test -f "{{.BOOTSTRAP_DIR}}/vars/config.yaml" configure: desc: Configure repository from Ansible vars summary: task {{.TASK}} # TODO: Only prompt when directories exist # https://github.com/go-task/task/issues/1330 prompt: Any conflicting config in the root kubernetes and ansible directories will be overwritten... continue? dir: "{{.BOOTSTRAP_DIR}}" cmd: ansible-playbook configure.yaml env: ANSIBLE_DISPLAY_SKIPPED_HOSTS: "false" update-template: desc: Update from the upstream flux-cluster-template repository summary: task {{.TASK}} cmds: - mkdir -p $(dirname {{.shafile}}) - touch {{.shafile}} - git remote get-url template >/dev/null 2>&1 || git remote add template git@github.com:onedr0p/flux-cluster-template - git fetch --all - git cherry-pick --no-commit --allow-empty $(cat {{.shafile}})..template/main - git ls-remote template HEAD | awk '{ print $1}' > {{.shafile}} vars: shafile: "{{.ROOT_DIR}}/.tasks/.latest-template.sha" preconditions: - { msg: "Git repository not up-to-date", sh: "git diff --exit-code" } - { msg: "Git repository not up-to-date", sh: "git diff --cached --exit-code" }