main.yml 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. ---
  2. - name: Install dependencies
  3. become: true
  4. apt:
  5. pkg:
  6. - wireguard
  7. - wireguard-tools
  8. - name: Ensure permission on wireguard directory
  9. become: true
  10. file:
  11. path: /etc/wireguard
  12. state: directory
  13. mode: 0700
  14. - name: Install wireguard configuration
  15. become: true
  16. template:
  17. src: templates/config.j2
  18. dest: "/etc/wireguard/{{ item.name }}.conf"
  19. mode: 0644
  20. when: item.type == "wg"
  21. loop: "{{ peers | flatten(levels=1) }}"
  22. - name: Enable wireguard interfaces for autostart
  23. become: true
  24. systemd:
  25. name: "wg-quick@{{ item.name }}"
  26. masked: false
  27. enabled: true
  28. state: restarted
  29. when: item.type == "wg"
  30. loop: "{{ peers | flatten(levels=1) }}"
  31. - name: Setup cronjob for dynamic peers
  32. become: true
  33. cron:
  34. name: "Reload endpoint for wireguard peer {{ item.name }}"
  35. minute: "*/30"
  36. job: "wg set {{ item.name }} peer \"{{ item.wg.peer.pubkey }}\" endpoint \"{{ item.wg.peer.endpoint }}\""
  37. when: item.type == "wg" and item.wg.peer.dyn is defined
  38. loop: "{{ peers | flatten(levels=1) }}"