mirror of
https://git.lapiole.org/dani/ansible-roles.git
synced 2025-07-27 00:05:44 +02:00
Update to 2022-09-06 18:00
This commit is contained in:
20
roles/vault/templates/consul-template-vault.service.j2
Normal file
20
roles/vault/templates/consul-template-vault.service.j2
Normal file
@@ -0,0 +1,20 @@
|
||||
[Unit]
|
||||
Description="HashiCorp consul-template"
|
||||
Documentation=https://github.com/hashicorp/consul-template
|
||||
Requires=network-online.target
|
||||
After=network-online.target
|
||||
After=vault.service
|
||||
ConditionFileNotEmpty={{ vault_root_dir }}/consul-template/consul-template.hcl
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/usr/local/bin/consul-template -config={{ vault_root_dir }}/consul-template/consul-template.hcl
|
||||
SuccessExitStatus=12
|
||||
ExecReload=/bin/kill --signal HUP $MAINPID
|
||||
KillSignal=SIGINT
|
||||
Restart=on-failure
|
||||
RestartSec=2
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
18
roles/vault/templates/consul-template.hcl.j2
Normal file
18
roles/vault/templates/consul-template.hcl.j2
Normal file
@@ -0,0 +1,18 @@
|
||||
vault {
|
||||
address = "{{ vault_secrets.vault_address }}"
|
||||
token = "{{ vault_secrets.vault_token }}"
|
||||
unwrap_token = false
|
||||
}
|
||||
|
||||
{% if vault_secrets.nomad.enabled %}
|
||||
template {
|
||||
source = "{{ vault_root_dir }}/consul-template/nomad_client_bundle.json.tpl"
|
||||
left_delimiter = "[["
|
||||
right_delimiter = "]]"
|
||||
destination = "{{ vault_root_dir }}/tmp/nomad_client_bundle.json"
|
||||
perms = 0600
|
||||
exec {
|
||||
command = "{{ vault_root_dir }}/bin/update_nomad_cert {{ vault_secrets.nomad.token }} {{ vault_secrets.vault_token }}"
|
||||
}
|
||||
}
|
||||
{% endif %}
|
3
roles/vault/templates/nomad_client_bundle.json.tpl.j2
Normal file
3
roles/vault/templates/nomad_client_bundle.json.tpl.j2
Normal file
@@ -0,0 +1,3 @@
|
||||
[[ with secret "{{ vault_secrets.nomad.pki.path }}/issue/{{ vault_secrets.nomad.pki.role }}" "ttl={{ vault_secrets.nomad.pki.ttl }}" "common_name={{ vault_secrets.nomad.pki.cn }}" ]]
|
||||
[[ .Data | toJSONPretty ]]
|
||||
[[ end ]]
|
29
roles/vault/templates/update_nomad_cert.j2
Normal file
29
roles/vault/templates/update_nomad_cert.j2
Normal file
@@ -0,0 +1,29 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -eo pipefail
|
||||
|
||||
NOMAD_TOKEN=$1
|
||||
VAULT_TOKEN=$2
|
||||
|
||||
NOMAD_CERT_BUNDLE={{ vault_root_dir }}/tmp/nomad_client_bundle.json
|
||||
VAULT_ADDR={{ vault_conf.api_addr }}
|
||||
|
||||
if [ "$(vault status -format=json| jq .is_self)" != "true" ]; then
|
||||
echo "We're not the active vault, exiting"
|
||||
elif [ "$(vault status -format=json | jq .sealed)" != "false" ]; then
|
||||
echo "Vault is sealed, exiting"
|
||||
elif [ "$(vault status -format=json | jq .initialized)" != "true" ]; then
|
||||
echo "Vault is not initialized yet, exiting"
|
||||
else
|
||||
echo Updating Vault certificate to access Nomad API
|
||||
VAULT_TOKEN=$VAULT_TOKEN \
|
||||
vault write {{ vault_secrets.nomad.secret.path }}/config/access \
|
||||
address="{{ vault_secrets.nomad.address }}" \
|
||||
token="$NOMAD_TOKEN" \
|
||||
ca_cert="$(cat $NOMAD_CERT_BUNDLE | jq -r .issuing_ca)" \
|
||||
client_cert="$(cat $NOMAD_CERT_BUNDLE | jq -r .certificate)" \
|
||||
client_key="$(cat $NOMAD_CERT_BUNDLE | jq -r .private_key)"
|
||||
fi
|
||||
|
||||
echo Removing Nomad client certificate from the filesystem
|
||||
rm -f $NOMAD_CERT_BUNDLE
|
Reference in New Issue
Block a user