community.docker.docker_config 模块 – 管理 Docker 配置。
注意
此模块是 community.docker 集合 (版本 4.1.0) 的一部分。
如果您使用的是 ansible
软件包,则可能已经安装了此集合。它不包含在 ansible-core
中。要检查它是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用: ansible-galaxy collection install community.docker
。您需要其他需求才能使用此模块,请参阅 需求 以了解详情。
要在 playbook 中使用它,请指定: community.docker.docker_config
。
概要
在 Swarm 环境中创建和删除 Docker 配置。类似于
docker config create
和docker config rm
。向新配置的元数据中添加“ansible_key”,这是一个加密的哈希数据表示,然后在以后的运行中用于测试配置是否已更改。如果不存在“ansible_key”,则除非设置了
force
选项,否则不会更新配置。配置的更新是通过删除配置并重新创建它来执行的。
需求
执行此模块的主机需要以下需求。
Docker API >= 1.30
Python 的 Docker SDK:请注意,docker-py Python 模块已被 docker 取代(请参阅 此处 以了解详情)。此模块*不*支持 docker-py。
Python 的 Docker SDK >= 2.6.0
Python >= 2.7
参数
参数 |
注释 |
---|---|
Docker 主机上运行的 Docker API 的版本。 默认为 Python 的 Docker SDK 和 docker 守护程序支持的最新 API 版本。 如果任务中未指定此值,则将使用环境变量 默认值: |
|
通过提供 CA 证书文件的路径来执行服务器验证时使用 CA 证书。 如果任务中未指定此值并且设置了环境变量 此选项以前称为 |
|
客户端 TLS 证书文件的路径。 如果任务中未指定值且环境变量 |
|
客户端 TLS 密钥文件的路径。 如果任务中未指定值且环境变量 |
|
配置的值。 与 |
|
目标上读取配置的文件。 与 |
|
调试模式 选项
|
|
用于连接到 Docker API 的 URL 或 Unix 套接字路径。要连接到远程主机,请提供 TCP 连接字符串。例如, 如果任务中未指定值,则将使用环境变量 默认值: |
|
键值元数据的映射,其中 如果提供新的元数据或修改现有元数据,则配置将通过删除它并重新创建它来更新。 |
|
配置的名称。 |
|
如果设置为 向托管的配置添加包含版本号的标签,名称为 选项
|
|
如果配置应该存在,则设置为 选项
|
|
通过使用 TLS 安全连接到 API,而无需验证 Docker 主机服务器的真实性。请注意,如果 如果任务中未指定值,则将使用环境变量 选项
|
|
验证 Docker 主机服务器的真实性时,请提供服务器的预期名称。 如果任务中未指定值,则将使用环境变量 请注意,此选项在较旧的版本中具有默认值 注意:此选项不再支持 Docker SDK for Python 7.0.0+。使用 Docker SDK for Python 7.0.0 或更高版本指定它会导致错误。 |
|
对于 SSH 传输,请使用 需要 Docker SDK for Python 4.4.0 或更高版本。 选项
|
|
通过使用 TLS 并验证 Docker 主机服务器的真实性来保护与 API 的连接。 如果任务中未指定值,则将使用环境变量 选项
|
|
属性
属性 |
支持 |
描述 |
---|---|---|
动作组: community.docker.docker, docker |
在 |
|
支持:完全支持 |
可以在 |
|
支持:不支持 |
在差异模式下,将返回有关已更改内容(或可能需要在 |
备注
注意
通过为每个任务提供参数或定义环境变量来连接到Docker守护进程。您可以定义
DOCKER_HOST
,DOCKER_TLS_HOSTNAME
,DOCKER_API_VERSION
,DOCKER_CERT_PATH
,DOCKER_TLS
,DOCKER_TLS_VERIFY
和DOCKER_TIMEOUT
。如果您正在使用docker machine,请运行产品附带的设置环境的脚本。它将为您设置这些变量。有关更多详细信息,请参见https://docs.docker.net.cn/machine/reference/env/。当使用TLS连接到Docker守护进程时,您可能需要安装额外的Python包。对于Python的Docker SDK,2.4版或更高版本,可以使用ansible.builtin.pip安装
docker[tls]
来完成此操作。请注意,Python 的 Docker SDK 仅允许为极少数函数指定 Docker 配置的路径。通常,如果未指定
DOCKER_CONFIG
环境变量,它将使用$HOME/.docker/config.json
,否则将使用$DOCKER_CONFIG/config.json
。此模块使用Python 的 Docker SDK与 Docker 守护进程进行通信。
示例
- name: Create config foo (from a file on the control machine)
community.docker.docker_config:
name: foo
# If the file is JSON or binary, Ansible might modify it (because
# it is first decoded and later re-encoded). Base64-encoding the
# file directly after reading it prevents this to happen.
data: "{{ lookup('file', '/path/to/config/file') | b64encode }}"
data_is_b64: true
state: present
- name: Create config foo (from a file on the target machine)
community.docker.docker_config:
name: foo
data_src: /path/to/config/file
state: present
- name: Change the config data
community.docker.docker_config:
name: foo
data: Goodnight everyone!
labels:
bar: baz
one: '1'
state: present
- name: Add a new label
community.docker.docker_config:
name: foo
data: Goodnight everyone!
labels:
bar: baz
one: '1'
# Adding a new label will cause a remove/create of the config
two: '2'
state: present
- name: No change
community.docker.docker_config:
name: foo
data: Goodnight everyone!
labels:
bar: baz
one: '1'
# Even though 'two' is missing, there is no change to the existing config
state: present
- name: Update an existing label
community.docker.docker_config:
name: foo
data: Goodnight everyone!
labels:
bar: monkey # Changing a label will cause a remove/create of the config
one: '1'
state: present
- name: Force the (re-)creation of the config
community.docker.docker_config:
name: foo
data: Goodnight everyone!
force: true
state: present
- name: Remove config foo
community.docker.docker_config:
name: foo
state: absent
返回值
常见的返回值已在此处记录,以下是此模块特有的字段
键 |
描述 |
---|---|