Skip to content

Ansible and taskfile

Usage:

export ANSIBLE_VAULT_PASSWORD=XXXX
#
task plan
#
task apply -- --tags nginx --limit srv.loc

File .env

ANSIBLE_ROLES_PATH='../ansible-roles'
ANSIBLE_VAULT_PASSWORD_FILE=./get-avp.sh
INVENTORY=inventory/hosts.yml
PLAYBOOK=playbook/playbook.yml
VAULT_FILE=inventory/vault/data.yml

File taskfile.yml

version: "3"

dotenv: [".env"]

tasks:
  help:
    desc: Show available tasks
    cmds:
      - task --list

  pull:
    desc: Update this repo and the roles repo
    deps: [pull-self, pull-roles]

  pull-self:
    desc: Git pull for this repository
    cmds:
      - git pull

  pull-roles:
    desc: Git pull for the ansible-roles repository
    dir: "{{ .ANSIBLE_ROLES_PATH }}"
    cmds:
      - git pull

  vars:
    desc: Show all vars
    cmds:
      - ansible-playbook -i {{.INVENTORY}} {{.CLI_ARGS}} playbook/vars.yml

  plan:
    desc: Run the Ansible playbook in check mode
    cmds:
      - ansible-playbook --check --diff -i {{.INVENTORY}} {{.CLI_ARGS}} {{.PLAYBOOK}}

  apply:
    desc: Run the Ansible playbook
    cmds:
      - ansible-playbook --diff -i {{.INVENTORY}} {{.CLI_ARGS}} {{.PLAYBOOK}}

  vault-edit:
    desc: Edit a vault file
    cmds:
      - ansible-vault edit {{.VAULT_FILE}}

  vault-view:
    desc: View contents of a vault file
    cmds:
      - ansible-vault view {{.VAULT_FILE}}

File: ./get-avp.sh

#!/usr/bin/env bash
echo $ANSIBLE_VAULT_PASSWORD