firewalld.yml 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. ---
  2. - name: Install firewalld packages
  3. yum:
  4. name: firewalld
  5. state: present
  6. - name: Check if iptables-services is installed
  7. command: rpm -q iptables-services
  8. register: pkg_check
  9. failed_when: pkg_check.rc > 1
  10. changed_when: no
  11. - name: Ensure iptables services are not enabled
  12. service:
  13. name: "{{ item }}"
  14. state: stopped
  15. enabled: no
  16. with_items:
  17. - iptables
  18. - ip6tables
  19. when: pkg_check.rc == 0
  20. - name: Start and enable firewalld service
  21. service:
  22. name: firewalld
  23. state: started
  24. enabled: yes
  25. register: result
  26. - name: need to pause here, otherwise the firewalld service starting can sometimes cause ssh to fail
  27. pause: seconds=10
  28. when: result | changed
  29. - name: Mask iptables services
  30. command: systemctl mask "{{ item }}"
  31. register: result
  32. changed_when: "'iptables' in result.stdout"
  33. with_items:
  34. - iptables
  35. - ip6tables
  36. when: pkg_check.rc == 0
  37. # TODO: Ansible 1.9 will eliminate the need for separate firewalld tasks for
  38. # enabling rules and making them permanent with the immediate flag
  39. - name: Add firewalld allow rules
  40. firewalld:
  41. port: "{{ item.port }}"
  42. permanent: false
  43. state: enabled
  44. with_items: os_firewall_allow
  45. when: os_firewall_allow is defined
  46. - name: Persist firewalld allow rules
  47. firewalld:
  48. port: "{{ item.port }}"
  49. permanent: true
  50. state: enabled
  51. with_items: os_firewall_allow
  52. when: os_firewall_allow is defined
  53. - name: Remove firewalld allow rules
  54. firewalld:
  55. port: "{{ item.port }}"
  56. permanent: false
  57. state: disabled
  58. with_items: os_firewall_deny
  59. when: os_firewall_deny is defined
  60. - name: Persist removal of firewalld allow rules
  61. firewalld:
  62. port: "{{ item.port }}"
  63. permanent: true
  64. state: disabled
  65. with_items: os_firewall_deny
  66. when: os_firewall_deny is defined