--- - name: Allow user ansible to switch to 'docker' user without password ansible.builtin.copy: dest: "/etc/sudoers.d/ansible-su-docker" content: "ansible ALL=(ALL) NOPASSWD: /bin/su - docker" owner: root group: root mode: '0440' - name: Install required system packages apt: name={{ item }} state=latest update_cache=yes loop: [ 'apt-transport-https', 'ca-certificates', 'curl', 'software-properties-common', 'python3-pip', 'virtualenv', 'python3-setuptools', 'python3-pkg-resources'] - name: Add Docker GPG apt Key apt_key: url: https://download.docker.com/linux/ubuntu/gpg state: present - name: Add Docker Repository apt_repository: repo: deb [arch=amd64] https://download.docker.com/linux/ubuntu noble stable state: present - name: Update apt and install docker-ce apt: name: "{{item}}" state: present update_cache: yes with_items: - docker-ce - docker-ce-cli - containerd.io - docker-buildx-plugin - docker-compose-plugin - name: Create docker group group: name: "docker" state: present - name: Add docker user with specific attributes user: name: docker system: yes createhome: yes home: /home/docker shell: /usr/sbin/nologin - name: Adding user docker to docker group user: name: docker groups: "docker" append: "yes" - name: Adding user ansible to docker group user: name: ansible groups: "docker" append: "yes" - name: Get Python 3.X version ansible.builtin.command: python3 --version register: pyver changed_when: false failed_when: pyver.rc != 0 - name: Remove Python 3.X EXTERNALLY-MANAGED file ansible.builtin.file: state: absent path: "/usr/lib/python{{ pyver.stdout.split()[1] | regex_search('([0-9]+\\.[0-9]+)') }}/EXTERNALLY-MANAGED" when: pyver.stdout | regex_search('3\.[0-9]+') ### Keeping it for future ansible control of docker. now it's not needed. # - name: Install and upgrade pip # pip: # name: pip # extra_args: --upgrade # executable: pip3 # - name: Install setuptools Module for Python # pip: # name: setuptools # - name: Install Docker Module for Python # pip: # name: docker # - name: Install requests for Python # pip: # name: requests # version: latest - name: Ensure Docker is started and enabled ansible.builtin.service: name: docker state: started enabled: true - name: Create /opt/containers directory file: path: /opt/containers state: directory owner: docker group: docker mode: '0770' # - name: Install Docker compose for Python # pip: # name: docker-compose