Files
ansible-docker/roles/container/tasks/main.yml
2023-12-21 01:12:15 +02:00

107 lines
3.6 KiB
YAML

---
- name: Container role initialization
import_tasks: init.yml
- name: Docker network
when: docker_network_mode is not defined or docker_network_mode != 'host' or docker_networks | length > 0
block:
- name: Set networks variable to {{ docker_service_name }}
ansible.builtin.set_fact:
container_networks:
- name: "{{ docker_service_name }}"
when: docker_networks | length == 0
- name: Set networks variable to {{ docker_networks }}
ansible.builtin.set_fact:
container_networks: "{{ docker_networks }}"
when: docker_networks | length > 0
- name: Create docker networks
community.docker.docker_network:
name: "{{ item.name }}"
loop: "{{ container_networks }}"
- name: Reverse proxy for container
include_tasks: proxy.yml
when: reverse_proxy_type != 'none'
- name: Create directory /opt/{{ docker_service }}
ansible.builtin.file:
path: "/opt/{{ docker_service }}"
state: directory
mode: 0755
when: create_opt_directory
- name: Container image
import_tasks: image.yml
- name: Container user
include_tasks: host_user.yml
when: docker_host_user
- name: Create suffix directory
when: create_opt_directory and docker_service_suffix is defined
block:
- name: Create directory /opt/{{ docker_service + '/' + docker_service_suffix }}
ansible.builtin.file:
path: "/opt/{{ docker_service }}/{{ docker_service_suffix }}"
state: directory
owner: "{{ user.uid | default(omit) }}"
group: "{{ user.group | default(omit) }}"
mode: 0755
- name: Set container_workdir variable
ansible.builtin.set_fact:
container_workdir: /opt/{{ docker_service }}/{{ docker_service_suffix }}
- name: Set container_workdir variable
ansible.builtin.set_fact:
container_workdir: /opt/{{ docker_service }}
when: docker_service_suffix is not defined
- name: Create mounts directory
when: create_mounts_directory
block:
- name: Set docker_mounts_dir
ansible.builtin.set_fact:
docker_mounts_dir: "{{ container_workdir }}/mounts"
- name: Create directory {{ docker_mounts_dir }}
ansible.builtin.file:
path: "{{ docker_mounts_dir }}"
state: directory
owner: "{{ user.uid | default(omit) }}"
group: "{{ user.group | default(omit) }}"
mode: 0700
- name: Database container
include_tasks: database.yml
when: docker_database != 'none'
- name: Additional services
include_tasks: additional.yml
when: docker_additional_services is defined
- name: Container volumes
import_tasks: volumes.yml
- name: "Container for {{ docker_service_name }}"
community.docker.docker_container:
name: "{{ docker_service_name }}"
image: "{{ container_image.Id if (not ansible_check_mode) or (container_image | length > 0) else docker_image }}"
user: "{{ docker_user if docker_host_user else omit }}"
mounts: "{{ docker_volume_definition }}"
published_ports: "{{ container_published_ports + docker_published_ports }}"
labels: "{{ traefik_labels | default(omit) }}"
env: "{{ docker_env | combine(docker_additional_env) | combine({'TZ': timezone}) }}"
entrypoint: "{{ docker_entrypoint | default(omit) }}"
command: "{{ docker_command | default(omit) }}"
restart_policy: always
network_mode: "{{ docker_network_mode | default(omit) }}"
networks: "{{ container_networks }}"
log_driver: local
register: container_out
- name: Reset docker_mounts if converted from docker_volumes
ansible.builtin.set_fact:
docker_mounts: []
when: final_docker_volumes | length > 0