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

要在 playbook 中使用它,请指定: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

整数

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

仅当使用 at_least 类型的 type 时,此参数才相关。

如果使用 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

布尔值

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

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

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

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

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

reuse_nodestrue 时,将忽略此参数。

选项

  • false

  • true

ip_encapsulation

字符串

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

当值为 none 时,禁用 IP 封装。

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

当为任何其他值时,选项为 “None”、“从池继承”和“成员特定”。

monitors

list / elements=string

指定系统当前用于监视此资源运行状况的监视器。

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

整数

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

仅当使用 at_least 类型的 type 时,此参数才相关。

如果使用 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

布尔值

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

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

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

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

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

reuse_nodestrue 时,将忽略此参数。

选项

  • false

  • true

ip_encapsulation

字符串

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

当值为 none 时,禁用 IP 封装。

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

当为任何其他值时,选项为 “None”、“从池继承”和“成员特定”。

monitors

list / elements=string

指定系统当前用于监视此资源运行状况的监视器。

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 中添加

一个包含连接详细信息的 dict 对象。

auth_provider

字符串

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

此选项在处理 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 Networks 设备的更多信息,请参阅 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

示例: "我的 成员"

fqdn

字符串

池成员的 FQDN。

返回: changed

示例: "foo.bar.com"

fqdn_auto_populate

布尔值

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

返回: changed

示例: true

monitors

list / elements=string

资源的新监视器列表。

返回: 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)