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库dockerdocker-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 pippkg 安装类型,可以从pip或软件包进行安装。
docker_py_pip_extra_args - - 在执行过程中传递给pip的额外参数,例如-i <本地pypi镜像>
docker_py_pip_upgrade true truefalse 允许在安装过程中升级pip。
docker_py_version - - 要安装的docker库的版本,默认为最新。

Docker引擎库

控制Docker引擎的库配置。

变量名称 默认值 选项 描述
docker_engine_architecture amd64 amd64armhf 指定预期体系结构。注意: armhf仅在Ubuntu和Debian基础的发行版上支持。
docker_engine_channel stable stableedge 指定是否使用stableedge发布频道。有关更多信息,请参见Docker安装文档
docker_engine_edition ce ceee 使用社区版(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, devicemapperoverlay 用于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创建,由密歇根大学高级研究计算和技术服务部门维护。

关于项目

Installs and Manages the Docker Engine. Has support for managing Commercial vs Open Source, Storage, Credentialing and more.

安装
ansible-galaxy install arc-ts.docker
许可证
mit
下载
72
拥有者