community.docker.docker_containers清单 – Docker容器的Ansible动态清单插件
注意
此清单插件是community.docker集合 (版本4.1.0)的一部分。
如果您使用的是ansible
包,则可能已经安装了此集合。它不包含在ansible-core
中。要检查它是否已安装,请运行ansible-galaxy collection list
。
要安装它,请使用:ansible-galaxy collection install community.docker
。您需要其他需求才能使用此清单插件,请参阅需求了解详情。
要在playbook中使用它,请指定:community.docker.docker_containers
。
community.docker 1.1.0中的新增功能
概要
从Docker API读取清单。
使用以
docker.(yml|yaml)
结尾的YAML配置文件。
需求
以下需求是在执行此清单的本地控制器节点上所需的。
requests
pywin32(在Windows 32上使用命名管道时)
paramiko(当使用SSH且
use_ssh_client=false
时)pyOpenSSL(当使用TLS时)
backports.ssl_match_hostname(在Python 2上使用TLS时)
参数
参数 |
注释 |
---|---|
添加与
如果未将其设置为 选项
|
|
Docker主机上运行的Docker API的版本。 默认为此集合和docker守护程序支持的最新API版本。 如果任务中未指定此值,则将改用环境变量 默认值: |
|
使用CA证书进行服务器验证,方法是提供CA证书文件的路径。 如果任务中未指定该值,并且环境变量 此选项以前称为 |
|
客户端TLS证书文件的路径。 如果任务中未指定该值,并且环境变量 |
|
客户端TLS密钥文件的路径。 如果任务中未指定该值,并且环境变量 |
|
从jinja2表达式创建变量。 默认值: |
|
使用哪种连接类型连接容器。 连接容器的一种方法是使用SSH( 或者, 当使用 请注意,community.docker.docker_api **不适用于TCP TLS套接字**!有关更多信息,请参见https://github.com/ansible-collections/community.docker/issues/605。 选项
|
|
调试模式 选项
|
|
用于连接到Docker API的URL或Unix套接字路径。要连接到远程主机,请提供TCP连接字符串。例如, 如果任务中未指定该值,则将使用环境变量 默认值: |
|
允许选择/取消选择此清单主机的包含/排除筛选器列表。 顺序处理筛选器,直到找到 |
|
一个Jinja2条件。如果它与主机匹配,则**排除**该主机。 可以指定 |
|
一个Jinja2条件。如果它与主机匹配,则**包含**该主机。 可以指定 |
|
基于Jinja2条件将主机添加到组。 默认值: |
|
基于变量的值将主机添加到组。 默认值: |
|
主机变量的值为空字符串时的默认值。 |
|
用于生成组的输入字典中的键 |
|
键控组的父组 |
|
键控组名称将以此前缀开头 默认值: |
|
用于构建键控组名称的分隔符 默认值: |
|
将此选项设置为 此选项与 选项
|
|
与keyed_groups结合使用。 默认情况下,没有提供前缀或分隔符的键控组的名称将以下划线开头。 这是因为默认前缀为“”而默认分隔符为“_”。 如果未给出前缀,请将此选项设置为False以省略前导下划线(或其他分隔符)。 如果组名称来自映射,则分隔符仍用于连接项目。 要完全不使用组名称中的分隔符,请将键控组的分隔符设置为空字符串。 选项
|
|
此插件的名称,对于此插件将其识别为其自身,应始终设置为 选项
|
|
如果 由于可以在表达式中使用事实,因此它们可能并不总是可用,因此我们默认忽略这些错误。 选项
|
|
使用 TLS 加密与 API 的连接,但不验证 Docker 主机服务器的身份。请注意,如果 如果任务中未指定此值,则将使用环境变量 选项
|
|
验证 Docker 主机服务器身份时,提供服务器的预期名称。 如果任务中未指定此值,则将使用环境变量 请注意,此选项在早期版本中的默认值为 |
|
将额外的变量合并到可用于组合的变量中(最高优先级)。 选项
配置
|
|
对于 SSH 传输,使用 选项
|
|
使用 TLS 加密与 API 的连接,并验证 Docker 主机服务器的身份。 如果任务中未指定此值,则将使用环境变量 选项
|
|
切换是否包含所有可用的检查元数据。 请注意,所有顶级键都将转换为 如果这是
选项
|
备注
注意
配置文件必须是 YAML 文件,文件名以
docker.yml
或docker.yaml
结尾。其他文件名将不被接受。通过为每个任务提供参数或定义环境变量来连接到 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/。此模块**不**使用 Docker SDK for Python 与 Docker 守护程序通信。它使用源自 Docker SDK 或 Python 的代码,这些代码包含在此集合中。
示例
# Minimal example using local Docker daemon
plugin: community.docker.docker_containers
docker_host: unix:///var/run/docker.sock
# Minimal example using remote Docker daemon
plugin: community.docker.docker_containers
docker_host: tcp://my-docker-host:2375
# Example using remote Docker daemon with unverified TLS
plugin: community.docker.docker_containers
docker_host: tcp://my-docker-host:2376
tls: true
# Example using remote Docker daemon with verified TLS and client certificate verification
plugin: community.docker.docker_containers
docker_host: tcp://my-docker-host:2376
validate_certs: true
ca_path: /somewhere/ca.pem
client_key: /somewhere/key.pem
client_cert: /somewhere/cert.pem
# Example using constructed features to create groups
plugin: community.docker.docker_containers
docker_host: tcp://my-docker-host:2375
strict: false
keyed_groups:
# Add containers with primary network foo to a network_foo group
- prefix: network
key: 'docker_hostconfig.NetworkMode'
# Add Linux hosts to an os_linux group
- prefix: os
key: docker_platform
# Example using SSH connection with an explicit fallback for when port 22 has not been
# exported: use container name as ansible_ssh_host and 22 as ansible_ssh_port
plugin: community.docker.docker_containers
connection_type: ssh
compose:
ansible_ssh_host: ansible_ssh_host | default(docker_name[1:], true)
ansible_ssh_port: ansible_ssh_port | default(22, true)
# Only consider containers which have a label 'foo', or whose name starts with 'a'
plugin: community.docker.docker_containers
filters:
# Accept all containers which have a label called 'foo'
- include: >-
"foo" in docker_config.Labels
# Next accept all containers whose inventory_hostname starts with 'a'
- include: >-
inventory_hostname.startswith("a")
# Exclude all containers that didn't match any of the above filters
- exclude: true