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 和 overlay 驱动程序,但也可以使用第三方驱动程序。

默认值:"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

支持:完全支持

在差异模式下,将返回有关已更改内容(或可能需要在check_mode中更改)的详细信息。

注释

注意

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

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

  • 通过为每个任务提供参数或定义环境变量来连接到 Docker daemon。您可以定义DOCKER_HOSTDOCKER_TLS_HOSTNAMEDOCKER_API_VERSIONDOCKER_CERT_PATHDOCKER_TLSDOCKER_TLS_VERIFYDOCKER_TIMEOUT。如果您使用的是 docker machine,请运行产品附带的设置环境的脚本。它将为您设置这些变量。更多详情请参见 https://docs.docker.net.cn/machine/reference/env/

  • 此模块**不**使用 Docker SDK for Python 与 Docker daemon 通信。它使用来自 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

返回值

常见返回值已在 此处 记录,以下是此模块特有的字段

描述

网络

字典

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

返回:成功

示例: {}

作者

  • Ben Keith (@keitwb)

  • Chris Houseknecht (@chouseknecht)

  • Dave Bendit (@DBendit)