I have two ec2 instances with Amazon Linux 2 OS on them (amzn2-ami-hvm-2.0.20240610.1-x86_64-gp2)
uname -a
Linux ip-172-31-24-106.eu-central-1.compute.internal 4.14.345-262.561.amzn2.x86_64 #1 SMP Fri May 31 18:15:42 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
On one of them I install docker and docker-compose manually like so:
# # # Install docker # # #
sudo yum update -y
sudo yum install docker
sudo service docker start
sudo usermod -a -G docker ec2-user
docker version
Client:
Version: 20.10.25
ls -l /usr/local/bin/docker-compose
-rwxr-xr-x 1 root root 63052874 Jun 17 16:54 /usr/local/bin/docker-compose
# # # Install docker-compose # # #
sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose version
Docker Compose version v2.27.1
This way everything works.
However when I try to install docker and docker-compose via Ansible I get an error.
This is the playbook that I apply :
---
- name: Install python3, docker, docker-compose
hosts: [docker_server]
become: yes
gather_facts: False
tasks:
- name: Install python3 and docker
ansible.builtin.yum:
use_backend: yum3
name:
- docker
- python3-pip
update_cache: yes
state: present
- name: Install Docker Compose
get_url:
url: https://github.com/docker/compose/releases/latest/download/docker-compose-Linux-x86_64
dest: /usr/local/bin/docker-compose
mode: '+x'
register: docker_compose_result
- debug: var=docker_compose_result
- name: Start docker daemon
ansible.builtin.systemd:
name: docker
state: started
- name: Install docker python module
ansible.builtin.pip:
name:
- docker
- docker-compose
- name: Add ec2-user to docker group
hosts: [docker_server]
become: yes
tasks:
- name: Add ec2-user to docker group
ansible.builtin.user:
name: ec2-user
groups: docker
append: yes
- name: Reconnect to server session
ansible.builtin.meta: reset_connection
- name: Start docker containers
hosts: [docker_server]
vars_files:
- project-vars
tasks:
- name: Copy docker compose
ansible.builtin.copy:
src: /home/tomas/gitlab/ansible-learn-nana/docker-compose.yaml
dest: /home/ec2-user/docker-compose.yaml
- name: Start container from compose
community.docker.docker_compose_v2:
project_src: /home/ec2-user
This is the error that I get :
PLAY [Install python3, docker, docker-compose] ***********************************************************************************************************************************************
TASK [Install python3 and docker] ************************************************************************************************************************************************************
changed: [18.153.66.78]
TASK [Install Docker Compose] ****************************************************************************************************************************************************************
changed: [18.153.66.78]
TASK [debug] *********************************************************************************************************************************************************************************
ok: [18.153.66.78] => {
"docker_compose_result": {
"changed": true,
"checksum_dest": null,
"checksum_src": "38ab1e3229c2627dd788d299e526145491aadd1d",
"dest": "/usr/local/bin/docker-compose",
"elapsed": 1,
"failed": false,
"gid": 0,
"group": "root",
"md5sum": "24120814a7df4f78aca2a31b17067e64",
"mode": "0755",
"msg": "OK (63052874 bytes)",
"owner": "root",
"size": 63052874,
"src": "/home/ec2-user/.ansible/tmp/ansible-tmp-1718643910.4494328-246157-215366873451751/tmp4m7jlk7a",
"state": "file",
"status_code": 200,
"uid": 0,
"url": "https://github.com/docker/compose/releases/latest/download/docker-compose-Linux-x86_64"
}
}
TASK [Start docker daemon] *******************************************************************************************************************************************************************
changed: [18.153.66.78]
TASK [Install docker python module] **********************************************************************************************************************************************************
changed: [18.153.66.78]
PLAY [Add ec2-user to docker group] **********************************************************************************************************************************************************
TASK [Gathering Facts] ***********************************************************************************************************************************************************************
ok: [18.153.66.78]
TASK [Add ec2-user to docker group] **********************************************************************************************************************************************************
changed: [18.153.66.78]
TASK [Reconnect to server session] ***********************************************************************************************************************************************************
PLAY [Start docker containers] ***************************************************************************************************************************************************************
TASK [Gathering Facts] ***********************************************************************************************************************************************************************
ok: [18.153.66.78]
TASK [Copy docker compose] *******************************************************************************************************************************************************************
changed: [18.153.66.78]
TASK [Start container from compose] **********************************************************************************************************************************************************
fatal: [18.153.66.78]: FAILED! => {"changed": false, "msg": "Docker CLI /usr/bin/docker does not have the compose plugin installed"}
PLAY RECAP ***********************************************************************************************************************************************************************************
18.153.66.78 : ok=9 changed=6 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0
When I ssh
into this machine which is supposed to be configured by Ansible this is what I see :
ls -l
total 24
-rwxr-xr-x 1 root root 212 Jun 17 17:05 distro
-rwxr-xr-x 1 root root 215 Jun 17 17:05 docker-compose
-rwxr-xr-x 1 root root 212 Jun 17 17:05 dotenv
-rwxr-xr-x 1 root root 213 Jun 17 17:05 jsonschema
-rwxr-xr-x 1 root root 233 Jun 17 17:05 normalizer
-rwxr-xr-x 1 root root 216 Jun 17 17:05 wsdump
If I try to download docker-compose manually on this failed machine , the file size is different :
sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose
ls -l
total 61596
-rwxr-xr-x 1 root root 212 Jun 17 17:05 distro
-rwxr-xr-x 1 root root 63052874 Jun 17 17:08 docker-compose
-rwxr-xr-x 1 root root 212 Jun 17 17:05 dotenv
-rwxr-xr-x 1 root root 213 Jun 17 17:05 jsonschema
-rwxr-xr-x 1 root root 233 Jun 17 17:05 normalizer
-rwxr-xr-x 1 root root 216 Jun 17 17:05 wsdump
So it seems that my playbook fails at this task:
- name: Install Docker Compose
get_url:
url: https://github.com/docker/compose/releases/latest/download/docker-compose-Linux-x86_64
dest: /usr/local/bin/docker-compose
mode: '+x'
register: docker_compose_result
- debug: var=docker_compose_result
Even though debug shows "status_code": 200
Any advice on where could I look at with be highly appreciated.