f5networks.f5_modules.bigip_pool_member 模块 – 管理 F5 BIG-IP LTM 池成员

注意

此模块是 f5networks.f5_modules 集合 (版本 1.32.1) 的一部分。

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

要安装它,请使用: ansible-galaxy collection install f5networks.f5_modules

要在剧本中使用它,请指定: f5networks.f5_modules.bigip_pool_member

f5networks.f5_modules 1.0.0 中的新增功能

概要

  • 通过 REST API 管理 F5 BIG-IP LTM 池成员。

参数

参数

注释

address

别名:ip,host

字符串

池成员的 IP 地址。可以是 IPv4 或 IPv6。创建新的池成员时,必须提供 addressfqdn 之一。此参数设置后无法更新。

aggregate

别名:members

列表 / 元素=字典

要创建、修改或删除的池成员定义列表。

使用 aggregates 时,如果其中一个聚合定义无效,则聚合运行将失败,并指示其最后遇到的错误。

模块将**不会**回滚其在遇到错误之前所做的任何更改。

模块也不会指示在失败之前进行了哪些更改。因此,我们强烈建议您在 check 模式下运行模块,以确保在执行此模块之前进行基本验证。

address

别名:ip,host

字符串

池成员的 IP 地址。可以是 IPv4 或 IPv6。创建新的池成员时,必须提供 addressfqdn 之一。此参数设置后无法更新。

availability_requirements

字典

如果您激活了多个运行状况监控器,则指定必须接收成功响应才能将链接视为可用的运行状况监控器的数量。

指定空字符串将删除监控器并恢复为从池继承(默认值)。

指定 none 将完全从成员中删除任何运行状况监控。

at_least

整数

指定在将链接视为已启动之前必须成功的活动运行状况监控器的最小数量。

此参数仅在使用 typeat_least 时才相关。

如果使用 all 类型,则将忽略此参数。

type

字符串 / 必需

指定 monitors 时的监控规则类型。

创建新池时,如果未指定此值,则将使用默认值 all

选项

  • "all"

  • "at_least"

connection_limit

整数

池成员连接限制。将其设置为 0 将禁用限制。

description

字符串

池成员描述。

fqdn

别名:hostname

字符串

池成员的 FQDN 名称。这可以是任何有效的 RFC 1123 DNS 名称。因此,唯一可用的字符是“A”到“Z”,“a”到“z”,“0”到“9”,连字符(“-”)和句点(“.”)。

FQDN 名称必须包含至少一个句点;将主机与域分隔开。例如,host.domain

FQDN 名称必须以字母或数字结尾。

创建新的池成员时,必须提供 addressfqdn 之一。此参数设置后无法更新。

fqdn_auto_populate

布尔值

指定系统是否使用由对由 FQDN 定义的节点的 DNS 查询返回的 IP 地址自动创建临时节点。

true 时,系统会为响应 FQDN 的 DNS 查询而返回的每个 IP 地址生成一个临时节点。此外,当 DNS 响应指示临时节点的 IP 地址不再存在时,系统将删除该临时节点。

false 时,系统使用与 FQDN 关联的单个 IP 地址解析节点 FQDN 的 DNS 查询。

创建新的池成员时,此参数的默认值为 true

设置此参数后,之后无法更改。

reuse_nodestrue 时,忽略此参数。

选项

  • false

  • true

ip_encapsulation

字符串

指定出站数据包(从 BIG-IP 系统到服务器池成员)的 IP 封装,可以使用 IPIP(IP 在 IP 中的封装,RFC 2003)或 GRE(通用路由器封装,RFC 2784)。

none 时,禁用 IP 封装。

inherit 时,从成员的池继承 IP 封装设置。

当为任何其他值时,选项包括无、从池继承和成员特定。

monitors

列表 / 元素=字符串

指定系统当前用于监视此资源的健康检查器。

name

字符串

创建新的池成员时要创建或重复使用的节点的名称。

虽然此参数是可选的,但我们建议始终指定此参数以减轻任何意外行为。

如果未指定,则会根据指定的 addressfqdn 自动创建节点名称。

enabled 状态是 present 的别名。

partition

字符串

用于管理资源的分区。

默认值: "Common"

port

整数

池成员端口。

设置此值后,无法更改。

使用聚合时必须提供此参数。

preserve_node

布尔值

当状态为 absent 时,系统尝试删除池成员引用的节点。

如果其他池成员仍在引用该节点,则不会删除该节点。如果发生这种情况,模块不会引发错误。

将其设置为 true 将禁用此行为。

选项

  • false

  • true

priority_group

整数

指定表示池成员优先级组的数字。

添加新成员时,默认为 0,这意味着成员没有优先级。

要指定优先级,必须在创建新的池或添加或删除池成员时激活优先级组的使用。激活后,系统会根据分配给池成员的优先级组号进行流量负载均衡。

数字越大,优先级越高。因此,优先级为 3 的成员比优先级为 1 的成员优先级高。

rate_limit

整数

池成员速率限制(每秒连接数)。将其设置为 0 将禁用限制。

ratio

整数

池成员比率权重。有效值范围为 1 到 100。新的池成员(除非使用此值覆盖)默认为 1。

reuse_nodes

布尔值

根据请求重用节点定义。

选项

  • false

  • true ← (默认)

state

字符串

池成员状态。

选项

  • "present" ← (默认)

  • "absent"

  • "enabled"

  • "disabled"

  • "forced_offline"

availability_requirements

字典

如果您激活了多个运行状况监控器,则指定必须接收成功响应才能将链接视为可用的运行状况监控器的数量。

指定空字符串将删除监控器并恢复为从池继承(默认值)。

指定 none 将完全从成员中删除任何运行状况监控。

at_least

整数

指定在将链接视为已启动之前必须成功的活动运行状况监控器的最小数量。

此参数仅在使用 typeat_least 时才相关。

如果使用 all 类型,则将忽略此参数。

type

字符串 / 必需

指定 monitors 时的监控规则类型。

创建新池时,如果未指定此值,则将使用默认值 all

选项

  • "all"

  • "at_least"

connection_limit

整数

池成员连接限制。将其设置为 0 将禁用限制。

description

字符串

池成员描述。

fqdn

别名:hostname

字符串

池成员的 FQDN 名称。这可以是任何有效的 RFC 1123 DNS 名称。因此,唯一可用的字符是“A”到“Z”,“a”到“z”,“0”到“9”,连字符(“-”)和句点(“.”)。

FQDN 名称必须包含至少一个句点;将主机与域分隔开。例如,host.domain

FQDN 名称必须以字母或数字结尾。

创建新的池成员时,必须提供 addressfqdn 之一。此参数设置后无法更新。

fqdn_auto_populate

布尔值

指定系统是否使用由对由 FQDN 定义的节点的 DNS 查询返回的 IP 地址自动创建临时节点。

true 时,系统会为响应 FQDN 的 DNS 查询而返回的每个 IP 地址生成一个临时节点。此外,当 DNS 响应指示临时节点的 IP 地址不再存在时,系统将删除该临时节点。

false 时,系统使用与 FQDN 关联的单个 IP 地址解析节点 FQDN 的 DNS 查询。

创建新的池成员时,此参数的默认值为 true

设置此参数后,之后无法更改。

reuse_nodestrue 时,忽略此参数。

选项

  • false

  • true

ip_encapsulation

字符串

指定出站数据包(从 BIG-IP 系统到服务器池成员)的 IP 封装,可以使用 IPIP(IP 在 IP 中的封装,RFC 2003)或 GRE(通用路由器封装,RFC 2784)。

none 时,禁用 IP 封装。

inherit 时,从成员的池继承 IP 封装设置。

当为任何其他值时,选项包括无、从池继承和成员特定。

monitors

列表 / 元素=字符串

指定系统当前用于监视此资源的健康检查器。

name

字符串

创建新的池成员时要创建或重复使用的节点的名称。

虽然此参数是可选的,但我们建议始终指定此参数以减轻任何意外行为。

如果未指定,则会根据指定的 addressfqdn 自动创建节点名称。

enabled 状态是 present 的别名。

partition

字符串

用于管理资源的分区。

默认值: "Common"

pool

字符串 / 必需

池名称。此池必须存在。

port

整数

池成员端口。

设置此值后,无法更改。

使用聚合时必须提供此参数。

preserve_node

布尔值

当状态为 absent 时,系统尝试删除池成员引用的节点。

如果其他池成员仍在引用该节点,则不会删除该节点。如果发生这种情况,模块不会引发错误。

将其设置为 true 将禁用此行为。

选项

  • false

  • true

priority_group

整数

指定表示池成员优先级组的数字。

添加新成员时,默认为 0,这意味着成员没有优先级。

要指定优先级,必须在创建新的池或添加或删除池成员时激活优先级组的使用。激活后,系统会根据分配给池成员的优先级组号进行流量负载均衡。

数字越大,优先级越高。因此,优先级为 3 的成员比优先级为 1 的成员优先级高。

provider

字典

新增于 f5networks.f5_modules 1.0.0

包含连接详细信息的字典对象。

auth_provider

字符串

配置 auth 提供程序以从远程设备获取身份验证令牌。

此选项在使用 BIG-IQ 设备时非常有用。

no_f5_teem

布尔值

如果 yes,则不会将 TEEM 遥测数据发送到 F5。

您可以通过设置环境变量 F5_TELEMETRY_OFF 来省略此选项。

以前使用的变量 F5_TEEM 已弃用,因为其名称令人困惑。

选项

  • false ← (默认)

  • true

password

别名:pass、pwd

字符串 / 必需

用于连接到 BIG-IP 或 BIG-IQ 的用户帐户的密码。

您可以通过设置环境变量 F5_PASSWORD 来省略此选项。

server

字符串 / 必需

BIG-IP 主机或 BIG-IQ 主机。

您可以通过设置环境变量 F5_SERVER 来省略此选项。

server_port

整数

BIG-IP 服务器端口。

您可以通过设置环境变量 F5_SERVER_PORT 来省略此选项。

默认值: 443

timeout

整数

指定与网络设备通信的超时时间(以秒为单位),用于连接或发送命令。如果在操作完成之前超时,模块将出错。

transport

字符串

配置连接到远程设备时要使用的传输连接。

选项

  • "rest" ← (默认)

user

字符串 / 必需

连接到 BIG-IP 或 BIG-IQ 的用户名。此用户必须具有设备上的管理员权限。

您可以通过设置环境变量 F5_USER 来省略此选项。

validate_certs

布尔值

如果 no,则不验证 SSL 证书。仅在使用自签名证书的个人控制站点上使用此选项。

您可以通过设置环境变量 F5_VALIDATE_CERTS 来省略此选项。

选项

  • false

  • true ← (默认)

rate_limit

整数

池成员速率限制(每秒连接数)。将其设置为 0 将禁用限制。

ratio

整数

池成员比率权重。有效值范围为 1 到 100。新的池成员(除非使用此值覆盖)默认为 1。

replace_all_with

别名:purge

布尔值

删除 aggregate 参数中未定义的成员。

此操作是全有或全无的,这意味着如果某些池成员无法删除,它将停止。

选项

  • false ← (默认)

  • true

reuse_nodes

布尔值

根据请求重用节点定义。

选项

  • false

  • true ← (默认)

state

字符串

池成员状态。

选项

  • "present" ← (默认)

  • "absent"

  • "enabled"

  • "disabled"

  • "forced_offline"

备注

注意

  • 有关使用 Ansible 管理 F5 网络设备的更多信息,请参见 https://ansible.org.cn/integrations/networks/f5

  • 需要 BIG-IP 软件版本 >= 12。

  • F5 模块仅操作 F5 产品的运行配置。为确保 BIG-IP 特定配置持久保存到磁盘,请务必包含至少一项使用 f5networks.f5_modules.bigip_config 模块保存运行配置的任务。请参阅模块的文档,了解保存运行配置的模块的正确使用方法。

示例

- name: Add pool member
  bigip_pool_member:
    pool: my-pool
    partition: Common
    name: my-member
    host: "{{ ansible_default_ipv4['address'] }}"
    port: 80
    description: web server
    connection_limit: 100
    rate_limit: 50
    ratio: 2
    provider:
      server: lb.mydomain.com
      user: admin
      password: secret
  delegate_to: localhost

- name: Modify pool member ratio and description
  bigip_pool_member:
    pool: my-pool
    partition: Common
    name: my-member
    host: "{{ ansible_default_ipv4['address'] }}"
    port: 80
    ratio: 1
    description: nginx server
    provider:
      server: lb.mydomain.com
      user: admin
      password: secret
  delegate_to: localhost

- name: Remove pool member from pool
  bigip_pool_member:
    state: absent
    pool: my-pool
    partition: Common
    name: my-member
    host: "{{ ansible_default_ipv4['address'] }}"
    port: 80
    provider:
      server: lb.mydomain.com
      user: admin
      password: secret
  delegate_to: localhost

- name: Force pool member offline
  bigip_pool_member:
    state: forced_offline
    pool: my-pool
    partition: Common
    name: my-member
    host: "{{ ansible_default_ipv4['address'] }}"
    port: 80
    provider:
      server: lb.mydomain.com
      user: admin
      password: secret
  delegate_to: localhost

- name: Create members with priority groups
  bigip_pool_member:
    pool: my-pool
    partition: Common
    host: "{{ item.address }}"
    name: "{{ item.name }}"
    priority_group: "{{ item.priority_group }}"
    port: 80
    provider:
      server: lb.mydomain.com
      user: admin
      password: secret
  delegate_to: localhost
  loop:
    - address: 1.1.1.1
      name: web1
      priority_group: 4
    - address: 2.2.2.2
      name: web2
      priority_group: 3
    - address: 3.3.3.3
      name: web3
      priority_group: 2
    - address: 4.4.4.4
      name: web4
      priority_group: 1

- name: Add pool members aggregate
  bigip_pool_member:
    pool: my-pool
    aggregate:
      - host: 192.168.1.1
        partition: Common
        port: 80
        description: web server
        connection_limit: 100
        rate_limit: 50
        ratio: 2
      - host: 192.168.1.2
        partition: Common
        port: 80
        description: web server
        connection_limit: 100
        rate_limit: 50
        ratio: 2
      - host: 192.168.1.3
        partition: Common
        port: 80
        description: web server
        connection_limit: 100
        rate_limit: 50
        ratio: 2
    provider:
      server: lb.mydomain.com
      user: admin
      password: secret
  delegate_to: localhost

- name: Add pool members aggregate, remove non aggregates
  bigip_pool_member:
    pool: my-pool
    aggregate:
      - host: 192.168.1.1
        partition: Common
        port: 80
        description: web server
        connection_limit: 100
        rate_limit: 50
        ratio: 2
      - host: 192.168.1.2
        partition: Common
        port: 80
        description: web server
        connection_limit: 100
        rate_limit: 50
        ratio: 2
      - host: 192.168.1.3
        partition: Common
        port: 80
        description: web server
        connection_limit: 100
        rate_limit: 50
        ratio: 2
    replace_all_with: true
    provider:
      server: lb.mydomain.com
      user: admin
      password: secret
  delegate_to: localhost

返回值

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

描述

address

字符串

池成员的地址。

已返回:changed

示例: "1.2.3.4"

connection_limit

整数

池成员新的连接限制。

已返回:changed

示例: 1000

description

字符串

池成员的新描述。

已返回:changed

示例: "My pool member"

fqdn

字符串

池成员的 FQDN。

已返回:changed

示例: "foo.bar.com"

fqdn_auto_populate

布尔值

是否在成员上设置了 FQDN 自动填充。

已返回:changed

示例: true

monitors

列表 / 元素=字符串

资源的新监视器列表。

已返回:changed

示例: ["/Common/monitor1", "/Common/monitor2"]

priority_group

整数

新的优先级组。

已返回:changed

示例: 3

rate_limit

整数

池成员新的速率限制(每秒连接数)。

已返回:changed

示例: 100

ratio

整数

新的池成员比率权重。

已返回:changed

示例: 50

replace_all_with

布尔值

清除设备中所有非聚合池成员。

已返回:changed

示例: true

作者

  • Tim Rupp (@caphrim007)

  • Wojciech Wypior (@wojtek0806)