--- # yaml-language-server: $schema=https://taskfile.dev/schema.json version: "3" vars: ANSIBLE_LINT_FILE: "{{.ANSIBLE_DIR}}/.ansible-lint" ANSIBLE_INVENTORY_FILE: "{{.ANSIBLE_DIR}}/inventory/hosts.yaml" ANSIBLE_REQUIREMENTS_FILE: "{{.ANSIBLE_DIR}}/requirements.yaml" ANSIBLE_PIP_REQUIREMENTS_FILE: "{{.ANSIBLE_DIR}}/requirements.txt" env: ANSIBLE_COLLECTIONS_PATH: "{{.VIRTUAL_ENV}}/galaxy" ANSIBLE_ROLES_PATH: "{{.VIRTUAL_ENV}}/galaxy/ansible_roles" ANSIBLE_VARS_ENABLED: "host_group_vars" ANSIBLE_LOCALHOST_WARNING: "False" ANSIBLE_INVENTORY_UNPARSED_WARNING: "False" tasks: deps: desc: Set up Ansible dependencies deps: [":workstation:venv"] cmds: - '{{.VIRTUAL_ENV}}/bin/python3 -m pip install --upgrade --requirement "{{.ANSIBLE_PIP_REQUIREMENTS_FILE}}"' - '{{.VIRTUAL_ENV}}/bin/ansible-galaxy install --role-file "{{.ANSIBLE_REQUIREMENTS_FILE}}" {{if eq .force "true"}}--force{{end}}' preconditions: - { msg: "Missing Ansible requirements file", sh: "test -f {{.ANSIBLE_REQUIREMENTS_FILE}}" } - { msg: "Missing Pip requirements file", sh: "test -f {{.ANSIBLE_PIP_REQUIREMENTS_FILE}}" } sources: - "{{.ANSIBLE_REQUIREMENTS_FILE}}" - "{{.ANSIBLE_PIP_REQUIREMENTS_FILE}}" generates: - "{{.VIRTUAL_ENV}}/bin/ansible" - "{{.VIRTUAL_ENV}}/bin/ansible-galaxy" vars: force: '{{.force | default "true"}}' run: desc: Run an Ansible playbook for configuring a cluster summary: | Args: playbook: Playbook to run (required) prompt: Run Ansible playbook '{{.playbook}}'... continue? deps: ["deps"] cmd: "{{.VIRTUAL_ENV}}/bin/ansible-playbook --inventory {{.ANSIBLE_INVENTORY_FILE}} {{.ANSIBLE_DIR}}/playbooks/{{.playbook}}.yaml {{.CLI_ARGS}}" requires: vars: ["playbook"] preconditions: - { msg: "Missing Ansible inventory file", sh: "test -f {{.ANSIBLE_INVENTORY_FILE}}" } poweroff: desc: Shutdown all the k8s nodes deps: ["deps"] cmd: "{{.VIRTUAL_ENV}}/bin/ansible kubernetes --inventory {{.ANSIBLE_INVENTORY_FILE}} -a '/usr/bin/systemctl poweroff' --become" preconditions: - { msg: "Missing Ansible inventory file", sh: "test -f {{.ANSIBLE_INVENTORY_FILE}}" } list: desc: List all the hosts deps: ["deps"] cmd: "{{.VIRTUAL_ENV}}/bin/ansible kubernetes --inventory {{.ANSIBLE_INVENTORY_FILE}} --list-hosts" preconditions: - { msg: "Missing Ansible inventory file", sh: "test -f {{.ANSIBLE_INVENTORY_FILE}}" } ping: desc: Ping all the hosts deps: ["deps"] cmd: "{{.VIRTUAL_ENV}}/bin/ansible kubernetes --inventory {{.ANSIBLE_INVENTORY_FILE}} --one-line -m 'ping'" preconditions: - { msg: "Missing Ansible inventory file", sh: "test -f {{.ANSIBLE_INVENTORY_FILE}}" } uptime: desc: Uptime of all the hosts deps: ["deps"] cmd: "{{.VIRTUAL_ENV}}/bin/ansible kubernetes --inventory {{.ANSIBLE_INVENTORY_FILE}} --one-line -a 'uptime'" preconditions: - { msg: "Missing Ansible inventory file", sh: "test -f {{.ANSIBLE_INVENTORY_FILE}}" } lint: desc: Lint Ansible deps: ["deps"] cmd: "{{.VIRTUAL_ENV}}/bin/ansible-lint --config-file {{.ANSIBLE_LINT_FILE}} {{.ANSIBLE_DIR}}/**/*.yaml" preconditions: - { msg: "Missing Ansible lint file", sh: "test -f {{.ANSIBLE_LINT_FILE}}" } .reset: internal: true cmd: rm -rf {{.ANSIBLE_DIR}}