f5networks.f5_modules.bigip_command 模块 – 在 F5 设备上运行 TMSH 和 BASH 命令

注意

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

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

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

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

f5networks.f5_modules 1.0.0 中的新功能

概要

  • 向 BIG-IP 节点发送 TMSH 或 BASH 命令,并返回从设备读取的结果。此模块包含一个参数,该参数将使模块等待特定条件,然后再返回;如果未满足条件,则会超时。

  • 此模块是幂等的,并且永远不会是幂等的。它旨在作为一种权宜之计,以满足自动化要求,直到开发出真正的模块来按照您需要的方式进行配置为止。

  • 如果您正在使用此模块,我们建议您同时提交一个问题,以创建一个满足您需求的真正模块。

参数

参数

注释

chdir

字符串

在运行命令之前更改到此目录。

commands

any / 必需

通过配置的提供程序发送到远程 BIG-IP 设备的命令。返回命令的输出结果。如果提供了 wait_for 参数,则在满足条件或重试次数过期之前,模块不会返回。

仅支持 tmsh 命令。如果您正在管道化或添加 tmsh 之外的其他逻辑(例如 grep、awk 或其他不是 tmsh 的 shell 相关逻辑),则不支持此行为。

interval

整数

配置命令重试之间等待的间隔(以秒为单位)。如果命令未通过指定的条件,则间隔指示在再次尝试该命令之前要等待多长时间。

默认值: 1

match

字符串

match 参数与 wait_for 参数结合使用,以指定匹配策略。有效值为 allany。如果该值设置为 all,则必须满足 wait_for 中的所有条件。如果该值设置为 any,则仅必须满足其中一个值。

选项

  • "any"

  • "all" ←(默认)

provider

字典

在 f5networks.f5_modules 1.0.0 中添加

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

auth_provider

字符串

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

此选项在处理 BIG-IQ 设备时真正使用。

no_f5_teem

布尔值

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

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

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

选项

  • false ←(默认)

  • true

password

别名:pass、pwd

字符串 / 必需

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

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

server

字符串 / 必需

BIG-IP 主机。

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

server_port

整数

BIG-IP 服务器端口。

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

默认值: 443

ssh_keyfile

路径

指定用于验证与远程设备连接的 SSH 密钥文件。此参数仅用于 cli 传输。

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

timeout

整数

transport 设置为 rest 时生效的参数

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

transport

字符串

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

选项

  • "cli"

  • "rest" ←(默认)

user

字符串 / 必需

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

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

validate_certs

布尔值

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

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

选项

  • false

  • true ←(默认)

retries

整数

指定在被视为失败之前应尝试命令的次数。每次重试时,都会在目标设备上运行该命令,并根据 wait_for 条件进行评估。

默认值: 10

wait_for

别名: waitfor

列表 / 元素=字符串

指定从命令输出中评估的内容以及要应用的条件。此参数将导致任务等待特定的条件为真,然后才继续执行。如果在配置的重试次数内条件不为真,则任务将失败。请参阅示例。

warn

布尔值

模块是否应引发与命令幂等性相关的警告。

请注意,F5 Ansible 开发人员专门保留此选项,以使您意识到使用此模块可能不如使用官方 F5 Ansible 模块。此模块应始终作为最后的手段使用。

选项

  • false

  • true ←(默认)

注意

注意

  • 通过 SSH 连接在 HA 环境中运行此模块并使用除 adminroot 以外的角色时,即使您未进行任何更改,也可能会看到 Change Pending 状态。此问题正在使用 ID429869 进行跟踪。

  • 将 bigip_command 模块与 REST API 结合使用时,内部会使用多个正则表达式来转义引号等字符。如果您的 TMSH 命令本身包含正则表达式字符,例如数据组通配符 *,则可能需要大量的转义字符。

  • 发出长时间运行的命令时,必须为 provider 块中的 timeout 选项提供足够大的值。

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

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

  • transport 设置为 cli 时,要指定 timeout,请使用 ANSIBLE_PERSISTENT_COMMAND_TIMEOUT 环境变量或在 ansible.cfg 文件中指定 command_timeout,请参阅 https://docs.ansible.org.cn/ansible/latest/reference_appendices/config.html#persistent-command-timeout

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

示例

- name: run show version on remote devices
  bigip_command:
    commands: show sys version
    provider:
      server: lb.mydomain.com
      password: secret
      user: admin
  delegate_to: localhost

- name: sleep for 200 seconds
  bigip_command:
    commands: 'run /util bash -c "sleep 200"'
    provider:
      server: lb.mydomain.com
      password: secret
      user: admin
      timeout: 210
  delegate_to: localhost

- name: run show version and check to see if output contains BIG-IP
  bigip_command:
    commands: show sys version
    wait_for: result[0] contains BIG-IP
    provider:
      server: lb.mydomain.com
      password: secret
      user: admin
  register: result
  delegate_to: localhost

- name: run multiple commands on remote nodes
  bigip_command:
    commands:
      - show sys version
      - list ltm virtual
    provider:
      server: lb.mydomain.com
      password: secret
      user: admin
  delegate_to: localhost

- name: run multiple commands and evaluate the output
  bigip_command:
    commands:
      - show sys version
      - list ltm virtual
    wait_for:
      - result[0] contains BIG-IP
      - result[1] contains my-vs
    provider:
      server: lb.mydomain.com
      password: secret
      user: admin
  register: result
  delegate_to: localhost

- name: tmsh prefixes will automatically be handled
  bigip_command:
    commands:
      - show sys version
      - tmsh list ltm virtual
    provider:
      server: lb.mydomain.com
      password: secret
      user: admin
  delegate_to: localhost

- name: Delete all LTM nodes in Partition1, assuming no dependencies exist
  bigip_command:
    commands:
      - delete ltm node all
    chdir: Partition1
    provider:
      server: lb.mydomain.com
      password: secret
      user: admin
  delegate_to: localhost

- name: Command that contains wildcard character to be passed to tmsh
  bigip_command:
    commands:
      - modify ltm data-group internal dg_string records add { "my test\\\\\\\*string"  { data "value" }}
    provider:
      server: lb.mydomain.com
      password: secret
      user: admin
  delegate_to: localhost

返回值

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

描述

failed_conditions

列表 / 元素=字符串

失败的条件列表。

返回: 失败

示例: ["...", "..."]

stdout

列表 / 元素=字符串

来自命令的响应集。

返回: 总是

示例: ["...", "..."]

stdout_lines

列表 / 元素=字符串

stdout 的值拆分为列表。

返回: 总是

示例: [["...", "..."], ["..."], ["..."]]

warn

布尔值

是否引发有关修改命令的警告。

返回: 已更改

示例: true

作者

  • Tim Rupp (@caphrim007)

  • Wojciech Wypior (@wojtek0806)