Move telegraf role provisioning to external script with env vars

This commit is contained in:
Mike Reeves
2026-05-14 16:15:54 -04:00
parent b7a13899f7
commit 450eacca41
3 changed files with 37 additions and 15 deletions
+8
View File
@@ -94,6 +94,14 @@ postgres_app_secret:
- require:
- file: postgressecretsdir
postgrestelegrafrole:
file.managed:
- name: /usr/local/bin/telegraf_role.sh
- source: salt://postgres/files/telegraf_role.sh
- user: root
- group: root
- mode: 755
postgres_sbin:
file.recurse:
- name: /usr/sbin
+23
View File
@@ -0,0 +1,23 @@
#!/bin/bash
set -e
# Provision or update a Telegraf postgres role.
# Expects ROLE_USER and ROLE_PASS environment variables.
docker exec -i so-postgres psql \
-v ON_ERROR_STOP=1 \
-v role_user="$ROLE_USER" \
-v role_pass="$ROLE_PASS" \
-U postgres -d so_telegraf <<'EOSQL'
DO $$
BEGIN
IF NOT EXISTS (SELECT FROM pg_catalog.pg_roles WHERE rolname = :role_user) THEN
EXECUTE format('CREATE ROLE %I WITH LOGIN PASSWORD %L', :role_user, :role_pass);
ELSE
EXECUTE format('ALTER ROLE %I WITH LOGIN PASSWORD %L', :role_user, :role_pass);
END IF;
END
$$;
GRANT CONNECT ON DATABASE so_telegraf TO :"role_user";
GRANT so_telegraf TO :"role_user";
EOSQL
+6 -15
View File
@@ -100,26 +100,17 @@ postgres_telegraf_group_role:
{% for mid, entry in creds.items() %}
{% if entry.get('user') and entry.get('pass') %}
{% set u = entry.user %}
{% set p = entry.pass | replace("'", "''") %}
{% set p = entry.pass %}
postgres_telegraf_role_{{ u }}:
cmd.run:
- name: |
docker exec -i so-postgres psql -v ON_ERROR_STOP=1 -U postgres -d so_telegraf <<'EOSQL'
DO $$
BEGIN
IF NOT EXISTS (SELECT FROM pg_catalog.pg_roles WHERE rolname = '{{ u }}') THEN
EXECUTE format('CREATE ROLE %I WITH LOGIN PASSWORD %L', '{{ u }}', '{{ p }}');
ELSE
EXECUTE format('ALTER ROLE %I WITH PASSWORD %L', '{{ u }}', '{{ p }}');
END IF;
END
$$;
GRANT CONNECT ON DATABASE so_telegraf TO "{{ u }}";
GRANT so_telegraf TO "{{ u }}";
EOSQL
- name: /usr/local/bin/telegraf_role.sh
- env:
- ROLE_USER: {{ u }}
- ROLE_PASS: {{ p }}
- hide_output: True
- require:
- file: postgrestelegrafrole
- cmd: postgres_telegraf_group_role
{% endif %}