--- - name: "Checking for x86_64" ansible.builtin.set_fact: host_arch: "amd64" when: "'x86_64' in ansible_architecture" - name: "Checking for aarch64" ansible.builtin.set_fact: host_arch: "arm64" when: "'aarch64' in ansible_architecture" - name: "Checking for Centos docker version" ansible.builtin.set_fact: docker_ce_name: 'docker-ce-{{ centos_docker_version }}' when: - ansible_os_family == 'RedHat' - centos_docker_version != 'latest' - name: "Checking for Ubuntu docker version" ansible.builtin.set_fact: docker_ce_name: 'docker-ce={{ ubuntu_docker_version }}' when: - ansible_distribution == 'Ubuntu' - ubuntu_docker_version != 'latest' - name: Install Docker (RedHat 7) become: true when: ansible_os_family == 'RedHat' and ansible_distribution_major_version == "7" block: - name: Install Docker requirements ansible.builtin.yum: name: - device-mapper-persistent-data - lvm2 state: present - name: Add Docker repository ansible.builtin.get_url: url: https://download.docker.com/linux/centos/docker-ce.repo dest: /etc/yum.repos.d/docker-ce.repo mode: 0644 - name: Install Docker CE ansible.builtin.yum: name: '{{ docker_ce_name }}' state: present update_cache: true - name: Install Docker (RedHat 8) become: true when: ansible_os_family == 'RedHat' and ansible_distribution_major_version >= "8" block: - name: Remove confliting packages with Docker-ce ansible.builtin.yum: name: - atomic-registries - buildah - containers-common - container-tools - docker - podman - runc - skopeo state: absent update_cache: true - name: Add Docker repository ansible.builtin.get_url: url: https://download.docker.com/linux/centos/docker-ce.repo dest: /etc/yum.repos.d/docker-ce.repo mode: 0644 - name: Install Docker requirements ansible.builtin.yum: name: - docker-ce - docker-ce-cli - containerd.io - containerd.io - docker-buildx-plugin - docker-compose-plugin state: present update_cache: true - name: Install Docker (Ubuntu) become: true when: ansible_distribution == 'Ubuntu' block: - name: Install Docker requirements ansible.builtin.package: name: - apt-transport-https - ca-certificates - gnupg state: present update_cache: true - name: Add Docker apt-key ansible.builtin.apt_key: url: https://download.docker.com/linux/ubuntu/gpg state: present - name: Add Docker apt-repository ansible.builtin.apt_repository: repo: 'deb [arch={{ host_arch }}] https://download.docker.com/linux/ubuntu {{ ansible_distribution_release }} {{ docker_repo_channel }}' state: present - name: Install Docker CE ansible.builtin.package: name: - docker-ce - docker-ce-cli - containerd.io - containerd.io - docker-buildx-plugin - docker-compose-plugin state: present update_cache: true - name: Copy LF Docker configuration become: true block: - name: Ensure /etc/docker directory exists ansible.builtin.file: path: /etc/docker state: directory mode: 0700 - name: Copy LF Docker configuration ansible.builtin.copy: src: daemon.json dest: /etc/docker/daemon.json owner: root group: root mode: 0600 - name: 'Set mtu to {{ mtu }}' ansible.builtin.lineinfile: path: /etc/docker/daemon.json regexp: '^ "mtu":' line: ' "mtu": {{ mtu }},' # There is a known bug with using a daemon.json file and passing the default # cli options to the daemon. We must replace the ExecStart command with one # that does not have any options. - name: Fix broken systemd file on Ubuntu ansible.builtin.lineinfile: path: /lib/systemd/system/docker.service regexp: '^ExecStart=' line: 'ExecStart=/usr/bin/dockerd' when: ansible_distribution == 'Ubuntu' become: true - name: Fix broken systemd file on Red Hat ansible.builtin.lineinfile: path: /usr/lib/systemd/system/docker.service regexp: '^ExecStart=' line: 'ExecStart=/usr/bin/dockerd' when: ansible_os_family == 'RedHat' become: true - name: Enable Docker service ansible.builtin.systemd: # noqa ignore-errors name: docker enabled: true ignore_errors: true when: ansible_os_family == 'RedHat' become: true