Rework passwordstore lookup handling in roles service-fastd-mesh und service-fastd-intragate

This commit is contained in:
Tobias Hachmer 2017-11-12 20:27:12 +01:00
parent 7437095761
commit 78a141305d
7 changed files with 16 additions and 60 deletions

View file

@ -57,6 +57,7 @@ Diese Liste ist quasi das Herzstück zur Konfiguration der Mesh-spezifischen Par
|fastd.nodes.instances[x].peers|Dictionary|||| |fastd.nodes.instances[x].peers|Dictionary||||
|fastd.nodes.instances[x].peers.repo|Key|https://github.com/freifunk-mwu/peers-ffmz.git|URL|| |fastd.nodes.instances[x].peers.repo|Key|https://github.com/freifunk-mwu/peers-ffmz.git|URL||
|fastd.nodes.instances[x].peers.version|Key|master|string|| |fastd.nodes.instances[x].peers.version|Key|master|string||
|fastd.nodes.instances[x].pass|Key|fastd/mzvpn|string||
|fastd.intragate|Dictionary|||| |fastd.intragate|Dictionary||||
|fastd.intragate.instances|List|||Jeder Listeneintrag ist ein Dictionary; Instanzen für Intragate-Kommunikation| |fastd.intragate.instances|List|||Jeder Listeneintrag ist ein Dictionary; Instanzen für Intragate-Kommunikation|
|fastd.intragate.instances[x].id|Key|0|integer|| |fastd.intragate.instances[x].id|Key|0|integer||
@ -64,6 +65,7 @@ Diese Liste ist quasi das Herzstück zur Konfiguration der Mesh-spezifischen Par
|fastd.intragate.instances[x].peers|Dictionary|||| |fastd.intragate.instances[x].peers|Dictionary||||
|fastd.intragate.instances[x].peers.repo|Key|https://github.com/freifunk-mwu/peers-ffmz.git|URL|| |fastd.intragate.instances[x].peers.repo|Key|https://github.com/freifunk-mwu/peers-ffmz.git|URL||
|fastd.intragate.instances[x].peers.version|Key|master|string|| |fastd.intragate.instances[x].peers.version|Key|master|string||
|fastd.intragate.instances[x].pass|Key|fastd/mzigvpn|string||
|dns|Dictionary|||| |dns|Dictionary||||
|dns.master|Key|fd37:b4dc:4b1e::a25:103|string; IP-Adresse|DNS-Master IP| |dns.master|Key|fd37:b4dc:4b1e::a25:103|string; IP-Adresse|DNS-Master IP|
|dns.forward_zones|List|||| |dns.forward_zones|List||||
@ -134,11 +136,6 @@ Alle Server- bzw. Gateway-spezifischen Parameter werden als Host-Variablen abgeb
|ffrl_exit_server.ffrl-b-fra2-fra.public_ipv4_address|Key|185.66.194.1|IP-Adresse|IP-Adresse der Tunnel-Gegenstelle| |ffrl_exit_server.ffrl-b-fra2-fra.public_ipv4_address|Key|185.66.194.1|IP-Adresse|IP-Adresse der Tunnel-Gegenstelle|
|ffrl_exit_server.ffrl-b-fra2-fra.tunnel_ipv4_network|Key|100.64.0.188/31|Network/Prefix|Internes IPv4-Tunnel-Subnetz| |ffrl_exit_server.ffrl-b-fra2-fra.tunnel_ipv4_network|Key|100.64.0.188/31|Network/Prefix|Internes IPv4-Tunnel-Subnetz|
|ffrl_exit_server.ffrl-b-fra2-fra.tunnel_ipv6_network|Key|2a03:2260:0:64::/64|Network/Prefix|Internes IPv6-Tunnel-Subnetz| |ffrl_exit_server.ffrl-b-fra2-fra.tunnel_ipv6_network|Key|2a03:2260:0:64::/64|Network/Prefix|Internes IPv6-Tunnel-Subnetz|
|fastd_secrets|Dictionary|||Ein Eintrag pro fastd-Interface mit passwordstore lookup zum pass-Pfad|
|fastd_secrets.mzvpn|Key|"{{ lookup('passwordstore', 'fastd/mzvpn/spinat subkey=secret') }}"|||
|fastd_secrets.wivpn|Key|"{{ lookup('passwordstore', 'fastd/wivpn/spinat subkey=secret') }}"|||
|fastd_secrets.mzigvpn|Key|"{{ lookup('passwordstore', 'fastd/mzvpn/spinat subkey=secret') }}"|||
|fastd_secrets.wiigvpn|Key|"{{ lookup('passwordstore', 'fastd/wivpn/spinat subkey=secret') }}"|||
|tinc_private_key|Variable|"{{ lookup('passwordstore', 'tinc/icvpn/spinat_private returnall=true') }}"||Passwordstore lookup zum pass-Pfad| |tinc_private_key|Variable|"{{ lookup('passwordstore', 'tinc/icvpn/spinat_private returnall=true') }}"||Passwordstore lookup zum pass-Pfad|
## Sensible Informationen ## Sensible Informationen
@ -194,13 +191,6 @@ ffrl_exit_server:
tunnel_ipv4_network: # Format: IP/Maske tunnel_ipv4_network: # Format: IP/Maske
tunnel_ipv6_network: tunnel_ipv6_network:
# Pfade zu den fastd secrets im passwordstore
fastd_secrets:
mzvpn: "{{ lookup('passwordstore', 'fastd/mzvpn/$Hostname subkey=secret') }}"
wivpn: "{{ lookup('passwordstore', 'fastd/wivpn/$Hostname subkey=secret') }}"
mzigvpn: "{{ lookup('passwordstore', 'fastd/mzvpn/$Hostname subkey=secret') }}"
wiigvpn: "{{ lookup('passwordstore', 'fastd/wivpn/$Hostname subkey=secret') }}"
# Pfade zum tinc secret im passwordstore # Pfade zum tinc secret im passwordstore
tinc_private_key: "{{ lookup('passwordstore', 'tinc/icvpn/$hostname_private returnall=true') }}" tinc_private_key: "{{ lookup('passwordstore', 'tinc/icvpn/$hostname_private returnall=true') }}"
``` ```

View file

@ -51,11 +51,13 @@ meshes:
peers: peers:
repo: https://github.com/freifunk-mwu/peers-ffmz.git repo: https://github.com/freifunk-mwu/peers-ffmz.git
version: master version: master
pass: fastd/mzvpn
- id: 1 - id: 1
mtu: 1312 mtu: 1312
peers: peers:
repo: https://github.com/freifunk-mwu/peers-ffmz.git repo: https://github.com/freifunk-mwu/peers-ffmz.git
version: master version: master
pass: fastd/mzvpn
intragate: intragate:
instances: instances:
- id: 0 - id: 0
@ -63,6 +65,7 @@ meshes:
peers: peers:
repo: https://github.com/freifunk-mwu/ffmz-infrastructure-peers.git repo: https://github.com/freifunk-mwu/ffmz-infrastructure-peers.git
version: master version: master
pass: fastd/mzigvpn
dns: dns:
master: fd37:b4dc:4b1e::a25:103 master: fd37:b4dc:4b1e::a25:103
forward_zones: forward_zones:
@ -106,11 +109,13 @@ meshes:
peers: peers:
repo: https://github.com/freifunk-mwu/peers-ffwi.git repo: https://github.com/freifunk-mwu/peers-ffwi.git
version: master version: master
pass: fastd/wivpn
- id: 1 - id: 1
mtu: 1312 mtu: 1312
peers: peers:
repo: https://github.com/freifunk-mwu/peers-ffwi.git repo: https://github.com/freifunk-mwu/peers-ffwi.git
version: master version: master
pass: fastd/wivpn
intragate: intragate:
instances: instances:
- id: 0 - id: 0
@ -118,6 +123,7 @@ meshes:
peers: peers:
repo: https://github.com/freifunk-mwu/ffwi-infrastructure-peers.git repo: https://github.com/freifunk-mwu/ffwi-infrastructure-peers.git
version: master version: master
pass: fastd/wiigvpn
dns: dns:
master: fd56:b4dc:4b1e::a38:103 master: fd56:b4dc:4b1e::a38:103
forward_zones: forward_zones:

View file

@ -30,10 +30,4 @@ ffrl_exit_server:
tunnel_ipv4_network: 100.64.9.50/31 tunnel_ipv4_network: 100.64.9.50/31
tunnel_ipv6_network: 2a03:2260:0:3c1::/64 tunnel_ipv6_network: 2a03:2260:0:3c1::/64
fastd_secrets:
mzvpn: "{{ lookup('passwordstore', 'fastd/mzvpn/uffschnitt subkey=secret') }}"
wivpn: "{{ lookup('passwordstore', 'fastd/wivpn/uffschnitt subkey=secret') }}"
mzigvpn: "{{ lookup('passwordstore', 'fastd/mzvpn/uffschnitt subkey=secret') }}"
wiigvpn: "{{ lookup('passwordstore', 'fastd/wivpn/uffschnitt subkey=secret') }}"
tinc_private_key: "{{ lookup('passwordstore', 'tinc/icvpn/uffschnitt_private returnall=true') }}" tinc_private_key: "{{ lookup('passwordstore', 'tinc/icvpn/uffschnitt_private returnall=true') }}"

View file

@ -13,7 +13,7 @@ Diese Ansible role konfiguriert die fastd-Instanz für die Intra-Server Kommunik
## Benötigte Variablen ## Benötigte Variablen
- Dictionary `meshes` - Dictionary `meshes`
´´´ ```
meshes: meshes:
- id: xx - id: xx
... ...
@ -26,26 +26,14 @@ meshes:
peers: peers:
repo: # String - https Link zum Github Repository repo: # String - https Link zum Github Repository
version: # String - Branch oder Commit ID version: # String - Branch oder Commit ID
pass: # String - Pfad des fastd secrets im Admin Pass
... ...
´´´ ```
- Dictionary `fastd_secrets` (Host-Variable)
´´´
fastd_secrets:
mzigvpn: "{{ lookup('passwordstore', 'fastd/mzigvpn/sparegate4 subkey=secret') }}"
wiigvpn: "{{ lookup('passwordstore', 'fastd/wiigvpn/sparegate4 subkey=secret') }}"
...
´´´
## fastd Secrets ## fastd Secrets
Die privaten Schlüssel der fastd Instanzen sind sehr sensible Informationen, weshalb wir diese in ein nicht öffentliches passwordstore ausgelagert haben. Die privaten Schlüssel der fastd Instanzen sind sehr sensible Informationen, weshalb wir diese in ein nicht öffentliches passwordstore ausgelagert haben.
Bevor man ein Gateway aufsetzt, müssen die privaten Schlüssel für alle benötigten fastd Instanzen generiert und im passwordstore hinterlegt werden. Bevor man ein Gateway aufsetzt, müssen die privaten Schlüssel für alle benötigten fastd Instanzen generiert und im passwordstore hinterlegt werden.
Das Dictionary `fastd_secrets` folgt dem Aufbau:
```
fastd_secrets:
$Instanz-Name: "{{ lookup('passwordstore', '$Pfad-im-passwordstore subkey=secret') }}"
```
## Abhängigkeiten ## Abhängigkeiten

View file

@ -1,9 +1,4 @@
{% set local_interface = item.0.id + 'igvpn' -%}
# #
# {{ ansible_managed }} # {{ ansible_managed }}
# #
{% for interface in fastd_secrets %} secret "{{ lookup('passwordstore', item.1.pass + '/' + inventory_hostname_short + ' subkey=secret') }}";
{% if local_interface == interface %}
secret "{{ fastd_secrets[interface] }}";
{% endif %}
{% endfor %}

View file

@ -17,7 +17,7 @@ Intragate-Instanzen: $mesh.id + 'ig' + vpn + '-' + $mesh.fastd.intragate.instanc
## Benötigte Variablen ## Benötigte Variablen
- Dictionary `meshes` - Dictionary `meshes`
´´´ ```
meshes: meshes:
- id: xx - id: xx
... ...
@ -30,27 +30,15 @@ meshes:
peers: peers:
repo: # String - https Link zum Github Repository repo: # String - https Link zum Github Repository
version: # String - Branch oder Commit ID version: # String - Branch oder Commit ID
pass: # String - Pfad des fastd secrets im Admin Pass
... ...
´´´ ```
- Dictionary `fastd_secrets` (Host-Variable)
´´´
fastd_secrets:
mzvpn: "{{ lookup('passwordstore', 'fastd/mzvpn/sparegate4 subkey=secret') }}"
wivpn: "{{ lookup('passwordstore', 'fastd/wivpn/sparegate4 subkey=secret') }}"
...
´´´
- Liste `legacy_gateways` - Liste `legacy_gateways`
## fastd Secrets ## fastd Secrets
Die privaten Schlüssel der fastd Instanzen sind sehr sensible Informationen, weshalb wir diese in ein nicht öffentliches passwordstore ausgelagert haben. Die privaten Schlüssel der fastd Instanzen sind sehr sensible Informationen, weshalb wir diese in ein nicht öffentliches passwordstore ausgelagert haben.
Bevor man ein Gateway aufsetzt, müssen die privaten Schlüssel für alle benötigten fastd Instanzen generiert und im passwordstore hinterlegt werden. Bevor man ein Gateway aufsetzt, müssen die privaten Schlüssel für alle benötigten fastd Instanzen generiert und im passwordstore hinterlegt werden.
Das Dictionary `fastd_secrets` folgt dem Aufbau:
```
fastd_secrets:
$Instanz-Name: "{{ lookup('passwordstore', '$Pfad-im-passwordstore subkey=secret') }}"
```
## Abhängigkeiten ## Abhängigkeiten

View file

@ -1,9 +1,4 @@
{% set local_interface = item.0.id + 'vpn' -%}
# #
# {{ ansible_managed }} # {{ ansible_managed }}
# #
{% for interface in fastd_secrets %} secret "{{ lookup('passwordstore', item.1.pass + '/' + inventory_hostname_short + ' subkey=secret') }}";
{% if local_interface == interface %}
secret "{{ fastd_secrets[interface] }}";
{% endif %}
{% endfor %}