community.docker.docker_network 模块 – 管理 Docker 网络

注意

此模块是 community.docker 集合(版本 4.1.0)的一部分。

如果您正在使用 ansible 包,您可能已经安装了此集合。它不包含在 ansible-core 中。要检查是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install community.docker。您需要进一步的要求才能使用此模块,请参阅 要求 以了解详细信息。

要在 playbook 中使用它,请指定:community.docker.docker_network

概要

  • 创建/删除 Docker 网络并将容器连接到它们。

  • 执行的功能与 docker network CLI 子命令基本相同。

要求

以下要求需要在执行此模块的主机上满足。

  • Docker API >= 1.25

  • backports.ssl_match_hostname(在 Python 2 上使用 TLS 时)

  • paramiko(当使用 SSH 和 use_ssh_client=false 时)

  • pyOpenSSL(当使用 TLS 时)

  • pywin32(当在 Windows 32 上使用命名管道时)

  • requests

参数

参数

注释

api_version

别名:docker_api_version

字符串

Docker 主机上运行的 Docker API 版本。

默认为此集合和 docker 守护程序支持的最新版本的 API。

如果未在任务中指定该值,则将使用环境变量 DOCKER_API_VERSION 的值。如果未设置环境变量,则将使用默认值。

默认值: "auto"

appends

别名:incremental

布尔值

默认情况下,连接列表是规范的,这意味着不在列表中的容器将从网络中删除。

使用 appends 保留已连接的现有容器。

选项

  • false ← (默认)

  • true

attachable

布尔值

如果启用,并且网络在全局范围内,则工作节点上的非服务容器将能够连接到该网络。

选项

  • false

  • true

ca_path

别名:ca_cert、tls_ca_cert、cacert_path

路径

通过提供 CA 证书文件的路径,在使用服务器验证时使用 CA 证书。

如果未在任务中指定该值,并且设置了环境变量 DOCKER_CERT_PATH,则将使用环境变量 DOCKER_CERT_PATH 中指定的目录中的文件 ca.pem

此选项曾被称为 ca_cert,并在 community.docker 3.6.0 中重命名为 ca_path。旧名称已添加为别名,并且仍然可以使用。

client_cert

别名: tls_client_cert, cert_path

路径

客户端 TLS 证书文件的路径。

如果任务中未指定该值,并且设置了环境变量 DOCKER_CERT_PATH,则将使用环境变量 DOCKER_CERT_PATH 指定的目录中的 cert.pem 文件。

client_key

别名: tls_client_key, key_path

路径

客户端 TLS 密钥文件的路径。

如果任务中未指定该值,并且设置了环境变量 DOCKER_CERT_PATH,则将使用环境变量 DOCKER_CERT_PATH 指定的目录中的 key.pem 文件。

config_from

字符串

在 community.docker 3.10.0 中添加

指定要从中获取配置的仅配置网络。

config_only

布尔值

在 community.docker 3.10.0 中添加

设置这是一个仅配置网络。

选项

  • false

  • true

connected

别名: containers

列表 / 元素=字符串

要连接到网络的容器名称或容器 ID 的列表。

请注意,该模块仅确保这些容器已连接到网络,但不关心连接选项。如果您依赖特定的 IP 地址等,请使用 community.docker.docker_container 模块来确保您的容器正确连接到此网络。

默认值: []

debug

布尔值

调试模式

选项

  • false ← (默认)

  • true

docker_host

别名: docker_url

字符串

用于连接到 Docker API 的 URL 或 Unix 套接字路径。 要连接到远程主机,请提供 TCP 连接字符串。 例如,tcp://192.0.2.23:2376。 如果使用 TLS 加密连接,模块将自动将连接 URL 中的 tcp 替换为 https

如果任务中未指定该值,则将使用环境变量 DOCKER_HOST 的值。 如果未设置环境变量,则将使用默认值。

默认值: "unix:///var/run/docker.sock"

driver

字符串

指定网络类型。 Docker 提供桥接和覆盖驱动程序,但也可以使用第三方驱动程序。

默认值: "bridge"

driver_options

字典

网络设置的字典。 请查阅 docker 文档以获取有效的选项和值。

默认值: {}

enable_ipv6

布尔值

启用 IPv6 网络。

选项

  • false

  • true

force

布尔值

当状态为 absent 时,强制断开所有容器与网络的连接,然后再删除网络。当状态为 present 时,将断开所有容器的连接,删除网络并重新创建网络。

如果您已更改 IPAM 或驱动程序选项,并且希望更新现有网络以使用新选项,则此选项是必需的。

选项

  • false ← (默认)

  • true

internal

布尔值

限制对网络的外部访问。

选项

  • false

  • true

ipam_config

列表 / 元素=字典

IPAM 配置块的列表。 请查阅 Docker 文档 以获取有效的选项和值。 请注意,这里的 ipam_config[].iprange 的拼写不同(我们使用来自 Python 的 Docker SDK 的表示法)。

aux_addresses

字典

网络驱动程序使用的辅助 IP 地址,作为主机名到 IP 的映射。

gateway

字符串

IP 网关地址。

iprange

字符串

CIDR 表示法中的 IP 地址范围。

subnet

字符串

CIDR 表示法中的 IP 子集。

ipam_driver

字符串

指定 IPAM 驱动程序。

ipam_driver_options

字典

IPAM 驱动程序选项的字典。

labels

字典

标签的字典。

默认值: {}

name

别名: network_name

字符串 / 必需

要操作的网络的名称。

scope

字符串

指定网络的范围。

选项

  • "local"

  • "global"

  • "swarm"

state

字符串

absent 删除网络。 如果网络已连接容器,则无法删除。 使用 force 选项断开所有容器的连接并删除网络。

present 创建网络(如果该网络尚不存在,并且具有指定的参数),并连接通过 connected 参数提供的容器列表。 未在列表中的容器将被断开连接。 空列表将不会使任何容器连接到网络。 使用 appends 选项以保留已连接的现有容器。使用 force 选项强制重新创建网络。

选项

  • "absent"

  • "present" ←(默认)

timeout

整数

等待来自 API 的响应的最大时间(以秒为单位)。

如果任务中未指定该值,则将使用环境变量 DOCKER_TIMEOUT 的值。 如果未设置环境变量,则将使用默认值。

默认值: 60

tls

布尔值

通过使用 TLS 来保护与 API 的连接,而不验证 Docker 主机服务器的真实性。 请注意,如果还将 validate_certs 设置为 true,则它将优先。

如果任务中未指定该值,则将使用环境变量 DOCKER_TLS 的值。 如果未设置环境变量,则将使用默认值。

选项

  • false ← (默认)

  • true

tls_hostname

字符串

验证 Docker 主机服务器的真实性时,请提供服务器的预期名称。

如果任务中未指定该值,则将使用环境变量 DOCKER_TLS_HOSTNAME 的值。 如果未设置环境变量,则将使用默认值。

请注意,此选项在较旧的版本中的默认值为 localhost。 它已在 community.docker 3.0.0 中删除。

use_ssh_client

布尔值

在 community.docker 1.5.0 中添加

对于 SSH 传输,请使用 ssh CLI 工具而不是 paramiko。

选项

  • false ← (默认)

  • true

validate_certs

别名: tls_verify

布尔值

通过使用 TLS 并验证 Docker 主机服务器的真实性来保护与 API 的连接。

如果任务中未指定该值,则将使用环境变量 DOCKER_TLS_VERIFY 的值。 如果未设置环境变量,则将使用默认值。

选项

  • false ← (默认)

  • true

属性

属性

支持

描述

action_group

操作组: community.docker.docker, docker

module_defaults 中使用 group/dockergroup/community.docker.docker 设置此模块的默认值。

check_mode

支持: 完全

可以在 check_mode 中运行,并返回更改状态预测,而无需修改目标。

diff_mode

支持: 完全

当处于 diff 模式时,将返回有关已更改内容(或可能需要在 check_mode 中更改的内容)的详细信息。

注释

注意

  • 更改网络选项时,该模块将断开所有容器与网络的连接,删除网络并重新创建网络。 它不会尝试重新连接容器,除了在 (connected 中列出的容器,即使对于这些容器,它也不考虑诸如固定 IP 地址或 MAC 地址之类的特定连接选项。 如果您需要更好地控制容器如何连接到网络,请循环使用 community.docker.docker_container 模块来循环遍历您的容器,以确保它们已正确连接。

  • 该模块不支持 Docker Swarm。 这意味着它不会尝试断开或重新连接服务。 如果服务已连接到网络,则删除网络将失败。 更改网络选项时,必须删除并重新创建网络,因此也会失败。

  • 可以通过在每个任务中提供参数或定义环境变量来连接 Docker 守护进程。您可以定义 DOCKER_HOST, DOCKER_TLS_HOSTNAME, DOCKER_API_VERSION, DOCKER_CERT_PATH, DOCKER_TLS, DOCKER_TLS_VERIFYDOCKER_TIMEOUT。如果您正在使用 docker machine,请运行产品附带的脚本来设置环境。它会为您设置这些变量。有关更多详细信息,请参阅 https://docs.docker.net.cn/machine/reference/env/

  • 此模块使用 Docker Python SDK 与 Docker 守护进程通信。它使用来自 Docker SDK 或 Python 的代码,这些代码包含在此集合中。

示例

- name: Create a network
  community.docker.docker_network:
    name: network_one

- name: Remove all but selected list of containers
  community.docker.docker_network:
    name: network_one
    connected:
      - container_a
      - container_b
      - container_c

- name: Remove a single container
  community.docker.docker_network:
    name: network_one
    connected: "{{ fulllist|difference(['container_a']) }}"

- name: Add a container to a network, leaving existing containers connected
  community.docker.docker_network:
    name: network_one
    connected:
      - container_a
    appends: true

- name: Create a network with driver options
  community.docker.docker_network:
    name: network_two
    driver_options:
      com.docker.network.bridge.name: net2

- name: Create a network with custom IPAM config
  community.docker.docker_network:
    name: network_three
    ipam_config:
      - subnet: 172.23.27.0/24
        gateway: 172.23.27.2
        iprange: 172.23.27.0/26
        aux_addresses:
          host1: 172.23.27.3
          host2: 172.23.27.4

- name: Create a network with labels
  community.docker.docker_network:
    name: network_four
    labels:
      key1: value1
      key2: value2

- name: Create a network with IPv6 IPAM config
  community.docker.docker_network:
    name: network_ipv6_one
    enable_ipv6: true
    ipam_config:
      - subnet: fdd1:ac8c:0557:7ce1::/64

- name: Create a network with IPv6 and custom IPv4 IPAM config
  community.docker.docker_network:
    name: network_ipv6_two
    enable_ipv6: true
    ipam_config:
      - subnet: 172.24.27.0/24
      - subnet: fdd1:ac8c:0557:7ce2::/64

- name: Delete a network, disconnecting all containers
  community.docker.docker_network:
    name: network_one
    state: absent
    force: true

返回值

通用返回值记录在 此处,以下是此模块特有的字段

描述

network

字典

受影响网络的网络检查结果。

返回: 成功

示例: {}

作者

  • Ben Keith (@keitwb)

  • Chris Houseknecht (@chouseknecht)

  • Dave Bendit (@DBendit)