Add new playbook and make target for bootstrapping values to Consul and Vault
This commit is contained in:
parent
888b1236f1
commit
9bb8b39fed
@ -57,14 +57,24 @@ venv/bin/ansible:
|
|||||||
python3 -m venv venv
|
python3 -m venv venv
|
||||||
./venv/bin/pip install ansible python-consul hvac
|
./venv/bin/pip install ansible python-consul hvac
|
||||||
|
|
||||||
.PHONY: ansible-cluster
|
.PHONY: galaxy
|
||||||
ansible-cluster: venv/bin/ansible
|
galaxy: venv/bin/ansible
|
||||||
./venv/bin/ansible-galaxy install -p roles -r roles/requirements.yml
|
./venv/bin/ansible-galaxy install -p roles -r roles/requirements.yml
|
||||||
./venv/bin/ansible-galaxy collection install -r collections/requirements.yml
|
./venv/bin/ansible-galaxy collection install -r collections/requirements.yml
|
||||||
|
|
||||||
|
|
||||||
|
.PHONY: ansible-cluster
|
||||||
|
ansible-cluster: venv/bin/ansible galaxy
|
||||||
env VIRTUAL_ENV=/Users/ifij/workspace/iamthefij/orchestration-tests/nomad/venv ./venv/bin/ansible-playbook -K -vv \
|
env VIRTUAL_ENV=/Users/ifij/workspace/iamthefij/orchestration-tests/nomad/venv ./venv/bin/ansible-playbook -K -vv \
|
||||||
$(shell test -f vault-keys.json && echo '-e "@vault-keys.json"') \
|
$(shell test -f vault-keys.json && echo '-e "@vault-keys.json"') \
|
||||||
-i ansible_hosts.yml -M ./roles ./setup-cluster.yml
|
-i ansible_hosts.yml -M ./roles ./setup-cluster.yml
|
||||||
|
|
||||||
|
.PHONY: bootstrap-values
|
||||||
|
bootstrap-values: venv/bin/ansible galaxy
|
||||||
|
env VIRTUAL_ENV=/Users/ifij/workspace/iamthefij/orchestration-tests/nomad/venv ./venv/bin/ansible-playbook -vv \
|
||||||
|
$(shell test -f vault-keys.json && echo '-e "@vault-keys.json"') \
|
||||||
|
-i ansible_hosts.yml -M ./roles ./bootstrap-values.yml
|
||||||
|
|
||||||
.PHONY: init
|
.PHONY: init
|
||||||
init:
|
init:
|
||||||
@terraform init
|
@terraform init
|
||||||
|
59
nomad/bootstrap-values.yml
Normal file
59
nomad/bootstrap-values.yml
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
---
|
||||||
|
- name: Bootstrap Consul values
|
||||||
|
hosts: consul_instances
|
||||||
|
gather_facts: false
|
||||||
|
|
||||||
|
vars_files:
|
||||||
|
- consul_values.yml
|
||||||
|
|
||||||
|
- name: Add values
|
||||||
|
delegate_to: localhost
|
||||||
|
run_once: true
|
||||||
|
block:
|
||||||
|
- name: Install python-consul
|
||||||
|
pip:
|
||||||
|
name: python-consul
|
||||||
|
extra_args: --index-url https://pypi.org/simple
|
||||||
|
|
||||||
|
- name: Set hostname
|
||||||
|
consul_kv:
|
||||||
|
host: "{{ inventory_hostname }}"
|
||||||
|
key: global/base_hostname
|
||||||
|
value: dev.homelab
|
||||||
|
|
||||||
|
- name: Write values
|
||||||
|
consul_kv:
|
||||||
|
host: "{{ inventory_hostname }}"
|
||||||
|
key: "{{ item.key }}"
|
||||||
|
value: "{{ item.value }}"
|
||||||
|
loop: "{{ consul_values | default({}) | dict2items }}"
|
||||||
|
|
||||||
|
- name: Bootstrap value values
|
||||||
|
hosts: vault_instances
|
||||||
|
gather_facts: false
|
||||||
|
|
||||||
|
vars_files:
|
||||||
|
- ./vault_hashi_vault_values.yml
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: Bootstrap Vault secrets
|
||||||
|
delegate_to: localhost
|
||||||
|
run_once: true
|
||||||
|
block:
|
||||||
|
- name: Install hvac
|
||||||
|
pip:
|
||||||
|
name: hvac
|
||||||
|
extra_args: --index-url https://pypi.org/simple
|
||||||
|
|
||||||
|
# This fails on first run because `root_token` isn't found
|
||||||
|
# Fails after taht too because the kv/ space has not been created yet either! Oh noes!
|
||||||
|
# Maybe move data bootstrapping to after the cluster is bootstrapped
|
||||||
|
- name: Write values
|
||||||
|
community.hashi_vault.vault_write:
|
||||||
|
url: "http://{{ inventory_hostname }}:8200"
|
||||||
|
token: "{{ root_token }}"
|
||||||
|
path: "kv/data/{{ item.key }}"
|
||||||
|
data:
|
||||||
|
data:
|
||||||
|
"{{ item.value }}"
|
||||||
|
loop: "{{ hashi_vault_values | default({}) | dict2items }}"
|
Loading…
Reference in New Issue
Block a user