[wireguard] Refactor role
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>certbot_on_virtu
parent
fa8c430a53
commit
70d335e1b8
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
glob_wireguard:
|
||||||
|
tunnels: {}
|
|
@ -1,3 +1,17 @@
|
||||||
---
|
---
|
||||||
interfaces:
|
interfaces:
|
||||||
adm: ens18
|
adm: ens18
|
||||||
|
|
||||||
|
loc_wireguard:
|
||||||
|
tunnels:
|
||||||
|
- name: "sputnik"
|
||||||
|
listen_port: 51820
|
||||||
|
private_key: "{{ vault.wireguard_boeing_private_key }}"
|
||||||
|
peers:
|
||||||
|
- public_key: "{{ vault.wireguard_sputnik_public_key }}"
|
||||||
|
allowed_ips:
|
||||||
|
- "{{ query('ldap', 'ip', 'sputnik', 'adm') | ipv4 | first }}/32"
|
||||||
|
- "{{ query('ldap', 'ip', 'sputnik', 'adm') | ipv6 | first }}/128"
|
||||||
|
endpoint: "{{ query('ldap', 'ip', 'sputnik', 'srv') | ipv4 | first }}:51820"
|
||||||
|
post_up: "sysctl -w net.ipv4.conf.ens18.proxy_arp=1; sysctl -w net.ipv4.conf.sputnik.proxy_arp=1; sysctl -w net.ipv6.conf.ens18.proxy_ndp=1; sysctl -w net.ipv6.conf.sputnik.proxy_ndp=1; ip neigh add proxy {{ query('ldap', 'ip', 'sputnik', 'adm') | ipv6 | first }} dev ens18"
|
||||||
|
post_down: "sysctl -w net.ipv4.conf.ens18.proxy_arp=0; sysctl -w net.ipv4.conf.sputnik.proxy_arp=0; sysctl -w net.ipv6.conf.ens18.proxy_ndp=0; sysctl -w net.ipv6.conf.sputnik.proxy_ndp=0; ip neigh delete proxy {{ query('ldap', 'ip', 'sputnik', 'adm') | ipv6 | first }} dev ens18"
|
||||||
|
|
|
@ -8,6 +8,22 @@ postfix:
|
||||||
dkim: true
|
dkim: true
|
||||||
titanic: false
|
titanic: false
|
||||||
|
|
||||||
|
loc_wireguard:
|
||||||
|
tunnels:
|
||||||
|
- name: "sputnik"
|
||||||
|
addresses:
|
||||||
|
- "{{ query('ldap', 'ip', 'sputnik', 'adm') | ipv4 | first }}/24"
|
||||||
|
- "{{ query('ldap', 'ip', 'sputnik', 'adm') | ipv6 | first }}/64"
|
||||||
|
listen_port: 51820
|
||||||
|
private_key: "{{ vault.wireguard_sputnik_private_key }}"
|
||||||
|
peers:
|
||||||
|
- public_key: "{{ vault.wireguard_boeing_public_key }}"
|
||||||
|
allowed_ips:
|
||||||
|
- "{{ query('ldap', 'network', 'adm') }}"
|
||||||
|
- "fd00:0:0:{{ query('ldap', 'vlanid', 'adm') }}::/64"
|
||||||
|
endpoint: "{{ query('ldap', 'ip', 'boeing', 'srv') | ipv4 | first }}:51820"
|
||||||
|
post_up: "/sbin/ip link set sputnik alias adm"
|
||||||
|
|
||||||
to_backup:
|
to_backup:
|
||||||
- {
|
- {
|
||||||
name: "var",
|
name: "var",
|
||||||
|
|
|
@ -17,3 +17,19 @@ loc_network_interfaces:
|
||||||
- name: infra
|
- name: infra
|
||||||
id: 11
|
id: 11
|
||||||
dns: "{{ query('ldap', 'ip', 'routeur-gulp', 'infra') | ipv4 | first }}"
|
dns: "{{ query('ldap', 'ip', 'routeur-gulp', 'infra') | ipv4 | first }}"
|
||||||
|
|
||||||
|
loc_wireguard:
|
||||||
|
tunnels:
|
||||||
|
- name: "gulp"
|
||||||
|
addresses:
|
||||||
|
- "{{ query('ldap', 'ip', 'terenez', 'adm') | ipv4 | first }}/24"
|
||||||
|
- "{{ query('ldap', 'ip', 'terenez', 'adm') | ipv6 | first }}/64"
|
||||||
|
listen_port: 51820
|
||||||
|
private_key: "{{ vault.wireguard_terenez_private_key }}"
|
||||||
|
peers:
|
||||||
|
- public_key: "{{ vault.wireguard_vol447_public_key }}"
|
||||||
|
allowed_ips:
|
||||||
|
- "{{ query('ldap', 'network', 'adm') }}"
|
||||||
|
- "fd00:0:0:{{ query('ldap', 'vlanid', 'adm') }}::/64"
|
||||||
|
endpoint: "{{ query('ldap', 'ip', 'vol447', 'srv') | ipv4 | first }}:51820"
|
||||||
|
post_up: "/sbin/ip link set gulp alias adm"
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
interfaces:
|
|
||||||
adm: ens18
|
|
||||||
srv: ens19
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
---
|
||||||
|
interfaces:
|
||||||
|
adm: ens18
|
||||||
|
srv: ens19
|
||||||
|
|
||||||
|
loc_wireguard:
|
||||||
|
tunnels:
|
||||||
|
- name: "gulp"
|
||||||
|
listen_port: 51820
|
||||||
|
private_key: "{{ vault.wireguard_vol447_private_key }}"
|
||||||
|
peers:
|
||||||
|
- public_key: "{{ vault.wireguard_terenez_public_key }}"
|
||||||
|
allowed_ips:
|
||||||
|
- "{{ query('ldap', 'ip', 'terenez', 'adm') | ipv4 | first }}/32"
|
||||||
|
- "{{ query('ldap', 'ip', 'terenez', 'adm') | ipv6 | first }}/128"
|
||||||
|
endpoint: "{{ query('ldap', 'ip', 'terenez', 'cachan-srv') | ipv4 | first }}:51820"
|
||||||
|
post_up: "sysctl -w net.ipv4.conf.ens18.proxy_arp=1; sysctl -w net.ipv4.conf.gulp.proxy_arp=1; sysctl -w net.ipv6.conf.ens18.proxy_ndp=1; sysctl -w net.ipv6.conf.gulp.proxy_ndp=1; ip neigh add proxy {{ query('ldap', 'ip', 'terenez', 'adm') | ipv6 | first }} dev ens18"
|
||||||
|
post_down: "sysctl -w net.ipv4.conf.ens18.proxy_arp=0; sysctl -w net.ipv4.conf.gulp.proxy_arp=0; sysctl -w net.ipv6.conf.ens18.proxy_ndp=0; sysctl -w net.ipv6.conf.gulp.proxy_ndp=0; ip neigh delete proxy {{ query('ldap', 'ip', 'terenez', 'adm') | ipv6 | first }} dev ens18"
|
6
hosts
6
hosts
|
@ -253,6 +253,12 @@ ptf.adm.crans.org
|
||||||
kiwi.adm.crans.org
|
kiwi.adm.crans.org
|
||||||
sputnik.adm.crans.org
|
sputnik.adm.crans.org
|
||||||
|
|
||||||
|
[wireguard]
|
||||||
|
boeing.adm.crans.org
|
||||||
|
sputnik.adm.crans.org
|
||||||
|
terenez.cachan-adm.crans.org
|
||||||
|
vol447.adm.crans.org
|
||||||
|
|
||||||
[cachan:children]
|
[cachan:children]
|
||||||
cachan_physical
|
cachan_physical
|
||||||
cachan_vm
|
cachan_vm
|
||||||
|
|
|
@ -1,24 +1,8 @@
|
||||||
#!/usr/bin/env ansible-playbook
|
#!/usr/bin/env ansible-playbook
|
||||||
---
|
---
|
||||||
# Deploy tunnel
|
# Deploy tunnel
|
||||||
- hosts: sputnik.adm.crans.org
|
- hosts: wireguard
|
||||||
vars:
|
vars:
|
||||||
debian_mirror: http://mirror.crans.org/debian
|
wireguard: "{{ glob_wireguard | default({}) | combine(loc_wireguard | default({})) }}"
|
||||||
wireguard:
|
|
||||||
sputnik: true
|
|
||||||
private_key: "{{ vault.wireguard_sputnik_private_key }}"
|
|
||||||
peer_public_key: "{{ vault.wireguard_boeing_public_key }}"
|
|
||||||
roles:
|
|
||||||
- wireguard
|
|
||||||
|
|
||||||
- hosts: boeing.adm.crans.org
|
|
||||||
vars:
|
|
||||||
# Debian mirror on adm
|
|
||||||
debian_mirror: http://mirror.adm.crans.org/debian
|
|
||||||
wireguard:
|
|
||||||
sputnik: false
|
|
||||||
if: ens18
|
|
||||||
private_key: "{{ vault.wireguard_boeing_private_key }}"
|
|
||||||
peer_public_key: "{{ vault.wireguard_sputnik_public_key }}"
|
|
||||||
roles:
|
roles:
|
||||||
- wireguard
|
- wireguard
|
||||||
|
|
|
@ -25,14 +25,16 @@
|
||||||
|
|
||||||
- name: Deploy wireguard configuration
|
- name: Deploy wireguard configuration
|
||||||
template:
|
template:
|
||||||
src: wireguard/sputnik.conf.j2
|
src: wireguard/tunnel.conf.j2
|
||||||
dest: /etc/wireguard/sputnik.conf
|
dest: "/etc/wireguard/{{ item.name }}.conf"
|
||||||
mode: 0700
|
mode: 0700
|
||||||
owner: root
|
owner: root
|
||||||
group: root
|
group: root
|
||||||
|
loop: "{{ wireguard.tunnels }}"
|
||||||
|
|
||||||
- name: Enable and start wireguard service
|
- name: Enable and start wireguard service
|
||||||
systemd:
|
systemd:
|
||||||
name: wg-quick@sputnik
|
name: "wg-quick@{{ item.name }}"
|
||||||
state: started
|
state: started
|
||||||
enabled: true
|
enabled: true
|
||||||
|
loop: "{{ wireguard.tunnels }}"
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
{{ ansible_header | comment }}
|
|
||||||
|
|
||||||
Package: *
|
|
||||||
Pin: release a=unstable
|
|
||||||
Pin-Priority: 90
|
|
|
@ -1,27 +0,0 @@
|
||||||
{{ ansible_header | comment }}
|
|
||||||
{% if wireguard.sputnik %}
|
|
||||||
[Interface]
|
|
||||||
Address = 172.16.10.32/24, fd00::10:0:ff:fe00:3210/64
|
|
||||||
ListenPort = 51820
|
|
||||||
PrivateKey = {{ wireguard.private_key }}
|
|
||||||
|
|
||||||
PostUp = /sbin/ip link set sputnik alias adm
|
|
||||||
|
|
||||||
[Peer]
|
|
||||||
PublicKey = {{ wireguard.peer_public_key }}
|
|
||||||
AllowedIPs = {{ query('ldap', 'network', 'adm') }}, fd00:0:0:{{ query('ldap', 'vlanid', 'adm') }}::/64
|
|
||||||
Endpoint = {{ (query('ldap', 'ip', 'boeing', 'srv') | ipv4)[0] }}:51820
|
|
||||||
{% else %}
|
|
||||||
[Interface]
|
|
||||||
ListenPort = 51820
|
|
||||||
PrivateKey = {{ wireguard.private_key }}
|
|
||||||
|
|
||||||
PostUp = sysctl -w net.ipv4.conf.{{ wireguard.if }}.proxy_arp=1; sysctl -w net.ipv4.conf.sputnik.proxy_arp=1; sysctl -w net.ipv6.conf.{{ wireguard.if }}.proxy_ndp=1; sysctl -w net.ipv6.conf.sputnik.proxy_ndp=1; ip neigh add proxy {{ (query('ldap', 'ip', 'sputnik', 'adm') | ipv6)[0] }} dev {{ wireguard.if }}
|
|
||||||
PostDown = sysctl -w net.ipv4.conf.{{ wireguard.if }}.proxy_arp=0; sysctl -w net.ipv4.conf.sputnik.proxy_arp=0; sysctl -w net.ipv6.conf.{{ wireguard.if }}.proxy_ndp=0; sysctl -w net.ipv6.conf.sputnik.proxy_ndp=0; ip neigh delete proxy {{ (query('ldap', 'ip', 'sputnik', 'adm') | ipv6)[0] }} dev {{ wireguard.if }}
|
|
||||||
|
|
||||||
[Peer]
|
|
||||||
PublicKey = {{ wireguard.peer_public_key }}
|
|
||||||
AllowedIPs = {{ (query('ldap', 'ip', 'sputnik', 'adm') | ipv4)[0] }}/32, {{ (query('ldap', 'ip', 'sputnik', 'adm') | ipv6)[0] }}/128
|
|
||||||
Endpoint = {{ (query('ldap', 'ip', 'sputnik', 'srv') | ipv4)[0] }}:51820
|
|
||||||
{% endif %}
|
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
{{ ansible_header | comment }}
|
||||||
|
|
||||||
|
[Interface]
|
||||||
|
{% if item.addresses is defined %}
|
||||||
|
Address = {{ item.addresses | join(", ") }}
|
||||||
|
{% endif %}
|
||||||
|
{% if item.listen_port is defined %}
|
||||||
|
ListenPort = {{ item.listen_port }}
|
||||||
|
{% endif %}
|
||||||
|
PrivateKey = {{ item.private_key }}
|
||||||
|
|
||||||
|
{% if item.post_up is defined %}
|
||||||
|
PostUp = {{ item.post_up }}
|
||||||
|
{% endif %}
|
||||||
|
{% if item.post_down is defined %}
|
||||||
|
PostDown = {{ item.post_down }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% for peer in item.peers %}
|
||||||
|
[Peer]
|
||||||
|
PublicKey = {{ peer.public_key }}
|
||||||
|
AllowedIPs = {{ peer.allowed_ips | join(", ") }}
|
||||||
|
Endpoint = {{ peer.endpoint }}
|
||||||
|
|
||||||
|
{% endfor -%}
|
Loading…
Reference in New Issue