main.yml 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. ---
  2. - name: Install dhcp & dns packages
  3. dnf:
  4. name:
  5. - dhcp-server
  6. - unbound
  7. update_cache: no
  8. state: present
  9. - name: Create custom service folders
  10. file:
  11. path: /etc/systemd/system/{{ item }}.service.d
  12. state: directory
  13. owner: root
  14. group: root
  15. mode: '0755'
  16. loop:
  17. - dhcpd
  18. - unbound
  19. - name: Make services autorestart themselves on failure
  20. template:
  21. src: "custom-service-autorestart.j2"
  22. dest: /etc/systemd/system/{{ item }}.service.d/autorestart.conf
  23. owner: root
  24. group: root
  25. mode: '0644'
  26. loop:
  27. - dhcpd
  28. - unbound
  29. notify:
  30. - Restart {{ item }}
  31. - Reload systemd services
  32. - name: Enable dhcpd and unbound services
  33. systemd:
  34. name: "{{ item }}"
  35. enabled: yes
  36. loop:
  37. - dhcpd
  38. - unbound
  39. - name: Set home as default zone
  40. shell:
  41. cmd: firewall-cmd --set-default-zone=home
  42. register: setdefaultzone
  43. changed_when: "'Warning: ZONE_ALREADY_SET' not in setdefaultzone.stderr"
  44. failed_when: "'success' not in setdefaultzone.stdout"
  45. - name: Open ports
  46. firewalld:
  47. service: "{{ item }}"
  48. zone: home
  49. permanent: yes
  50. state: enabled
  51. immediate: yes
  52. loop:
  53. - dhcp
  54. - dns
  55. - name: Copy dhcpd.conf
  56. template:
  57. src: dhcpd/dhcpd.conf.j2
  58. dest: /etc/dhcp/dhcpd.conf
  59. owner: root
  60. group: root
  61. mode: '0644'
  62. notify:
  63. - Restart dhcpd
  64. - name: Copy unbound.conf
  65. template:
  66. src: unbound/unbound.conf.j2
  67. dest: /etc/unbound/unbound.conf
  68. owner: root
  69. group: unbound
  70. mode: '0644'
  71. notify:
  72. - Restart unbound
  73. - name: Copy unbound resolution files
  74. template:
  75. src: "unbound/{{ item }}.j2"
  76. dest: /etc/unbound/local.d/{{ item }}
  77. owner: root
  78. group: unbound
  79. mode: '0640'
  80. loop:
  81. - server.home.conf
  82. - home-lan.conf
  83. - lan-name-resolution.conf
  84. - plug-onion-addresses.conf
  85. notify:
  86. - Restart unbound
  87. - name: Check adblock config file
  88. stat:
  89. path: /etc/unbound/local.d/ad-servers.conf
  90. register: adservers_conf
  91. - set_fact:
  92. adservers_conf_age_in_days: "{{ (lookup('pipe', 'date +%s')|int - adservers_conf.stat.ctime|int) / 86400 }}"
  93. when:
  94. - adservers_conf.stat.exists
  95. - name: Download fresh adblock config
  96. get_url:
  97. url: 'https://pgl.yoyo.org/adservers/serverlist.php?hostformat=unbound&mimetype=plaintext'
  98. dest: /etc/unbound/local.d/ad-servers.conf
  99. owner: root
  100. group: unbound
  101. mode: '0644'
  102. when:
  103. - not adservers_conf.stat.exists or adservers_conf_age_in_days|int > 30
  104. notify:
  105. - Restart unbound
  106. - name: Update /etc/hosts
  107. template:
  108. src: hosts.j2
  109. dest: /etc/hosts
  110. owner: root
  111. group: root
  112. mode: '0644'
  113. - set_fact:
  114. ethernet: "{{ (ansible_interfaces | reject('search', 'podman') | list | sort)[0] }}"
  115. - name: Configure static IP on {{ ethernet }}
  116. nmcli:
  117. conn_name: "{{ ethernet }}"
  118. ifname: "{{ ethernet }}"
  119. type: ethernet
  120. state: present
  121. ip4: "{{ gateway_server_ip }}"
  122. gw4: "{{ actual_gateway_ip }}"
  123. mtu: 9000
  124. dns4:
  125. - "{{ dns_primary }}"
  126. - "{{ dns_secondary }}"
  127. notify:
  128. - Restart NetworkManager