Compare commits
4 Commits
main
...
wg_auto_cl
| Author | SHA1 | Date |
|---|---|---|
|
|
a6d9794abb | |
|
|
8a0ec15e56 | |
|
|
e9b251a18f | |
|
|
894cb17f7e |
|
|
@ -18,7 +18,8 @@ wg_peers:
|
||||||
allowedIPs :
|
allowedIPs :
|
||||||
- "192.168.99.0/24"
|
- "192.168.99.0/24"
|
||||||
- "10.22.0.0/16"
|
- "10.22.0.0/16"
|
||||||
- name: second_missing_key_test
|
- name: forced_missing_key_test
|
||||||
|
forceRegeneration: True
|
||||||
ip: "192.168.99.6/32"
|
ip: "192.168.99.6/32"
|
||||||
allowedIPs :
|
allowedIPs :
|
||||||
- "192.168.99.0/24"
|
- "192.168.99.0/24"
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
---
|
||||||
|
- name: Check if config already exists
|
||||||
|
stat:
|
||||||
|
path: "/etc/wireguard/{{ wg_interface }}.conf"
|
||||||
|
register: interface_configuration
|
||||||
|
|
||||||
|
- name: Parse configuration
|
||||||
|
ansible.utils.cli_parse:
|
||||||
|
command: "cat /etc/wireguard/{{ wg_interface }}.conf "
|
||||||
|
parser:
|
||||||
|
name: ansible.netcommon.native
|
||||||
|
template_path: templates/wg_config_template.yaml
|
||||||
|
set_fact: existing_wg_config
|
||||||
|
when: interface_configuration.stat.exists
|
||||||
|
|
||||||
|
- name: Updating client configs info
|
||||||
|
set_fact:
|
||||||
|
wg_peers: "{{ wg_peers | community.general.lists_mergeby([{'name':item.key,'publicKey':item.value.publicKey}] ,'name')}}"
|
||||||
|
when: item.key in (wg_peers | map(attribute='name'))
|
||||||
|
loop: "{{ existing_wg_config | ansible.builtin.dict2items }}"
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
- name : Gather needed key generation
|
- name : Gather needed key generation
|
||||||
set_fact:
|
set_fact:
|
||||||
generated_keys: "{{ generated_keys + [{'name': item.name}] }}"
|
generated_keys: "{{ generated_keys + [{'name': item.name}] }}"
|
||||||
when : item.publicKey is not defined
|
when : item.publicKey is not defined or (item.forceRegeneration is defined and item.forceRegeneration)
|
||||||
loop: "{{ wg_peers }}"
|
loop: "{{ wg_peers }}"
|
||||||
|
|
||||||
- name : Generate private keys
|
- name : Generate private keys
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
---
|
---
|
||||||
- include_tasks: install_wireguard.yaml
|
- include_tasks: install_wireguard.yaml
|
||||||
|
- include_tasks: gather_current_config.yaml
|
||||||
- include_tasks: generate_server_keys.yaml
|
- include_tasks: generate_server_keys.yaml
|
||||||
- include_tasks: generate_client_configs.yaml
|
- include_tasks: generate_client_configs.yaml
|
||||||
- include_tasks: configure_server.yaml
|
- include_tasks: configure_server.yaml
|
||||||
|
|
|
||||||
|
|
@ -1,62 +0,0 @@
|
||||||
---
|
|
||||||
- name: Install Wireguard Server
|
|
||||||
apt:
|
|
||||||
pkg:
|
|
||||||
- wireguard
|
|
||||||
state: latest
|
|
||||||
update_cache: true
|
|
||||||
|
|
||||||
|
|
||||||
- name: Create directory for wg keys
|
|
||||||
ansible.builtin.file:
|
|
||||||
path: /etc/wireguard/keys
|
|
||||||
state: directory
|
|
||||||
mode: '0755'
|
|
||||||
|
|
||||||
- name: Creating server privatekey and publickey
|
|
||||||
shell: wg genkey | tee privatekey | wg pubkey > publickey
|
|
||||||
args:
|
|
||||||
chdir: /etc/wireguard/keys
|
|
||||||
|
|
||||||
- name: Get Private Key [privatekey => var_privatekey]
|
|
||||||
shell: cat privatekey
|
|
||||||
register: var_privatekey
|
|
||||||
args:
|
|
||||||
chdir: /etc/wireguard/keys
|
|
||||||
|
|
||||||
|
|
||||||
#- name: Add WireGuard interface
|
|
||||||
# command: ip link add dev wg0 type wireguard
|
|
||||||
|
|
||||||
|
|
||||||
- name: Updating configuration
|
|
||||||
template:
|
|
||||||
src: wireguard_server.jinja
|
|
||||||
dest: /etc/wireguard/wg0.conf
|
|
||||||
|
|
||||||
#- name: Activating link
|
|
||||||
# command: ip link set up dev wg0
|
|
||||||
|
|
||||||
|
|
||||||
- name: Starting wg service
|
|
||||||
systemd:
|
|
||||||
state: started
|
|
||||||
name: wg-quick@wg0
|
|
||||||
enabled: yes
|
|
||||||
|
|
||||||
|
|
||||||
- name: Getting public key
|
|
||||||
shell: cat publickey
|
|
||||||
register: var_publickey
|
|
||||||
args:
|
|
||||||
chdir: /etc/wireguard/keys
|
|
||||||
|
|
||||||
|
|
||||||
- name: Check server public IP
|
|
||||||
shell: curl https://ipinfo.io/ip
|
|
||||||
register: var_server_ip
|
|
||||||
|
|
||||||
|
|
||||||
- name: Printing public key
|
|
||||||
debug:
|
|
||||||
msg: "Server {{ ansible_hostname }} reachable @{{var_server_ip}}. Public key is {{ var_publickey }}"
|
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
---
|
||||||
|
- example: "# Peer ID : fabio_test"
|
||||||
|
getval: '# Peer ID : (?P<peer_id>\S+)'
|
||||||
|
result:
|
||||||
|
"{{ peer_id }}":
|
||||||
|
name: "{{ peer_id }}"
|
||||||
|
shared: true
|
||||||
|
|
||||||
|
- example: "PublicKey = 9a3tgXpF5CAOffbHZdW1QBEJgSLFnBDVbD1JaMPgzkM="
|
||||||
|
getval: 'PublicKey = (?P<publicKey>\S+)'
|
||||||
|
result:
|
||||||
|
"{{ peer_id }}":
|
||||||
|
publicKey: "{{ publicKey }}"
|
||||||
|
|
@ -16,7 +16,7 @@ PostDown = iptables -t nat -D POSTROUTING ! -o {{wg_interface}} -m mark --mark 0
|
||||||
|
|
||||||
|
|
||||||
{% for peer in wg_peers %}
|
{% for peer in wg_peers %}
|
||||||
# {{ peer.name }}
|
# Peer ID : {{ peer.name }}
|
||||||
[Peer]
|
[Peer]
|
||||||
PublicKey = {{ peer.publicKey }}
|
PublicKey = {{ peer.publicKey }}
|
||||||
AllowedIPs = {{ peer.ip }}
|
AllowedIPs = {{ peer.ip }}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue