-
-
Save srijan/2028af568459195cb9a3dae8d111e754 to your computer and use it in GitHub Desktop.
--- | |
- name: Install packages using apt | |
apt: | |
name: | |
- apt-transport-https | |
- ca-certificates | |
- curl | |
- gnupg2 | |
- software-properties-common | |
state: present | |
cache_valid_time: 86400 | |
- name: Add Docker GPG apt Key | |
apt_key: | |
url: "{{ docker_apt_gpg_key }}" | |
state: present | |
- name: Add Docker Repository | |
apt_repository: | |
repo: "{{ docker_apt_repository }}" | |
state: present | |
update_cache: true | |
- name: Install docker-ce | |
apt: | |
name: docker-ce | |
state: present | |
cache_valid_time: 86400 | |
- name: Install docker compose | |
apt: | |
name: docker-compose-plugin | |
state: present | |
cache_valid_time: 86400 | |
- name: Run and enable docker | |
service: | |
name: docker | |
state: started | |
enabled: true | |
- name: Install docker-compose v1 | |
when: | |
- docker_compose_install_v1 is defined | |
- docker_compose_install_v1 | |
block: | |
- name: Check current docker-compose version. | |
command: docker-compose --version | |
register: docker_compose_vsn | |
changed_when: false | |
failed_when: false | |
check_mode: no | |
- name: Set docker compose current version | |
set_fact: | |
docker_compose_current_version: "{{ docker_compose_vsn.stdout | regex_search('(\\d+(\\.\\d+)+)') }}" | |
when: | |
- docker_compose_vsn.stdout is defined | |
- name: Install or upgrade docker-compose | |
get_url: | |
url : "https://github.com/docker/compose/releases/download/{{ docker_compose_version_v1 }}/docker-compose-Linux-x86_64" | |
dest: /usr/local/bin/docker-compose | |
mode: 'a+x' | |
force: yes | |
when: > | |
docker_compose_current_version == "" | |
or docker_compose_current_version is version(docker_compose_version_v1, '<') |
--- | |
docker_apt_release_channel: stable | |
docker_apt_arch: amd64 | |
docker_apt_repository: "deb [arch={{ docker_apt_arch }}] https://download.docker.com/linux/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} {{ docker_apt_release_channel }}" | |
docker_apt_gpg_key: https://download.docker.com/linux/{{ ansible_distribution | lower }}/gpg | |
docker_compose_install_v1: true | |
docker_compose_version_v1: "1.29.2" |
docker_compose_current_version == ""
This helped me out a ton (especially for new server provisions that do not have docker-compose
installed yet). Thanks @schaerli!
Thank you @srijan for your article, I faced an issue during the Install or upgrade docker-compose
step
I got this error Destination /usr/local/bin/docker-compose is not writable
after some researches about the issue I tried to add become: true
to this step and it's worked for me.
so is it working with you without become
?
@NurdinDev - I have set become: true
in the main file where this task is imported. It's required for all the steps here, not just the compose step.
I got it @srijan, Thank you so much 👍
Nice script, I needed to change the get_url section and added the checksum.
- name: Install or upgrade docker-compose
become: true
get_url:
url: "https://github.com/docker/compose/releases/download/v{{ docker_compose_version }}/docker-compose-linux-x86_64"
checksum: "sha256:https://github.com/docker/compose/releases/download/v{{ docker_compose_version }}/docker-compose-linux-x86_64.sha256"
dest: /usr/local/bin/docker-compose
mode: 'a+x'
force: yes
when: >
docker_compose_current_version is not defined
or docker_compose_current_version is version(docker_compose_version, '<')
There are several separate issues with this gist. Failing in clean debian 10.4. Issues found:
-
-name: Install packages using apt
fails because ofupdate_cache: no
-
"-name: setup-servers : Install or upgrade docker-compose"
fails because:
docker_compose_current_version is not defined
should be:
- docker_compose_current_version == ""
-
- name: Run and enable docker
fails with:
No module named 'requests'
fatal: [vm01]: FAILED! => {"changed": false, "msg": "Failed to import the required Python library (Docker SDK for Python: docker>=5.0.0 (Python >= 3.6) or docker<5.0.0 (Python 2.7))
because python3-requests
also needs to be installed
- When using docker-compose:
ModuleNotFoundError: No module named 'docker'
@chamalis - thanks. I plan to update the gist and linked blog post with a more complete solution. These days docker compose v2 is available via apt as well, so no need to download from github releases anymore if you don't need v1.
@chamalis - Updated, thanks.
Hey many thank you for this. I have two little changes. Name for set_fact and docker_compose_current_version == "".