main.yml 3.2 KB

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