cuyper/tasks/docker.yml
2026-09-23 00:12:31 +01:00

146 lines
3.7 KiB
YAML

---
- name: Create cuyper directory
ansible.builtin.file:
path: "/etc/docker"
state: directory
mode: '0755'
- name: Install Docker and Docker Compose
block:
- name: Ensure Docker and Docker Compose plugin are installed
apt:
name:
- docker-cli
- docker.io
- docker-compose
state: present
update_cache: yes
- name: Ensure Docker service is running and enabled on boot
service:
name: docker
state: started
enabled: yes
- name: Install Python Docker SDK via APT (Debian)
ansible.builtin.apt:
name:
- python3-docker
- python3-requests
state: present
update_cache: true
- name: Configure docker
ansible.builtin.copy:
src: "daemon.json"
dest: "/etc/docker/daemon.json"
mode: '0644'
- name: Initialize Swarm
community.docker.docker_swarm:
state: present
advertise_addr: "{{ swarm_advertise_addr }}"
listen_addr: "{{ swarm_advertise_addr }}:2377"
- name: Create Swarm overlay networks
community.docker.docker_network:
name: "{{ item.name }}"
driver: "{{ item.driver | default('overlay') }}"
attachable: "{{ item.attachable | default(false) }}"
internal: "{{ item.internal | default(false) }}"
scope: swarm
state: present
loop: "{{ swarm_networks }}"
# - name: Get manager join token
# community.docker.docker_swarm_info:
# delegate_to: "{{ swarm_init_hostdahkasjhkla }}"
# run_once: true
# register: swarm_info
# - name: Check local Swarm state
# community.docker.docker_swarm_info:
# register: local_swarm_info
# failed_when: false
# - name: Join worker to Swarm
# community.docker.docker_swarm:
# state: join
# remote_addrs:
# - "{{ swarm_manager_endpoint }}"
# join_token: "{{ hostvars[swarm_init_host].swarm_info.swarm_facts.JoinTokens.Worker }}"
# advertise_addr: "{{ swarm_advertise_addr }}"
# listen_addr: "0.0.0.0:2377"
# when:
# - inventory_hostname in groups[swarm_worker_group]
# - not local_swarm_info.swarm_facts.IsSwarmActive | default(false)
# - name: Join manager to Swarm
# community.docker.docker_swarm:
# state: join
# remote_addrs:
# - "{{ swarm_manager_endpoint }}"
# join_token: "{{ hostvars[swarm_init_host].swarm_info.swarm_facts.JoinTokens.Manager }}"
# advertise_addr: "{{ swarm_advertise_addr }}"
# listen_addr: "0.0.0.0:2377"
# when:
# - inventory_hostname in groups[swarm_manager_group]
# - not local_swarm_info.swarm_facts.IsSwarmActive | default(false)
# - name: Create Swarm overlay networks
# community.docker.docker_network:
# name: "{{ item.name }}"
# driver: "{{ item.driver | default('overlay') }}"
# attachable: "{{ item.attachable | default(false) }}"
# internal: "{{ item.internal | default(false) }}"
# scope: swarm
# state: present
# loop: "{{ swarm_networks }}"
# - name: Ensure Swarm ports are allowed
# ansible.posix.firewalld:
# port: "{{ item }}"
# permanent: true
# immediate: true
# state: enabled
# loop:
# - 2377/tcp
# - 7946/tcp
# - 7946/udp
# - 4789/udp
# when:
# - ansible_facts.services['firewalld.service'] is defined
# - ansible_facts.services['firewalld.service'].state == "running"
# - name: Check Swarm state
# community.docker.docker_swarm_info:
# register: swarm_info
# failed_when: false
# - name: Initialize Docker Swarm
# community.docker.docker_swarm:
# state: present
# advertise_addr: "{{ swarm_advertise_addr }}"
# listen_addr: "0.0.0.0:2377"
# when: not swarm_info.swarm_facts.IsSwarmActive | default(false)
# when: my_custom_role__enabled | d(True) | bool