Compare commits
34 Commits
next_migra
...
main
| Author | SHA1 | Date |
|---|---|---|
|
|
9aa2fe8bca | |
|
|
9e275303c9 | |
|
|
b0d53248ec | |
|
|
eb84432a4a | |
|
|
1d970e843e | |
|
|
d60fafdf7e | |
|
|
3550797a5f | |
|
|
2b18b0f316 | |
|
|
53a6db2fad | |
|
|
a09e56f4e3 | |
|
|
0d7b47021e | |
|
|
c3adcc1cf1 | |
|
|
4835be1e30 | |
|
|
bba9096ac4 | |
|
|
a50ab533bc | |
|
|
cf83f7bd2c | |
|
|
e29626c550 | |
|
|
af433bf4f9 | |
|
|
1ba1f48a67 | |
|
|
152f556d55 | |
|
|
e864964b95 | |
|
|
976b96b3bb | |
|
|
ce83465f7b | |
|
|
5472f1ff2a | |
|
|
7c837e3a74 | |
|
|
2d8495fb53 | |
|
|
bb6c96ebf0 | |
|
|
eec3cc677f | |
|
|
e0b7533bec | |
|
|
e3c1b4082e | |
|
|
5bef64c3c0 | |
|
|
525fc50429 | |
|
|
d5698f4be6 | |
|
|
256fdc5b58 |
|
|
@ -1 +1,2 @@
|
|||
.DS_Store
|
||||
ansible/playbooks/wg_clients
|
||||
|
|
@ -2,14 +2,28 @@
|
|||
wg_interface: wg0
|
||||
wg_port: 51820
|
||||
#wg_server_public_interface: eth0
|
||||
wg_server_address: 192.168.99.1/32
|
||||
wg_server_address: 192.168.98.1/32
|
||||
#wg_server_private_key: "{{ wg_server_private_key }}"
|
||||
|
||||
|
||||
wg_peers:
|
||||
- name: fabio_test
|
||||
publicKey: "byR/8T9AZK2t1cxDCLVzdLXsxcUPRXA06CnfI8gwQyY="
|
||||
allowedIP: "192.168.99.4/32"
|
||||
- name: fabio
|
||||
ip: "192.168.98.11/32"
|
||||
allowedIPs :
|
||||
- "192.168.98.0/24"
|
||||
- "10.22.0.0/16"
|
||||
- name: lucio
|
||||
publicKey: "IifwTYaBMoL3IhAHHplyuVMCir7PHNT57cP57RvEIwg="
|
||||
allowedIP: "192.168.99.3/32"
|
||||
ip: "192.168.98.12/32"
|
||||
allowedIPs :
|
||||
- "192.168.98.0/24"
|
||||
- "10.22.0.0/16"
|
||||
- name: roberto
|
||||
ip: "192.168.98.13/32"
|
||||
allowedIPs :
|
||||
- "192.168.98.0/24"
|
||||
- "10.22.0.0/16"
|
||||
- name: giorgio
|
||||
ip: "192.168.98.14/32"
|
||||
allowedIPs :
|
||||
- "192.168.98.0/24"
|
||||
- "10.22.0.0/16"
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
---
|
||||
wg_interface: wg0
|
||||
wg_port: 51820
|
||||
#wg_server_public_interface: eth0
|
||||
wg_server_address: 192.168.99.1/32
|
||||
#wg_server_private_key: "{{ wg_server_private_key }}"
|
||||
|
||||
|
||||
wg_peers:
|
||||
- name: fabio_test
|
||||
publicKey: "9a3tgXpF5CAOffbHZdW1QBEJgSLFnBDVbD1JaMPgzkM="
|
||||
ip: "192.168.99.4/32"
|
||||
allowedIPs :
|
||||
- "192.168.99.0/24"
|
||||
- "10.22.0.0/16"
|
||||
- name: missing_key_test
|
||||
ip: "192.168.99.5/32"
|
||||
allowedIPs :
|
||||
- "192.168.99.0/24"
|
||||
- "10.22.0.0/16"
|
||||
- name: second_missing_key_test
|
||||
ip: "192.168.99.6/32"
|
||||
allowedIPs :
|
||||
- "192.168.99.0/24"
|
||||
- "10.22.0.0/16"
|
||||
|
|
@ -1,6 +1,9 @@
|
|||
---
|
||||
vlab-1:
|
||||
children:
|
||||
yuno:
|
||||
hosts:
|
||||
yuno.sse.cloud.isti.cnr.it:
|
||||
wireguard_server:
|
||||
hosts:
|
||||
vpn-1.sse.cloud.isti.cnr.it:
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
#SPDX-License-Identifier: MIT-0
|
||||
---
|
||||
# defaults file for docker
|
||||
docker_version: "*.*.*"
|
||||
docker_sudo_users: []
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,57 @@
|
|||
---
|
||||
- name: Create local configs directory
|
||||
become: false
|
||||
local_action : ansible.builtin.file
|
||||
args:
|
||||
path: "{{ playbook_dir }}/wg_clients/{{ inventory_hostname }}"
|
||||
state: directory
|
||||
mode: '0700'
|
||||
|
||||
- name: Init generated Keys dict
|
||||
set_fact:
|
||||
generated_keys: []
|
||||
|
||||
- name : Gather needed key generation
|
||||
set_fact:
|
||||
generated_keys: "{{ generated_keys + [{'name': item.name}] }}"
|
||||
when : item.publicKey is not defined
|
||||
loop: "{{ wg_peers }}"
|
||||
|
||||
- name : Generate private keys
|
||||
command : wg genkey
|
||||
register: privateKeyObjects
|
||||
loop : "{{ generated_keys }}"
|
||||
|
||||
|
||||
- name : Generate public keys
|
||||
shell : echo "{{privateKeyObjects.results[ansible_loop.index0].stdout}}" | wg pubkey
|
||||
register: publicKeyObjects
|
||||
loop : "{{ generated_keys }}"
|
||||
loop_control:
|
||||
extended: true
|
||||
|
||||
- name: Registering generated keys
|
||||
set_fact:
|
||||
generated_keys: "{{ generated_keys | community.general.lists_mergeby ([{'privateKey' : privateKeyObjects.results[ansible_loop.index0].stdout, 'publicKey' : publicKeyObjects.results[ansible_loop.index0].stdout, 'name':item.name }],'name') }}"
|
||||
loop: "{{ generated_keys }}"
|
||||
loop_control:
|
||||
extended: true
|
||||
|
||||
- name: Updating client configs info
|
||||
set_fact:
|
||||
wg_peers: "{{ wg_peers | community.general.lists_mergeby(generated_keys,'name')}}"
|
||||
|
||||
|
||||
- name : Generate client config file
|
||||
become: false
|
||||
local_action : ansible.builtin.template
|
||||
args:
|
||||
src: templates/wireguard_client.jinja
|
||||
dest: "{{ playbook_dir }}/wg_clients/{{ inventory_hostname }}/{{ item.name }}.conf"
|
||||
vars:
|
||||
wg_client_public_key: "{{ item.publicKey }}"
|
||||
wg_client_private_key: "{{ item.privateKey | default('')}}"
|
||||
wg_client_address: "{{ item.ip }}"
|
||||
allowed_ips : "{{ item.allowedIPs }}"
|
||||
wg_server : "{{ inventory_hostname }}"
|
||||
loop: "{{ wg_peers }}"
|
||||
|
|
@ -6,39 +6,39 @@
|
|||
state: directory
|
||||
mode: '0700'
|
||||
|
||||
- name: Check if private key already exists
|
||||
- name: Check if server private key already exists
|
||||
ansible.builtin.stat:
|
||||
path: /etc/wireguard/privatekey
|
||||
register: privkey_file
|
||||
register: privatekey_file
|
||||
|
||||
- name: Generate private key
|
||||
- name: Generate server private key
|
||||
ansible.builtin.command: wg genkey
|
||||
register: wg_private_key
|
||||
when: not privkey_file.stat.exists
|
||||
when: not privatekey_file.stat.exists
|
||||
changed_when: true
|
||||
|
||||
- name: Save private key
|
||||
- name: Save server private key
|
||||
ansible.builtin.copy:
|
||||
content: "{{ wg_private_key.stdout }}"
|
||||
dest: /etc/wireguard/privatekey
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0600'
|
||||
when: not privkey_file.stat.exists
|
||||
when: not privatekey_file.stat.exists
|
||||
|
||||
- name: Read private key
|
||||
- name: Read server private key
|
||||
ansible.builtin.slurp:
|
||||
src: /etc/wireguard/privatekey
|
||||
register: private_key_content
|
||||
|
||||
- name: Generate public key from private key
|
||||
- name: Generate server public key from private key
|
||||
ansible.builtin.shell: echo "{{ private_key_content.content | b64decode | trim }}" | wg pubkey
|
||||
register: wg_public_key
|
||||
register: wg_server_public_key
|
||||
changed_when: false
|
||||
|
||||
- name: Save public key
|
||||
- name: Save server public key
|
||||
ansible.builtin.copy:
|
||||
content: "{{ wg_public_key.stdout }}"
|
||||
content: "{{ wg_server_public_key.stdout }}"
|
||||
dest: /etc/wireguard/publickey
|
||||
owner: root
|
||||
group: root
|
||||
|
|
@ -46,4 +46,4 @@
|
|||
|
||||
- name: Display public key for reference
|
||||
ansible.builtin.debug:
|
||||
msg: "Public key for {{ inventory_hostname }}: {{ wg_public_key.stdout }}"
|
||||
msg: "Public key for {{ inventory_hostname }}: {{ wg_server_public_key.stdout }}"
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
---
|
||||
- include_tasks: install_wireguard.yaml
|
||||
- include_tasks: generate_keys.yaml
|
||||
- include_tasks: generate_server_keys.yaml
|
||||
- include_tasks: generate_client_configs.yaml
|
||||
- include_tasks: configure_server.yaml
|
||||
|
|
|
|||
|
|
@ -0,0 +1,18 @@
|
|||
[Interface]
|
||||
{% if wg_client_private_key is defined and wg_client_private_key != None and wg_client_private_key != ''%}
|
||||
PrivateKey = {{wg_client_private_key}}
|
||||
{% else%}
|
||||
|
||||
# Public and private keys were pre generated by client
|
||||
# Insert private key below and uncomment in order to use the present configuration
|
||||
# PrivateKey =
|
||||
|
||||
{% endif %}
|
||||
|
||||
Address = {{wg_client_address}}
|
||||
|
||||
[Peer]
|
||||
PublicKey = {{wg_server_public_key.stdout}}
|
||||
AllowedIPs = {{ allowed_ips | join(', ') }}
|
||||
Endpoint = {{ wg_server }}:{{ wg_port }}
|
||||
PersistentKeepalive = 25
|
||||
|
|
@ -19,7 +19,7 @@ PostDown = iptables -t nat -D POSTROUTING ! -o {{wg_interface}} -m mark --mark 0
|
|||
# {{ peer.name }}
|
||||
[Peer]
|
||||
PublicKey = {{ peer.publicKey }}
|
||||
AllowedIPs = {{ peer.allowedIP }}
|
||||
AllowedIPs = {{ peer.ip }}
|
||||
{% if peer.persistent_keepalive is defined %}
|
||||
PersistentKeepalive = {{ peer.persistent_keepalive }}
|
||||
{% endif %}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,10 @@
|
|||
# requirements.yml
|
||||
---
|
||||
roles:
|
||||
- name: githubixx.ansible_role_wireguard
|
||||
src: https://github.com/githubixx/ansible-role-wireguard.git
|
||||
version: 19.0.0
|
||||
|
||||
# - name: bodsch.dns.bind
|
||||
# version:
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue