This article proposes to automate the installation of Docker on Raspberry Pi using Ansible with a custom role.
Prerequisites
- Having installed Raspbian on the target Raspberry Pi, the procedure is available in a previous article Automated Initialization and Securing of Raspbian on Raspberry Pi
Docker Installation
Retrieving the role
I have developed an Ansible role for this automation, here’s how to retrieve it:
git clone https://gitlab.com/jls42/ansible-rpi-docker.git roles/ansible-rpi-docker
For more details, go see the documentation on ansible-rpi-docker
Creating the inventory file named inventory
In this inventory example, the Raspberry Pi has the IP address 192.168.1.190
[rpi1]
192.168.1.190 servername=rpi1
Preparing the docker-rpi.yml playbook
---
- name: "Installation de Docker sur le Raspberry Pi"
hosts: rpi1
remote_user: "pi"
roles:
- roles/ansible-rpi-docker
vars:
docker_version: 18.06.1~ce~3-0~raspbian
Deploying Docker
export ANSIBLE_HOST_KEY_CHECKING=False
ansible-playbook -b -i inventory docker-rpi.yml
Which gives:
jls42@boo:~/rpi$ ansible-playbook -b -i inventory docker-rpi.yml
PLAY [Installation de Docker sur le Raspberry Pi] ******************************************************************************************************************************************************************************************
TASK [Gathering Facts] *********************************************************************************************************************************************************************************************************************
Sunday 09 December 2018 01:20:47 +0100 (0:00:00.050) 0:00:00.051 *******
ok: [192.168.1.190]
TASK [roles/ansible-rpi-docker : Installe les paquets nécessaires à l'utilisation d'un dépôt HTTPS] *****************************************************************************************************************************************
Sunday 09 December 2018 01:20:50 +0100 (0:00:03.350) 0:00:03.401 *******
changed: [192.168.1.190] => (item=[u'apt-transport-https', u'ca-certificates', u'curl', u'gnupg2', u'software-properties-common'])
TASK [roles/ansible-rpi-docker : Ajoute la clef officielle du dépôt Docker] ****************************************************************************************************************************************************************
Sunday 09 December 2018 01:21:41 +0100 (0:00:51.274) 0:00:54.675 *******
changed: [192.168.1.190]
TASK [roles/ansible-rpi-docker : Ajoute le dépôt Docker] ***********************************************************************************************************************************************************************************
Sunday 09 December 2018 01:21:46 +0100 (0:00:04.766) 0:00:59.442 *******
changed: [192.168.1.190]
TASK [roles/ansible-rpi-docker : Installe le paquet docker-ce] *****************************************************************************************************************************************************************************
Sunday 09 December 2018 01:21:57 +0100 (0:00:10.451) 0:01:09.893 *******
changed: [192.168.1.190]
TASK [roles/ansible-rpi-docker : Installe python-pip] **************************************************************************************************************************************************************************************
Sunday 09 December 2018 01:23:14 +0100 (0:01:17.283) 0:02:27.177 *******
changed: [192.168.1.190]
TASK [roles/ansible-rpi-docker : Installe docker-compose via pip] **************************************************************************************************************************************************************************
Sunday 09 December 2018 01:24:02 +0100 (0:00:48.630) 0:03:15.807 *******
changed: [192.168.1.190]
TASK [roles/ansible-rpi-docker : Configure Docker pour qu'il démarre au boot] **************************************************************************************************************************************************************
Sunday 09 December 2018 01:24:58 +0100 (0:00:55.582) 0:04:11.390 *******
ok: [192.168.1.190]
TASK [roles/ansible-rpi-docker : Ajoute l'utilisateur pi dans le groupe docker] ************************************************************************************************************************************************************
Sunday 09 December 2018 01:24:59 +0100 (0:00:01.089) 0:04:12.480 *******
changed: [192.168.1.190]
TASK [roles/ansible-rpi-docker : Supprime la swap] *****************************************************************************************************************************************************************************************
Sunday 09 December 2018 01:25:00 +0100 (0:00:01.265) 0:04:13.745 *******
changed: [192.168.1.190]
PLAY RECAP *********************************************************************************************************************************************************************************************************************************
192.168.1.190 : ok=10 changed=8 unreachable=0 failed=0
Sunday 09 December 2018 01:25:02 +0100 (0:00:02.002) 0:04:15.748 *******
===============================================================================
roles/ansible-rpi-docker ---------------------------------------------- 252.35s
setup ------------------------------------------------------------------- 3.35s
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
total ----------------------------------------------------------------- 255.70s
Playbook run took 0 days, 0 hours, 4 minutes, 15 seconds
jls42@boo:~/rpi$
Verification
Connect to the Raspberry Pi to confirm Docker was properly installed
jls42@boo:~/rpi$ ssh pi@192.168.1.190
Linux rpi1 4.14.79-v7+ #1159 SMP Sun Nov 4 17:50:20 GMT 2018 armv7l
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Dec 9 00:25:01 2018 from 192.168.1.42
pi@rpi1:~ $ docker --version
Docker version 18.06.1-ce, build e68fc7a
Enjoy !
This document has been translated from the French version of the blog by the gpt-4-1106-preview model.