create wireguard playbook
This commit is contained in:
107
ansible/playbooks/wireguard.yml
Normal file
107
ansible/playbooks/wireguard.yml
Normal file
@@ -0,0 +1,107 @@
|
||||
---
|
||||
- name: Install Wireguard on Server
|
||||
hosts: nimbus
|
||||
become: true
|
||||
|
||||
tasks:
|
||||
- name: Install wireguard tools and dig
|
||||
ansible.builtin.package:
|
||||
name:
|
||||
- wireguard-tools
|
||||
- bind
|
||||
|
||||
- name: Create private key
|
||||
ansible.builtin.shell:
|
||||
chdir: /etc/wireguard/
|
||||
creates: /etc/wireguard/server_public_key
|
||||
cmd: "wg genkey | tee server_private_key | wg pubkey > server_public_key"
|
||||
|
||||
- name: Remember the public key
|
||||
ansible.builtin.command: cat /etc/wireguard/server_public_key
|
||||
register: wireguard_public_key
|
||||
|
||||
- name: Get server public IP
|
||||
ansible.builtin.command: dig +short myip.opendns.com @resolver1.opendns.com
|
||||
register: wireguard_public_ip
|
||||
|
||||
- name: Allow ipv4 forwarding
|
||||
ansible.builtin.lineinfile:
|
||||
path: /etc/sysctl.d/wg.conf
|
||||
line: net.ipv4.ip_forward=1
|
||||
create: yes
|
||||
|
||||
- name: Start the wireguard service
|
||||
ansible.builtin.service:
|
||||
name: wg-quick@wg0
|
||||
enabled: yes
|
||||
|
||||
- name: Install Wireguard on Host
|
||||
hosts: localhost
|
||||
become: true
|
||||
|
||||
tasks:
|
||||
- name: Install wireguard tools
|
||||
ansible.builtin.package:
|
||||
name:
|
||||
- wireguard-tools
|
||||
|
||||
- name: Create private key
|
||||
ansible.builtin.shell:
|
||||
chdir: /etc/wireguard/
|
||||
creates: /etc/wireguard/dmz_public_key
|
||||
cmd: "wg genkey | tee dmz_private_key | wg pubkey > dmz_public_key"
|
||||
|
||||
- name: Remember the public key
|
||||
ansible.builtin.command: cat /etc/wireguard/dmz_public_key
|
||||
register: client_public_key
|
||||
|
||||
- name: Generate Server Config
|
||||
hosts: nimbus
|
||||
become: true
|
||||
|
||||
tasks:
|
||||
|
||||
- name: Create wg0 configuration
|
||||
ansible.builtin.shell:
|
||||
chdir: /etc/wireguard/
|
||||
creates: /etc/wireguard/wg0.conf
|
||||
cmd: |
|
||||
echo "
|
||||
[Interface]
|
||||
Address = 10.0.0.1/24
|
||||
SaveConfig = true
|
||||
PrivateKey = $(cat server_private_key)
|
||||
ListenPort = 51900
|
||||
|
||||
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
|
||||
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
|
||||
|
||||
[Peer]
|
||||
PublicKey = {{ hostvars['localhost']['client_public_key']['stdout'] }}
|
||||
AllowedIPs = 10.0.0.2/32
|
||||
" > /etc/wireguard/wg0.conf
|
||||
|
||||
|
||||
- name: Generate Client Config
|
||||
hosts: localhost
|
||||
become: true
|
||||
|
||||
tasks:
|
||||
|
||||
- name: Create wg0 client configuration
|
||||
ansible.builtin.shell:
|
||||
chdir: /etc/wireguard/
|
||||
creates: /etc/wireguard/wg0-client.conf
|
||||
cmd: |
|
||||
echo "
|
||||
[Interface]
|
||||
Address = 10.0.0.2/32
|
||||
PrivateKey = $(cat dmz_private_key)
|
||||
DNS = 9.9.9.9
|
||||
|
||||
[Peer]
|
||||
PublicKey = {{ hostvars['nimbus']['wireguard_public_key']['stdout'] }}
|
||||
Endpoint = space.xecut.me:51900
|
||||
AllowedIPs = 10.0.0.1/32
|
||||
" > /etc/wireguard/wg0-client.conf
|
||||
|
||||
Reference in New Issue
Block a user