main.yml 3.1 KB

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