131 lines
3.2 KiB
YAML
131 lines
3.2 KiB
YAML
---
|
|
- name: Validate supported OS family
|
|
assert:
|
|
that:
|
|
- ansible_os_family == "Debian"
|
|
- ansible_distribution | lower in ["debian", "ubuntu"]
|
|
fail_msg: >-
|
|
Docker baseline currently supports Debian/Ubuntu apt-based hosts only.
|
|
Detected {{ ansible_distribution }} / {{ ansible_os_family }}.
|
|
|
|
- name: Remove conflicting Docker packages
|
|
apt:
|
|
name: "{{ docker_conflicting_packages }}"
|
|
state: absent
|
|
|
|
- name: Install Docker prerequisites
|
|
apt:
|
|
name: "{{ docker_prereq_packages }}"
|
|
state: present
|
|
update_cache: true
|
|
|
|
- name: Create Docker APT keyrings directory
|
|
file:
|
|
path: /etc/apt/keyrings
|
|
state: directory
|
|
mode: "0755"
|
|
|
|
- name: Determine dpkg architecture
|
|
command: dpkg --print-architecture
|
|
register: docker_dpkg_arch
|
|
changed_when: false
|
|
|
|
- name: Download Docker GPG key
|
|
get_url:
|
|
url: "https://download.docker.com/linux/{{ ansible_distribution | lower }}/gpg"
|
|
dest: /etc/apt/keyrings/docker.asc
|
|
mode: "0644"
|
|
force: true
|
|
|
|
- name: Add Docker APT repository
|
|
apt_repository:
|
|
repo: >
|
|
deb [arch={{ docker_dpkg_arch.stdout }} signed-by=/etc/apt/keyrings/docker.asc]
|
|
https://download.docker.com/linux/{{ ansible_distribution | lower }}
|
|
{{ ansible_distribution_release }} stable
|
|
filename: docker
|
|
state: present
|
|
update_cache: true
|
|
|
|
- name: Install Docker Engine and plugins
|
|
apt:
|
|
name: "{{ docker_packages }}"
|
|
state: "{{ docker_package_state }}"
|
|
|
|
- name: Configure Docker daemon
|
|
copy:
|
|
dest: /etc/docker/daemon.json
|
|
content: "{{ docker_daemon_config | to_nice_json }}"
|
|
owner: root
|
|
group: root
|
|
mode: "0644"
|
|
notify: Restart Docker
|
|
|
|
- name: Enable and start Docker
|
|
systemd:
|
|
name: docker
|
|
enabled: true
|
|
state: started
|
|
|
|
- name: Add user to docker group
|
|
user:
|
|
name: "{{ docker_manage_user | default(ansible_user) }}"
|
|
groups: docker
|
|
append: true
|
|
|
|
- name: Ensure standard Docker stack directory exists
|
|
file:
|
|
path: "{{ docker_stacks_dir }}"
|
|
state: directory
|
|
owner: root
|
|
group: docker
|
|
mode: "0775"
|
|
|
|
- name: Enable IP forwarding
|
|
ansible.posix.sysctl:
|
|
name: net.ipv4.ip_forward
|
|
value: "1"
|
|
state: present
|
|
reload: true
|
|
|
|
- name: Disable IPv6
|
|
ansible.posix.sysctl:
|
|
name: "{{ item }}"
|
|
value: "1"
|
|
state: present
|
|
reload: true
|
|
loop:
|
|
- net.ipv6.conf.all.disable_ipv6
|
|
- net.ipv6.conf.default.disable_ipv6
|
|
when: docker_disable_ipv6
|
|
|
|
- name: Create shared Docker networks
|
|
community.docker.docker_network:
|
|
name: "{{ item }}"
|
|
state: present
|
|
loop: "{{ docker_networks }}"
|
|
when: docker_networks | length > 0
|
|
|
|
- name: Check Docker version
|
|
command: docker --version
|
|
register: docker_version
|
|
changed_when: false
|
|
|
|
- name: Check Docker Compose version
|
|
command: docker compose version
|
|
register: docker_compose_version
|
|
changed_when: false
|
|
|
|
- name: Verify Docker can run containers
|
|
command: docker run --rm hello-world
|
|
register: docker_hello_world
|
|
changed_when: false
|
|
when: docker_run_hello_world
|
|
|
|
- name: Show Docker baseline summary
|
|
debug:
|
|
msg:
|
|
docker_version: "{{ docker_version.stdout }}"
|
|
docker_compose_version: "{{ docker_compose_version.stdout }}"
|
|
stacks_dir: "{{ docker_stacks_dir }}"
|
|
networks: "{{ docker_networks }}"
|