main.yml 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. ---
  2. - name: Enable EPEL repo
  3. dnf:
  4. name: epel-release
  5. state: present
  6. when:
  7. - ansible_distribution == "CentOS"
  8. - name: Install openvpn
  9. dnf:
  10. name: openvpn
  11. state: present
  12. - name: Create openvpn scripts directory
  13. file:
  14. path: /etc/openvpn/scripts
  15. owner: root
  16. group: openvpn
  17. mode: '0750'
  18. state: directory
  19. - name: Install update-resolv-conf script
  20. template:
  21. src: update-resolv-conf.j2
  22. dest: /etc/openvpn/scripts/update-resolv-conf
  23. owner: root
  24. group: openvpn
  25. mode: '0750'
  26. - name: Install ProtonVPN Config files
  27. template:
  28. src: "{{ file.src }}"
  29. dest: /etc/openvpn/client/{{ file.dest }}
  30. owner: root
  31. group: openvpn
  32. mode: "{{ file.mode }}"
  33. loop_control:
  34. label: "{{ file.dest }}"
  35. loop_var: file
  36. loop:
  37. - { src: 'proton.conf.j2', dest: 'proton.conf', mode: '0640' }
  38. - { src: 'proton-credentials.j2', dest: 'proton-credentials', mode: '0600' }
  39. register: configs
  40. - name: Add service to auto configure Unbound on VPN restarts
  41. template:
  42. src: auto-configure-unbound.service.j2
  43. dest: /etc/systemd/system/auto-configure-unbound.service
  44. owner: root
  45. group: root
  46. mode: '0640'
  47. register: auto_configure_unbound_service_file
  48. when:
  49. - ansible_hostname == 'gateway'
  50. - name: Ensure openvpn-client service.d folder exists
  51. file:
  52. path: /etc/systemd/system/openvpn-client@.service.d/
  53. state: directory
  54. owner: root
  55. group: root
  56. mode: '0750'
  57. when:
  58. - ansible_hostname == 'gateway'
  59. - name: Add dependencies to openvpn service to fire off auto-configure-unbound.service
  60. copy:
  61. src: auto-configure-unbound.conf
  62. dest: /etc/systemd/system/openvpn-client@.service.d/auto-configure-unbound.conf
  63. owner: root
  64. group: root
  65. mode: '0640'
  66. register: openvpn_auto_unbound_conf
  67. when:
  68. - ansible_hostname == 'gateway'
  69. - name: Add IP masquerading to drop zone
  70. firewalld:
  71. zone: drop
  72. masquerade: 'yes' # requires quotes to keep from converting to type bool
  73. permanent: yes
  74. immediate: yes
  75. state: enabled
  76. when:
  77. - ansible_hostname == 'gateway'
  78. - name: Add tun0 interface to drop zone
  79. firewalld:
  80. zone: drop
  81. interface: tun0
  82. permanent: yes
  83. immediate: yes
  84. state: enabled
  85. - name: Tweak kernel parameters
  86. sysctl:
  87. name: "{{ item }}"
  88. value: '1'
  89. state: present
  90. reload: yes
  91. loop:
  92. - net.ipv6.conf.all.disable_ipv6
  93. - net.ipv6.conf.default.disable_ipv6
  94. - net.ipv4.ip_forward
  95. - name: Restart/enable openvpn service
  96. systemd:
  97. name: openvpn-client@proton
  98. daemon_reload: yes
  99. state: restarted
  100. enabled: yes
  101. when: configs.changed or auto_configure_unbound_service_file.changed or openvpn_auto_unbound_conf.changed