How to install Docker on CentOS with Ansible

Published Updated

By Jarle Aase

I am playing with Kubernetes and Docker Swarm's these days. Usually I use Debian as my Server Operating System. It's easy to install Docker on Debian, with or without Ansible.

However, today I had to use CentOS for a change. So I made a very simple Ansible Playbook to install Docker and Docker Compose.

Note: If you use this Playbook, please make sure to update the url in Download and install Docker Compose to the current version of Docker Compose. (I really don't understand why the Docker guys don't add Docker Compose to their apt/yum repositories. They already have docker there, so they know how to do it)!

---- name: Install Docker and Docker Compose on CentOS  hosts: all  become: true  tasks:    - name: Upgrade all packages      yum: name=* state=latest    - name: Check if Docker is installed      command: systemctl status docker      register: docker_check      ignore_errors: yes    - name: Download the Docker installer      get_url:        url: https://get.docker.com/        dest: /root/install_docker.sh        mode: 0700      when: docker_check.stderr.find('service could not be found') != -1    - name: Install Docker      shell: /root/install_docker.sh      when: docker_check.stderr.find('service could not be found') != -1    - name: Remove the Docker installer file.      file:        state: absent        path: /root/install_docker.sh    - name: Enable the Docker daemon in systemd      systemd:        name: docker        enabled: yes        masked: no    - name: Start the Docker daemon      systemd:        name: docker        state: started        masked: no    - name: Check if Docker Compose is installed      command: docker-compose --version      register: docker_compose_check      ignore_errors: yes    - name: Download and install Docker Compose      get_url:        url: https://github.com/docker/compose/releases/download/1.21.2/docker-compose-Linux-x86_64        dest: /usr/bin/docker-compose        mode: 0755      when:        - docker_compose_check.msg is defined        - docker_compose_check.msg.find('No such file or directory') != -1

This should work on RedHat and probably on Fedora as well, but I have not tested that.

Have fun!