• 2 Posts
  • 12 Comments
Joined 3 years ago
cake
Cake day: May 6th, 2023

help-circle
  • my latest / current version doesnt have that anymore (ive been through a lot of constant revisions…)

    ---
    - name: Install Docker Engine and Docker Compose on Debian (Ansible WebUI compatible)
      hosts: all
      become: true
      become_user: root
    
      vars:
        docker_pre_apks:
          - apt-transport-https
          - ca-certificates
          - curl
          - gnupg2
          - libssl-dev
          - python3-cffi-backend
          - python3-pip
          - libffi-dev
          - python3-setuptools
          - python3-nacl
          - python3-jsondiff
        docker_apks:
          - docker-ce
          - docker-ce-cli
          - containerd.io
        docker_arch: amd64
    
      tasks:
    
        - name: Install pre setup stuff
          ansible.builtin.apt:
            pkg: "{{ docker_pre_apks }}"
            update_cache: true
            state: present
    
        - name: Add gpg for docker repo
          ansible.builtin.apt_key:
            url: https://download.docker.com/linux/debian/gpg
            state: present
          when: (ansible_distribution == 'Debian' and ansible_distribution_major_version <= '12')
    
        - name: Copy up apt list
          ansible.builtin.apt_repository:
            repo: "deb [arch={{ docker_arch }}] https://download.docker.com/linux/debian {{ ansible_distribution_release }} stable"
            state: present
            filename: docker
          when: (ansible_distribution == 'Debian' and ansible_distribution_major_version <= '12')
    
        - name: Setup deb822 formatted repositorie
          ansible.builtin.deb822_repository:
            name: php
            types: deb
            uris: https://download.docker.com/linux/debian
            components: stable
            suites: "{{ ansible_distribution_release }}"
            signed_by: https://download.docker.com/linux/debian/gpg
            state: present
            enabled: true
          when: (ansible_distribution == 'Debian' and ansible_distribution_major_version >= '13')
    
        - name: Install docker
          ansible.builtin.apt:
            pkg: "{{ docker_apks }}"
            force_apt_get: yes
            update_cache: yes
            state: present
    
        - name: Start docker service
          ansible.builtin.service:
            name: docker
            enabled: yes
            state: started
    

    as a reminder: this is run (unsuccessfully) through ansible web-ui while that could be an issue, im confused the same setup was able to run a (simplier) nother playbook

    - name: install root ca certificate
      hosts: all
      gather_facts: yes
    
      tasks:
    
      - name: Copy custom CA certificate
        copy:
          src: ../files/root_ca.crt
          dest: /usr/local/share/ca-certificates/root_ca.crt
          mode: '0644'
    
      - name: Update CA certificates
        command: update-ca-certificates
        register: ca_update
    

    im not making sense of this


  • thank you very much for your continued support!

    i am not sure which file you are referring to. this is tree from /etc/apt:

    root@anytype:/etc/apt# tree
    .
    |-- apt.conf.d
    |   |-- 01autoremove
    |   |-- 20listchanges
    |   `-- 70debconf
    |-- auth.conf.d
    |-- keyrings
    |-- listchanges.conf
    |-- listchanges.conf.d
    |-- preferences.d
    |-- sources.list.d
    |   `-- debian.sources
    `-- trusted.gpg.d
        |-- debian-archive-bookworm-automatic.asc
        |-- debian-archive-bookworm-security-automatic.asc
        |-- debian-archive-bookworm-stable.asc
        |-- debian-archive-bullseye-automatic.asc
        |-- debian-archive-bullseye-security-automatic.asc
        |-- debian-archive-bullseye-stable.asc
        |-- debian-archive-trixie-automatic.asc
        |-- debian-archive-trixie-security-automatic.asc
        `-- debian-archive-trixie-stable.asc
    

    its been clear for awhile now that the script is doing pretty much nothing: because, as you can see: even the keyrings directory is empty, so its not even able the repo, hence it cant find docker-ce. im not sure where it fails. if downloading the asc file, dearmoring, adding repo…

    as you can see im running as root by the way, so no need to become.

    how do you suggest i debug this? sorry for my total lack of knowledge.


  • docker_pre_apks:

    • apt-transport-https
    • ca-certificates
    • curl
    • gnupg2
    • libssl-dev
    • python3-cffi-backend
    • python3-pip
    • libffi-dev
    • python3-setuptools
    • python3-nacl
    • python3-jsondiff

    docker_apks:

    still same result :(

    ---
    - name: Install Docker Engine and Docker Compose on Debian (Ansible WebUI compatible)
      hosts: all
      become: true
      become_user: root
    
      vars:
        docker_pre_apks:
          - apt-transport-https
          - ca-certificates
          - curl
          - gnupg2
          - libssl-dev
          - python3-cffi-backend
          - python3-pip
          - libffi-dev
          - python3-setuptools
          - python3-nacl
          - python3-jsondiff
        docker_apks:
          - docker-ce
          - docker-ce-cli
          - containerd.io
        docker_arch: amd64
    
      tasks:
    
        - name: Install pre setup stuff
          ansible.builtin.apt:
            pkg: "{{ docker_pre_apks }}"
            update_cache: true
            state: present
    
        - name: Add gpg for docker repo
          ansible.builtin.apt_key:
            url: https://download.docker.com/linux/debian/gpg
            state: present
          when: (ansible_distribution == 'Debian' and ansible_distribution_major_version <= '12')
    
        - name: Copy up apt list
          ansible.builtin.apt_repository:
            repo: "deb [arch={{ docker_arch }}] https://download.docker.com/linux/debian {{ ansible_distribution_release }} stable"
            state: present
            filename: docker
          when: (ansible_distribution == 'Debian' and ansible_distribution_major_version <= '12')
    
        - name: Setup deb822 formatted repositorie
          ansible.builtin.deb822_repository:
            name: php
            types: deb
            uris: https://download.docker.com/linux/debian
            components: stable
            suites: "{{ ansible_distribution_release }}"
            signed_by: https://download.docker.com/linux/debian/gpg
            state: present
            enabled: true
          when: (ansible_distribution == 'Debian' and ansible_distribution_major_version >= '13')
    
        - name: Install docker
          ansible.builtin.apt:
            pkg: "{{ docker_apks }}"
            force_apt_get: yes
            update_cache: yes
            state: present
    
        - name: Start docker service
          ansible.builtin.service:
            name: docker
            enabled: yes
            state: started
    
    PLAY [Install Docker Engine and Docker Compose on Debian (Ansible WebUI compatible)] ***
    
    TASK [Gathering Facts] *********************************************************
    [WARNING]: Host 'anytype.lab' is using the discovered Python interpreter at '/usr/bin/python3.13', but future installation of another Python interpreter could cause a different interpreter to be discovered. See https://docs.ansible.com/ansible-core/2.19/reference_appendices/interpreter_discovery.html for more information.
    ok: [anytype.lab]
    
    TASK [Install pre setup stuff] *************************************************
    changed: [anytype.lab]
    
    TASK [Add gpg for docker repo] *************************************************
    skipping: [anytype.lab]
    
    TASK [Copy up apt list] ********************************************************
    skipping: [anytype.lab]
    
    TASK [Setup deb822 formatted repositorie] **************************************
    changed: [anytype.lab]
    
    TASK [Install docker] **********************************************************
    [ERROR]: Task failed: Module failed: No package matching 'docker-ce' is available
    Origin: /tmp/ansible-webui/repositories/1_ansibleplaybooksrepo/playbooks/debian13docker.yml:59:7
    
    57       when: (ansible_distribution == 'Debian' and ansible_distribution_major_version >= '13')
    58
    59     - name: Install docker
             ^ column 7
    
    fatal: [anytype.lab]: FAILED! => {"changed": false, "msg": "No package matching 'docker-ce' is available"}
    
    PLAY RECAP *********************************************************************
    anytype.lab                : ok=3    changed=2    unreachable=0    failed=1    skipped=2    rescued=0    ignored=0   
    
    

    i have NO idea what i am doing wrong. this is new to me. but i personally learn better with practical examples rather than reading books and documentation. i thought setting up docker was simple enough to begin… i guess i was wrong.



  • thanks for sharing! and this works for you? as i said on my original post (on selfhosted channel), im new at ansible and i must be doing something stupid.

    this is your yaml very slightly adapted:

    ---
    - name: Install Docker Engine and Docker Compose on Debian (Ansible WebUI compatible)
      hosts: all
      become: true
      become_user: root
    
      vars:
        docker_apks:
          - docker-ce
          - docker-ce-cli
          - containerd.io
          - docker-buildx-plugin
          - docker-compose-plugin
        docker_pre_apks:
          - gpg
          - ca-certificates
          - curl
          - gnupg
        docker_arch: amd64
    
      tasks:
    
        - name: Install pre setup stuff
          ansible.builtin.apt:
            pkg: "{{ docker_pre_apks }}"
            update_cache: true
            state: present
    
        - name: Add gpg for docker repo
          ansible.builtin.apt_key:
            url: https://download.docker.com/linux/debian/gpg
            state: present
          when: (ansible_distribution == 'Debian' and ansible_distribution_major_version <= '12')
    
        - name: Copy up apt list
          ansible.builtin.apt_repository:
            repo: "deb [arch={{ docker_arch }}] https://download.docker.com/linux/debian {{ ansible_distribution_release }} stable"
            state: present
            filename: docker
          when: (ansible_distribution == 'Debian' and ansible_distribution_major_version <= '12')
    
        - name: Setup deb822 formatted repositorie
          ansible.builtin.deb822_repository:
            name: php
            types: deb
            uris: https://download.docker.com/linux/debian
            components: stable
            suites: "{{ ansible_distribution_release }}"
            signed_by: https://download.docker.com/linux/debian/gpg
            state: present
            enabled: true
          when: (ansible_distribution == 'Debian' and ansible_distribution_major_version >= '13')
    
        - name: Install docker
          ansible.builtin.apt:
            pkg: "{{ docker_apks }}"
            force_apt_get: yes
            update_cache: yes
            state: present
    
        - name: Start docker service
          ansible.builtin.service:
            name: docker
            enabled: yes
            state: started
    

    this is the output:

    PLAY [Install Docker Engine and Docker Compose on Debian (Ansible WebUI compatible)] ***
    
    TASK [Gathering Facts] *********************************************************
    [WARNING]: Host 'anytype.lab' is using the discovered Python interpreter at '/usr/bin/python3.13', but future installation of another Python interpreter could cause a different interpreter to be discovered. See https://docs.ansible.com/ansible-core/2.19/reference_appendices/interpreter_discovery.html for more information.
    ok: [anytype.lab]
    
    TASK [Install pre setup stuff] *************************************************
    changed: [anytype.lab]
    
    TASK [Add gpg for docker repo] *************************************************
    skipping: [anytype.lab]
    
    TASK [Copy up apt list] ********************************************************
    skipping: [anytype.lab]
    
    TASK [Setup deb822 formatted repositorie] **************************************
    changed: [anytype.lab]
    
    TASK [Install docker] **********************************************************
    [ERROR]: Task failed: Module failed: No package matching 'docker-ce' is available
    Origin: /tmp/ansible-webui/repositories/1_ansibleplaybooksrepo/playbooks/debian13docker.yml:54:7
    
    52       when: (ansible_distribution == 'Debian' and ansible_distribution_major_version >= '13')
    53
    54     - name: Install docker
             ^ column 7
    
    fatal: [anytype.lab]: FAILED! => {"changed": false, "msg": "No package matching 'docker-ce' is available"}
    
    PLAY RECAP *********************************************************************
    anytype.lab                : ok=3    changed=2    unreachable=0    failed=1    skipped=2    rescued=0    ignored=0   
    

    this is my inventory file:

    root@ansible:/srv/ansible-webui/ansible/repositories/1_ansibleplaybooksrepo/inventory# cat hosts.yml 
    all:
      children:
        lxc_containers:
          hosts:
            anytype.lab:
              ansible_host: 192.168.236.142
              ansible_user: root
              ansible_ssh_private_key_file: ~/.ssh/id_ed25519
    

    my workflow is not completely broken because i managed to get this workbook working:

    - name: install root ca certificate
      hosts: all
      gather_facts: yes
    
      tasks:
    
      - name: Copy custom CA certificate
        copy:
          src: ../files/root_ca.crt
          dest: /usr/local/share/ca-certificates/root_ca.crt
          mode: '0644'
    
      - name: Update CA certificates
        command: update-ca-certificates
        register: ca_update
    

    its of course a lot simpler…

    PLAY [install root ca certificate] *********************************************
    
    TASK [Gathering Facts] *********************************************************
    [WARNING]: Host 'ferdium.lab' is using the discovered Python interpreter at '/usr/bin/python3.13', but future installation of another Python interpreter could cause a different interpreter to be discovered. See https://docs.ansible.com/ansible-core/2.19/reference_appendices/interpreter_discovery.html for more information.
    ok: [ferdium.lab]
    
    TASK [Copy custom CA certificate] **********************************************
    changed: [ferdium.lab]
    
    TASK [Update CA certificates] **************************************************
    changed: [ferdium.lab]
    
    PLAY RECAP *********************************************************************
    ferdium.lab                : ok=3    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
    

    it was a brand new host. the first (this above) playbook worked, but then the docker one didnt. so it doesnt seem to be a target host issue. both debian 13 lxc if that matters.







  • hum unfortunately either im doing something else wrong or its not working for me

    ---
    - name: Install Docker Engine and Docker Compose on Debian (Ansible WebUI compatible)
      hosts: all
      become: true
      become_user: root
    
      vars:
        docker_packages:
          - docker-ce
          - docker-ce-cli
          - containerd.io
          - docker-buildx-plugin
          - docker-compose-plugin
    
      tasks:
    
        - name: Ensure required packages are installed
          apt:
            name:
              - ca-certificates
              - curl
              - gnupg
            update_cache: yes
            state: present
          delegate_to: "{{ inventory_hostname }}"
    
        - name: Ensure /etc/apt/keyrings exists
          file:
            path: /etc/apt/keyrings
            state: directory
            mode: '0755'
          delegate_to: "{{ inventory_hostname }}"
    
        - name: Get system architecture for Docker repo
          ansible.builtin.command: dpkg --print-architecture
          register: dpkg_architecture
          changed_when: false
          delegate_to: "{{ inventory_hostname }}"
    
        - name: Setup deb822 formatted repositorie
          ansible.builtin.deb822_repository:
            name: php
            types: deb
            uris: https://download.docker.com/linux/debian
            components: stable
            suites: "{{ ansible_distribution_release }}"
            signed_by: https://download.docker.com/linux/debian/gpg
            state: present
            enabled: true
          when: (ansible_distribution == 'Debian' and ansible_distribution_major_version >= '13')
    
        - name: Download Docker GPG key
          ansible.builtin.get_url:
            url: https://download.docker.com/linux/debian/gpg
            dest: /etc/apt/keyrings/docker.asc
            mode: '0644'
          delegate_to: "{{ inventory_hostname }}"
    
        - name: DEBUG - Check if GPG key exists
          ansible.builtin.stat:
            path: /etc/apt/keyrings/docker.asc
          register: gpg_key_stat
          delegate_to: "{{ inventory_hostname }}"
    
        - name: DEBUG - Show GPG key status
          ansible.builtin.debug:
            msg: "GPG key exists: {{ gpg_key_stat.stat.exists }}, Size: {{ gpg_key_stat.stat.size | default('N/A') }}"
    
        - name: DEBUG - List keyrings directory
          ansible.builtin.command: ls -lah /etc/apt/keyrings/
          register: keyrings_list
          delegate_to: "{{ inventory_hostname }}"
    
        - name: DEBUG - Show keyrings directory contents
          ansible.builtin.debug:
            var: keyrings_list.stdout_lines
    
        - name: Add Docker APT repository (correct for Debian 13)
          ansible.builtin.apt_repository:
            repo: "deb [arch={{ dpkg_architecture.stdout }} signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian {{ ansible_distribution_release }} stable"
            filename: docker
            state: present
          delegate_to: "{{ inventory_hostname }}"
    
        - name: DEBUG - Check if repo file exists
          ansible.builtin.stat:
            path: /etc/apt/sources.list.d/docker.list
          register: repo_file_stat
          delegate_to: "{{ inventory_hostname }}"
    
        - name: DEBUG - Show repo file status
          ansible.builtin.debug:
            msg: "Repo file exists: {{ repo_file_stat.stat.exists }}"
    
        - name: DEBUG - Show repo file contents if exists
          ansible.builtin.command: cat /etc/apt/sources.list.d/docker.list
          register: repo_contents
          when: repo_file_stat.stat.exists
          failed_when: false
          delegate_to: "{{ inventory_hostname }}"
    
        - name: DEBUG - Display repo contents
          ansible.builtin.debug:
            var: repo_contents.stdout_lines
          when: repo_file_stat.stat.exists
    
        - name: Update apt cache after adding repo
          apt:
            update_cache: yes
          delegate_to: "{{ inventory_hostname }}"
    
        - name: Install Docker packages
          apt:
            name: "{{ docker_packages }}"
            state: present
          delegate_to: "{{ inventory_hostname }}"
    
        - name: Enable & start Docker
          service:
            name: docker
            state: started
            enabled: yes
          delegate_to: "{{ inventory_hostname }}"
    
    
    PLAY [Install Docker Engine and Docker Compose on Debian (Ansible WebUI compatible)] ***
    
    TASK [Gathering Facts] *********************************************************
    [WARNING]: Host 'anytype.lab' is using the discovered Python interpreter at '/usr/bin/python3.13', but future installation of another Python interpreter could cause a different interpreter to be discovered. See https://docs.ansible.com/ansible-core/2.19/reference_appendices/interpreter_discovery.html for more information.
    ok: [anytype.lab]
    
    TASK [Ensure required packages are installed] **********************************
    changed: [anytype.lab]
    
    TASK [Ensure /etc/apt/keyrings exists] *****************************************
    ok: [anytype.lab]
    
    TASK [Get system architecture for Docker repo] *********************************
    skipping: [anytype.lab]
    
    TASK [Setup deb822 formatted repositorie] **************************************
    changed: [anytype.lab]
    
    TASK [Download Docker GPG key] *************************************************
    changed: [anytype.lab]
    
    TASK [DEBUG - Check if GPG key exists] *****************************************
    ok: [anytype.lab]
    
    TASK [DEBUG - Show GPG key status] *********************************************
    ok: [anytype.lab] => {
        "msg": "GPG key exists: False, Size: N/A"
    }
    
    TASK [DEBUG - List keyrings directory] *****************************************
    skipping: [anytype.lab]
    
    TASK [DEBUG - Show keyrings directory contents] ********************************
    ok: [anytype.lab] => {
        "keyrings_list.stdout_lines": []
    }
    
    TASK [Add Docker APT repository (correct for Debian 13)] ***********************
    changed: [anytype.lab]
    
    TASK [DEBUG - Check if repo file exists] ***************************************
    ok: [anytype.lab]
    
    TASK [DEBUG - Show repo file status] *******************************************
    ok: [anytype.lab] => {
        "msg": "Repo file exists: False"
    }
    
    TASK [DEBUG - Show repo file contents if exists] *******************************
    skipping: [anytype.lab]
    
    TASK [DEBUG - Display repo contents] *******************************************
    skipping: [anytype.lab]
    
    TASK [Update apt cache after adding repo] **************************************
    changed: [anytype.lab]
    
    TASK [Install Docker packages] *************************************************
    [ERROR]: Task failed: Module failed: No package matching 'docker-ce' is available
    Origin: /tmp/ansible-webui/repositories/1_ansibleplaybooksrepo/playbooks/debian13docker.yml:112:7
    
    110       delegate_to: "{{ inventory_hostname }}"
    111
    112     - name: Install Docker packages
              ^ column 7
    
    fatal: [anytype.lab]: FAILED! => {"changed": false, "msg": "No package matching 'docker-ce' is available"}
    
    PLAY RECAP *********************************************************************
    anytype.lab                : ok=12   changed=5    unreachable=0    failed=1    skipped=4    rescued=0    ignored=0