本文介绍了如何通过Ansible自动在树莓派上安装docker,该过程使用了一个自制的角色

前提条件

安装Docker

获取角色
我开发了一个ansible角色来实现这一自动化,以下是如何获取它:

git clone https://gitlab.com/jls42/ansible-rpi-docker.git roles/ansible-rpi-docker

要了解更多信息,请阅读 ansible-rpi-docker 上的文档。

创建名为inventory的清单文件
在这个示例清单中,树莓派的IP为192.168.1.190

[rpi1] 192.168.1.190 servername=rpi1

准备docker-rpi.yml剧本

--- - 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

部署Docker

export ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook -b -i inventory docker-rpi.yml

结果如下:

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$

验证

连接到树莓派,确认Docker是否安装正确

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

享受吧!

此文档已由 gpt-4-1106-preview 模型从法文博客版本翻译而来。