--- version: "3" env: K8S_AUTH_KUBECONFIG: "{{.ROOT_DIR}}/kubeconfig" vars: ANSIBLE_PLAYBOOK_DIR: "{{.ANSIBLE_DIR}}/playbooks" ANSIBLE_INVENTORY_DIR: "{{.ANSIBLE_DIR}}/inventory" tasks: init: desc: Install / Upgrade Ansible galaxy deps dir: "{{.ANSIBLE_DIR}}" cmds: - pip3 install --user --requirement requirements.txt - ansible-galaxy install -r requirements.yaml --roles-path ~/.ansible/roles --force - ansible-galaxy collection install -r requirements.yaml --collections-path ~/.ansible/collections --force preconditions: - test -f "{{.ANSIBLE_DIR}}/requirements.txt" - test -f "{{.ANSIBLE_DIR}}/requirements.yaml" env: ANSIBLE_CONFIG: "{{.ANSIBLE_DIR}}/ansible.cfg" list: desc: List all the hosts dir: "{{.ANSIBLE_DIR}}" cmd: ansible all -i {{.ANSIBLE_INVENTORY_DIR}}/hosts.yaml --list-hosts env: ANSIBLE_CONFIG: "{{.ANSIBLE_DIR}}/ansible.cfg" prepare: desc: Prepare all the k8s nodes for running k3s dir: "{{.ANSIBLE_DIR}}" cmd: ansible-playbook -i {{.ANSIBLE_INVENTORY_DIR}}/hosts.yaml {{.ANSIBLE_PLAYBOOK_DIR}}/cluster-prepare.yaml env: ANSIBLE_CONFIG: "{{.ANSIBLE_DIR}}/ansible.cfg" install: desc: Install Kubernetes on the nodes dir: "{{.ANSIBLE_DIR}}" cmd: ansible-playbook -i {{.ANSIBLE_INVENTORY_DIR}}/hosts.yaml {{.ANSIBLE_PLAYBOOK_DIR}}/cluster-installation.yaml env: ANSIBLE_CONFIG: "{{.ANSIBLE_DIR}}/ansible.cfg" rollout-update: desc: Preform operating system updates and rollout restart the cluster dir: "{{.ANSIBLE_DIR}}" cmd: ansible-playbook -i {{.ANSIBLE_INVENTORY_DIR}}/hosts.yaml {{.ANSIBLE_PLAYBOOK_DIR}}/cluster-rollout-update.yaml env: ANSIBLE_CONFIG: "{{.ANSIBLE_DIR}}/ansible.cfg" kube-vip: desc: Apply new kube-vip configuration to the cluster dir: "{{.ANSIBLE_DIR}}" cmd: ansible-playbook -i {{.ANSIBLE_INVENTORY_DIR}}/hosts.yaml {{.ANSIBLE_PLAYBOOK_DIR}}/cluster-kube-vip.yaml env: ANSIBLE_CONFIG: "{{.ANSIBLE_DIR}}/ansible.cfg" nuke: desc: Uninstall Kubernetes on the nodes dir: "{{.ANSIBLE_DIR}}" interactive: true cmd: ansible-playbook -i {{.ANSIBLE_INVENTORY_DIR}}/hosts.yaml {{.ANSIBLE_PLAYBOOK_DIR}}/cluster-nuke.yaml env: ANSIBLE_CONFIG: "{{.ANSIBLE_DIR}}/ansible.cfg" ping: desc: Ping all the hosts dir: "{{.ANSIBLE_DIR}}" cmd: ansible all -i {{.ANSIBLE_INVENTORY_DIR}}/hosts.yaml --one-line -m 'ping' env: ANSIBLE_CONFIG: "{{.ANSIBLE_DIR}}/ansible.cfg" uptime: desc: Uptime of all the hosts dir: "{{.ANSIBLE_DIR}}" cmd: ansible all -i {{.ANSIBLE_INVENTORY_DIR}}/hosts.yaml --one-line -a 'uptime' env: ANSIBLE_CONFIG: "{{.ANSIBLE_DIR}}/ansible.cfg" force-reboot: desc: Reboot all the k8s nodes dir: "{{.ANSIBLE_DIR}}" cmd: ansible-playbook -i {{.ANSIBLE_INVENTORY_DIR}}/hosts.yaml {{.ANSIBLE_PLAYBOOK_DIR}}/cluster-reboot.yaml env: ANSIBLE_CONFIG: "{{.ANSIBLE_DIR}}/ansible.cfg" force-poweroff: desc: Shutdown all the k8s nodes dir: "{{.ANSIBLE_DIR}}" cmd: ansible kubernetes -i {{.ANSIBLE_INVENTORY_DIR}}/hosts.yaml -a '/usr/bin/systemctl poweroff' --become env: ANSIBLE_CONFIG: "{{.ANSIBLE_DIR}}/ansible.cfg"