arc-ts.docker
Ansible角色:Docker
该角色负责安装和配置Docker引擎,同时支持凭证管理和自定义存储配置。已在CentOS 7.3、Debian Jessie、Ubuntu Trusty和Ubuntu Xenial上测试。RHEL 7.x也有一定支持。
目录
要求
该角色依赖于Ansible 2.2或更高版本以实现全部功能。
注意:版本2.x.x
及以上的角色仅支持YY.MM
样式的发布模式(例如docker-ce-17.03.1
)。对于旧版本(例如docker-engine-1.13.1
),请使用1.x.x
版本的角色。
注意:Docker Inc.不再为其企业版使用公开的可访问存储库。从该角色的2.0.0
版本开始,已去除对企业库管理的支持。然而,它仍然可以管理和安装企业版。
依赖关系
Python库docker
或docker-py
是该角色中安装Docker引擎以外的任何组件的要求。然而,该角色会负责安装正确版本,如果进行了配置。
注意:截至2017年4月13日,Ansible不支持2.0.2
及以上的Python库。对Ansible 2.4版本的支持预计将包含在内。有关更多信息,请参见此GitHub问题:https://github.com/ansible/ansible/issues/22993
角色变量
执行控制
启用或禁用Docker角色的特定组件。
变量名称 | 默认值 | 描述 |
---|---|---|
external_dependency_delay |
20 |
外部依赖重试之间的时间(单位:秒)(存储库、密钥服务器等) |
external_dependency_retries |
6 |
尝试访问外部依赖的重试次数。 |
docker_manage_py |
true |
安装Python Docker库,可以从存储库或pip获取。注意:这对于容器、凭证、镜像和网络管理是必需的。 |
docker_manage_engine_repo |
true |
管理Docker存储库。支持开源和商业支持的存储库。 |
docker_manage_engine_storage |
false |
如果为真,Docker引擎的存储驱动将由角色管理。无需手动提供存储驱动或存储选项。 |
docker_manage_engine_users |
true |
创建和管理一个docker组,该组被授予与Docker交互的权限。 |
docker_manage_registry_credentials |
true |
管理提供的注册表列表的凭证。注意:需要docker库。 |
docker_manage_engine_networks |
true |
启用Docker容器网络的管理。注意:需要docker库。 |
docker_manage_images |
true |
管理容器镜像的生命周期。注意:需要docker库。 |
docker_manage_containers |
true |
启用Docker容器执行的管理。注意:需要docker库。 |
Docker Python库
管理Python Docker库的安装。如果提供的版本为2.0.0
或更高,将移除旧的docker-py
包并安装更新的docker
包替换。
变量 | 默认值 | 选项 | 描述 |
---|---|---|---|
docker_py_install |
pip |
pip 或pkg |
安装类型,可以从pip或软件包进行安装。 |
docker_py_pip_extra_args |
- | - | 在执行过程中传递给pip的额外参数,例如-i <本地pypi镜像> |
docker_py_pip_upgrade |
true |
true 或false |
允许在安装过程中升级pip。 |
docker_py_version |
- | - | 要安装的docker库的版本,默认为最新。 |
Docker引擎库
控制Docker引擎的库配置。
变量名称 | 默认值 | 选项 | 描述 |
---|---|---|---|
docker_engine_architecture |
amd64 |
amd64 或armhf |
指定预期体系结构。注意: armhf 仅在Ubuntu和Debian基础的发行版上支持。 |
docker_engine_channel |
stable |
stable 或edge |
指定是否使用stable 或edge 发布频道。有关更多信息,请参见Docker安装文档 |
docker_engine_edition |
ce |
ce 或ee |
使用社区版(CE)或企业版(EE)。注意: 企业版库不能由角色管理。 |
docker_engine_repo_gpg_key_server |
sks-keyservers.net |
- | 用于验证存储库gpg密钥的密钥服务器。 |
docker_engine_repo_ce_deb_gpg_key |
0x8D81803C0EBFCD88 |
- | 用于CE deb基础存储库的gpg密钥。 |
docker_engine_repo_ce_rpm_gpg_key |
0xc52feb6b621e9f35 |
- | 用于CE rpm基础存储库的gpg密钥。 |
Docker引擎存储配置
管理Docker引擎的存储驱动,以及在某些情况下其底层存储。比较不同的存储选项超出了本文档的范围;不过可以在这里找到进一步的信息:https://docs.docker.com/engine/userguide/storagedriver/selectadriver/.
注意:对于所有存储驱动,storage_opts
必须以项数组的形式传递。有关每个驱动的可用和特定存储选项的更多信息,请参见这里的文档:https://docs.docker.com/v1.10/engine/reference/commandline/daemon/
存储支持矩阵:
aufs | btrfs | devicemapper (lvm-direct) | overlay | overlay2 | |
---|---|---|---|---|---|
CentOS 7.3 | - | x | x | x | - |
Debian 8 (Jessie) | x | x | - | - | - |
RHEL 7.3 | - | x | x | x | - |
Ubuntu 14.04 (Trusty) | x | x | - | - | - |
Ubuntu 16.04 (Xenial) | x | x | - | x | x |
变量名称 | 默认值 | 选项 | 描述 |
---|---|---|---|
docker_engine_storage_driver |
- | aufs , btrfs , devicemapper 和overlay |
用于Docker引擎的存储驱动 |
docker_engine_storage_config |
- | - | 包含由docker_engine_storage_driver 提供的驱动程序信息的哈希 |
aufs
变量名称 | 默认值 | 描述 |
---|---|---|
docker_engine_storage_driver |
aufs |
- |
graph |
/var/lib/docker |
Docker运行时的根目录 |
storage_opts |
- | 传递给Docker守护进程的可选存储选项 |
btrfs
变量名称 | 默认值 | 描述 |
---|---|---|
docker_engine_storage_driver |
btrfs |
- |
device |
- | 必需计划用于Docker并由Docker管理的设备或分区(例如/dev/sdb )。 |
graph |
/var/lib/docker |
Docker运行时的根目录 |
mkfs_opts |
- | 在创建卷时传递给mkfs.btrfs 的附加参数 |
mount_opts |
defaults |
用于btrfs Docker卷的挂载参数 |
storage_opts |
- | 传递给Docker守护进程的可选存储选项 |
devicemapper (lvm-direct)
注意:在创建thinpool时并非所有错误都能够被正确捕获。如果在lvm配置结束时检测到未正确设置,则会有一个验证任务会提前终止。要再次运行该角色,必须手动删除lvm卷组(vgremove <vgname>
)。这是为了防止任何意外的数据丢失。
变量名称 | 默认值 | 描述 |
---|---|---|
docker_engine_storage_driver |
devicemapper |
- |
device |
- | 必需计划用于Docker并由Docker管理的设备或分区(例如/dev/sdb )。 |
vg_name |
docker-vg |
Docker卷组的名称。 |
vg_opts |
- | 创建卷组时使用的可选参数。 |
lv_name |
thinpool |
逻辑卷thinpool名称。 |
lv_data_opts |
--wipesignatures y |
在创建数据逻辑卷时传递的参数。 |
lv_metadata_opts |
--wipesignatures y |
在创建元数据逻辑卷时传递的参数。 |
thinpool_autoextend_threshold |
80 |
定义何时应该扩展thin pool逻辑卷的满值百分比。 |
thinpool_autoextend_percent |
20 |
追加到thin pool逻辑卷的额外空间百分比(根据其当前大小计算)。 |
data_share |
95 |
分配给数据逻辑卷的卷组空间的百分比。 |
metadata_share |
1 |
分配给元数据逻辑卷的卷组空间的百分比。 |
storage_opts |
['dm.use_deferred_removal=true'] |
传递给Docker守护进程的可选存储选项 |
overlay
变量名称 | 默认值 | 描述 |
---|---|---|
docker_engine_storage_driver |
overlay |
- |
graph |
/var/lib/docker |
Docker运行时的根目录 |
storage_opts |
- | 传递给Docker守护进程的可选存储选项 |
overlay2
变量名称 | 默认值 | 描述 |
---|---|---|
docker_engine_storage_driver |
overlay2 |
- |
graph |
/var/lib/docker |
Docker运行时的根目录 |
storage_opts |
- | 传递给Docker守护进程的可选存储选项 |
Docker引擎
这些参数控制Docker引擎及其守护进程。
注意:如果启用了docker_manage_engine_storage
,则不应在docker_engine_opts
哈希中提供storage-opt
,而应通过docker_engine_storage_config.storage_opts
进行控制。
变量名称 | 默认值 | 描述 |
---|---|---|
docker_engine_version |
- | 要安装的Docker引擎版本。如果未提供,将安装最新版本。 |
docker_engine_env_vars |
- | 将作为环境变量传递给Docker引擎的键值对的哈希。 |
docker_engine_opts |
- | 一组由Docker引擎选项使用的键-数组值对的哈希。例如:dns: [ '8.8.8.8', '8.8.4.4'] |
Docker引擎用户和组
管理主机上对docker组的访问。
变量名称 | 默认值 | 描述 |
---|---|---|
docker_engine_users |
- | 要添加到docker组的用户名数组。这些用户将能够执行docker而不需要sudo权限。 |
Docker引擎注册凭证
管理对Docker注册表的身份验证。配置通过多个包含可用选项的哈希的数组提供。有关所有选项和默认值的完整列表,请参见Ansible文档中关于docker_login模块的内容。
变量名称 | 描述 |
---|---|
docker_registry_credentials |
包含Docker注册表配置的哈希数组。 |
容器网络
管理Docker网络的创建和删除。网络通过包含Docker网络模块可用选项的数组中的哈希来管理。有关所有选项和默认值的完整列表,请参见Ansible文档中关于docker_network模块的内容。
变量名称 | 描述 |
---|---|
docker_networks |
包含Docker网络配置的哈希数组。 |
容器镜像
管理容器镜像生命周期的各个方面。镜像通过包含容器镜像配置的哈希数组进行管理。有关可用选项的参考,请参见Ansible文档中关于docker_image模块的内容。
变量名称 | 描述 |
---|---|
docker_images |
包含Docker镜像配置的哈希数组。 |
容器执行
管理容器的运行时执行。容器通过包含容器配置的哈希数组进行管理。有关可用选项的参考,请参见Ansible文档中关于docker_container模块的内容。
变量名称 | 描述 |
---|---|
docker_containers |
包含Docker容器配置的哈希数组。 |
示例剧本
可以在测试目录中找到多种示例。
---
- name: docker
hosts: all
connection: local
gather_facts: True
tags:
- 'docker'
vars:
docker_manage_py: true
docker_manage_engine_repo: true
docker_manage_engine_storage: true
docker_manage_engine_users: true
docker_manage_registry_credentials: true
docker_manage_images: true
docker_manage_containers: true
docker_engine_version: '1.12.1'
docker_engine_storage_driver: devicemapper
docker_engine_storage_config:
device: /dev/sdb
docker_engine_env_vars:
DOCKER_HOST: /var/run/docker.sock
TLS_VERIFY: TRUE
docker_engine_opts:
dns:
- '8.8.8.8'
- '8.8.4.4'
docker_engine_users:
- vagrant
docker_registry_credentials:
- username: test
password: testpass
registry: registry.example.com
docker_images:
- name: nginx
tag: '1.10.1-alpine'
docker_containers:
- name: nginx
image: 'nginx:1.10.1-alpine'
docker_networks:
- name: testnet
driver_options:
com.docker.network.bridge.name: testnet1
ipam_options:
subnet: '10.255.13.1/24'
gateway: '10.255.13.1'
测试和贡献
有关贡献的更多信息,请参见存储库中的CONTRIBUTING.md文档。
许可证
MIT
作者信息
由Bob Killen创建,由密歇根大学高级研究计算和技术服务部门维护。