本文提出了使用 Ansible 自动安装 Raspberry Pi 上的 Docker,并使用自制角色

先决条件

Docker 安装

角色获取 我已经开发了一个 ansible 角色用于此自动化,如下所示获取它:

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

有关更多详细信息,请参阅ansible-rpi-docker 的文档。

创建名为 inventory 的清单文件 在此清单示例中,Raspberry Pi 具有 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$

验证

连接到 Raspberry Pi 以确认 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

Enjoy!

**这份文件已由模型名为 “mistral-medium” 翻译自法文版本。

Note: This translation will be most accurate if the reader already knows that “ce document” refers to the document they are currently reading or viewing. If that is not the case, additional context or modifications to the sentence may be necessary for clarity.**