Skip to content

Instantly share code, notes, and snippets.

@wknapik
Last active March 20, 2019 12:09
Show Gist options
  • Save wknapik/752e32ed143e9bdaeef596461d768186 to your computer and use it in GitHub Desktop.
Save wknapik/752e32ed143e9bdaeef596461d768186 to your computer and use it in GitHub Desktop.
Delete aws secretsmanager secrets by name prefix (ansible, bash)
- set_fact:
prefix: foo/bar
- name: delete aws secretsmanager secrets by name prefix
shell: |
set -eo pipefail
shopt -s inherit_errexit 2>/dev/null || true
declare -a opt page_secrets secrets
while [[ "$next_token" != null ]]; do
read -ra opt <<<"${next_token:+--next-token "$next_token"}"
page="$(aws secretsmanager list-secrets \
--query '[SecretList[?starts_with(Name, `{{ prefix|quote }}`)].Name,NextToken]' \
"${opt[@]}")"
read -ra page_secrets <<<"$(jq -r '.[0]|join("\t")' <<<"$page")"
secrets+=("${page_secrets[@]}")
next_token="$(jq -r '.[1]' <<<"$page")"
sleep 1
done
for secret in "${secrets[@]}"; do
aws secretsmanager delete-secret --secret-id "$secret" --recovery-window-in-days 7
done
args:
executable: bash
register: foo
changed_when: '"DeletionDate" in foo.stdout'
@wknapik
Copy link
Author

wknapik commented Jun 22, 2018

Yeah, it's pretty terrible ;]
Requires bash and jq.
Use at your own risk.

ansible/ansible#40093

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment