main.yml 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. ---
  2. - name: Install docker packages
  3. dnf:
  4. name:
  5. - moby-engine
  6. - docker-compose
  7. state: present
  8. - name: Start/enable docker service
  9. systemd:
  10. name: docker
  11. state: started
  12. enabled: yes
  13. - name: Create docker service folders
  14. file:
  15. path: /root/docker/{{ item }}
  16. state: directory
  17. owner: root
  18. group: root
  19. mode: '0750'
  20. with_items:
  21. - "{{ containers | map(attribute='service_name') | flatten }}"
  22. - name: Create docker networks
  23. docker_network:
  24. name: "{{ item.name }}"
  25. ipam_config:
  26. - subnet: "{{ item.subnet }}"
  27. gateway: "{{ item.gateway }}"
  28. iprange: "{{ item.ip_range }}"
  29. state: present
  30. with_items:
  31. - "{{ container_networks }}"
  32. when:
  33. - container_networks is defined
  34. loop_control:
  35. label: "{{ item.name }}"
  36. - name: Write docker compose file
  37. template:
  38. src: docker-compose.yml.j2
  39. dest: /root/docker/{{ item }}/docker-compose.yml
  40. owner: root
  41. group: root
  42. mode: '0640'
  43. with_items:
  44. - "{{ containers | map(attribute='service_name') | flatten }}"
  45. - name: Create container group
  46. group:
  47. name: "{{ container_group }}"
  48. gid: "{{ container_gid }}"
  49. - name: Create container user
  50. user:
  51. name: "{{ container_user }}"
  52. uid: "{{ container_uid }}"
  53. group: "{{ container_group }}"
  54. - name: Generate list of persistent container directories
  55. set_fact:
  56. persistent_container_dirs: "{{ containers | map(attribute='volumes') | flatten | map('regex_replace', ':.*' ) | list }}"
  57. changed_when: false
  58. - name: Create persistent container directories
  59. file:
  60. path: "{{ item }}"
  61. state: directory
  62. owner: "{{ container_user }}"
  63. group: "{{ container_group }}"
  64. mode: '0770'
  65. with_items:
  66. - "{{ persistent_container_dirs }}"
  67. - name: Modify SELinux contexts for container directories
  68. sefcontext:
  69. target: '{{ item }}(/.*)?'
  70. setype: container_file_t
  71. state: present
  72. with_items:
  73. - "{{ persistent_container_dirs }}"
  74. notify: Apply SELinux contexts
  75. - name: Copy systemd service file
  76. template:
  77. src: service.j2
  78. dest: /etc/systemd/system/{{ item }}.service
  79. owner: root
  80. group: root
  81. mode: '0640'
  82. notify: Refresh systemd service files
  83. with_items:
  84. - "{{ containers | map(attribute='service_name') | flatten }}"
  85. - meta: flush_handlers
  86. - name: Open up firewall ports
  87. firewalld:
  88. port: "{{ item }}"
  89. permanent: yes
  90. state: enabled
  91. with_items:
  92. - "{{ firewall_ports }}"
  93. - name: Start/enable services
  94. systemd:
  95. name: "{{ item }}"
  96. enabled: yes
  97. state: started
  98. with_items:
  99. - "{{ containers | map(attribute='service_name') | flatten }}"