f5networks.f5_modules.bigip_imish_config 模块 – 管理 BIG-IP 高级路由配置部分

注意

此模块是 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_imish_config

f5networks.f5_modules 1.0.0 中的新增功能

概要

  • 此模块提供了一种以确定性方式处理高级路由配置部分的实现。

注意

此模块具有相应的 action 插件

参数

参数

注释

after

list / elements=string

如果需要进行更改,则要附加到命令堆栈末尾的有序命令集。

就像使用 *before* 一样,这允许 playbook 设计者附加一组命令,以便在命令集之后执行。

allow_duplicates

boolean

在 f5networks.f5_modules 1.2.0 中添加

允许将重复命令发送到设备。这是为了适应配置地址族的情况。

仅与 lines 参数一起使用。

选择

  • false ← (默认)

  • true

attributes

别名: attr

string

生成的 文件系统对象应具有的属性。

要获取支持的标志,请查看目标系统上 chattr 的 man 页面。

此字符串应包含与 lsattr 显示的顺序相同的属性。

= 运算符被假定为默认值,否则需要在字符串中包含 +- 运算符。

backup

boolean

此参数将导致模块在进行任何更改之前,从远程设备创建当前 running-config 的完整备份。

备份文件将写入 playbook 根目录或角色根目录中的 backup 文件夹(如果 playbook 是 Ansible 角色的一部分)。如果该目录不存在,则会创建它。

选择

  • false ← (默认)

  • true

backup_options

dictionary

这是一个包含与备份文件路径相关的可配置选项的 dict 对象。当 backup 设置为 yes 时,此选项的值是只读的。如果 backup 设置为 no,此选项将被静默忽略。

dir_path

path

此选项提供了路径,该路径以存储备份配置文件的目录名称结尾。如果该目录不存在,它将首先被创建,文件名要么是 filename 的值,要么是 filename 选项描述中描述的默认文件名。如果未给出路径值,则将在当前工作目录中创建一个 *backup* 目录,并将备份配置复制到 *backup* 目录中的 filename 中。

filename

string

用于存储备份配置的文件名。如果未给出文件名,则将根据主机名、当前时间和日期生成,格式为 <主机名>_config.<当前日期>@<当前时间>

before

list / elements=string

如果需要进行更改,则要推送到命令堆栈的有序命令集。

这允许 playbook 设计者在推送任何更改之前执行配置命令,而不会影响命令集与系统匹配的方式。

diff_against

string

当使用 ansible-playbook --diff 命令行参数时,该模块可以针对不同的源生成差异。

当此选项配置为 startup 时,该模块将返回 running-config 与 startup-config 的差异。

当此选项配置为 intended 时,该模块将返回 running-config 与 intended_config 参数中提供的配置的差异。

当此选项配置为 running 时,该模块将返回运行配置在对设备配置进行任何更改前后的差异。

选择

  • "startup" ← (默认)

  • "intended"

  • "running"

diff_ignore_lines

list / elements=string

使用此参数指定在比较差异时应忽略的一个或多个行。

这用于配置中由系统自动更新的行。

此参数接受正则表达式列表或精确的行匹配。

group

string

应该拥有文件系统对象的用户组名称,就像传递给 chown 的那样。

如果未指定,则使用当前用户的当前组,除非您是 root 用户,在这种情况下,它可以保留先前的所有权。

intended_config

string

intended_config 提供节点应符合的主配置,用于检查最终运行配置是否符合该配置。

此参数不会修改远程设备上的任何设置,仅用于检查当前设备的配置是否符合预期配置。

指定此参数时,任务还应修改 diff_against 值并将其设置为 *intended*。

lines

别名: commands

list / elements=string

应在该部分中配置的命令的有序集合。

这些命令必须与设备运行配置中找到的完全相同。

请务必注意配置命令语法,因为某些命令会被设备配置解析器自动修改。

match

string

指示模块如何执行命令集与当前设备配置的匹配。

如果 match 设置为 *line*,则命令将逐行匹配。

如果 match 设置为 *strict*,则命令行的匹配会考虑位置。

如果 match 设置为 *exact*,则命令行必须完全匹配。

最后,如果 match 设置为 *none*,则模块不会尝试将源配置与远程设备上的运行配置进行比较。

选择

  • "line" ← (默认)

  • "strict"

  • "exact"

  • "none"

mode

any

生成的文件系统对象应具有的权限。

对于那些习惯于使用 /usr/bin/chmod 的人,请记住,模式实际上是八进制数。您必须向 Ansible 提供足够的信息才能正确解析它们。为了获得一致的结果,请引用八进制数(例如, '644''1777'),以便 Ansible 接收一个字符串,并且可以自己将字符串转换为数字。添加前导零(例如, 0755)有时可以工作,但在循环和某些其他情况下可能会失败。

如果给 Ansible 一个数字而不遵循上述任何规则,最终会得到一个十进制数字,这会产生意外的结果。

从 Ansible 1.8 开始,模式可以指定为符号模式(例如, u+rwxu=rw,g=r,o=r)。

如果未指定 mode 并且目标文件系统对象不存在,则在为新创建的文件系统对象设置模式时,将使用系统上的默认 umask

如果未指定 mode 并且目标文件系统对象存在,则将使用现有文件系统对象的模式。

指定 mode 是确保使用正确权限创建文件系统对象的最佳方法。有关更多详细信息,请参见 CVE-2020-1736。

owner

string

应该拥有文件系统对象的用户名称,就像传递给 chown 的那样。

如果未指定,则使用当前用户,除非您是 root 用户,在这种情况下,它可以保留先前的所有权。

指定数字用户名将被假定为用户 ID 而不是用户名。避免使用数字用户名以避免这种混淆。

parents

list / elements=string

唯一标识应检查命令的部分或层次结构的父级的有序集合。

如果省略 parents 参数,则会对顶层或全局命令集进行检查。

provider

dictionary

在 f5networks.f5_modules 1.0.0 中添加

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

auth_provider

string

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

此选项主要在处理 BIG-IQ 设备时使用。

no_f5_teem

boolean

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

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

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

选择

  • false ← (默认)

  • true

password

别名: pass, pwd

string / required

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

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

server

string / required

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

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

server_port

integer

BIG-IP 服务器端口。

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

默认值: 443

timeout

integer

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

transport

string

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

选择

  • "rest" ← (默认)

user

string / required

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

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

validate_certs

boolean

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

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

选择

  • false

  • true ← (默认)

replace

string

指示模块在设备上执行配置的方式。

如果 replace 参数设置为 *line*,则修改后的行将被推送到设备上的配置模式中。

如果 replace 参数设置为 *block*,则如果任何行不正确,则整个命令块将被推送到设备上的配置模式中。

选择

  • "line" ← (默认)

  • "block"

route_domain

string

管理 BGP 配置的路由域。

默认值: "0"

running_config

别名: config

string

默认情况下,该模块将连接到远程设备并检索当前的运行配置,以用作与源内容进行比较的基础。

有时,您不希望任务在 playbook 中的每个任务都获取当前的运行配置。

使用 *running_config* 参数,实现者可以传入配置,以用作比较的基本配置。

save_when

string

如果对设备运行配置进行了更改,则默认情况下,这些更改不会复制到非易失性存储器中。

如果该参数设置为 *always*,则始终将运行配置复制到启动配置,并且 *modified* 标志将始终设置为 True

如果该参数设置为 *modified*,则仅当自上次保存到启动配置以来运行配置已更改时,才会将其复制到启动配置。

如果该参数设置为 *never*,则永远不会将运行配置复制到启动配置。

如果该参数设置为 *changed*,则仅当任务进行了更改时,才会将运行配置复制到启动配置。

选择

  • "always"

  • "never" ← (默认)

  • "modified"

  • "changed"

selevel

string

SELinux 文件系统对象上下文的级别部分。

这是 MLS/MCS 属性,有时也称为 range

如果设置为 _default,则如果策略可用,它将使用策略的 level 部分。

serole

string

SELinux 文件系统对象上下文的角色部分。

如果设置为 _default,则如果策略可用,它将使用策略的 role 部分。

setype

string

SELinux 文件系统对象上下文的类型部分。

如果设置为 _default,则如果策略可用,它将使用策略的 type 部分。

seuser

string

SELinux 文件系统对象上下文的用户部分。

默认情况下,它使用 system 策略(如果适用)。

如果设置为 _default,则如果策略可用,它将使用策略的 user 部分。

src

path

src 参数提供要加载到远程系统的配置文件的路径。

如果该值以 / 开头,则该路径可以是配置文件的完整系统路径,也可以是相对于已实现的角色或 playbook 的根目录的路径。

此参数与 *lines* 和 *parents* 参数互斥。

unsafe_writes

boolean

影响何时使用原子操作以防止数据损坏或从目标文件系统对象读取不一致的数据。

默认情况下,此模块使用原子操作来防止数据损坏或从目标文件系统对象读取不一致的数据,但有时系统配置或出现故障会导致无法实现此操作。一个例子是 Docker 挂载的文件系统对象,这些对象无法在容器内部进行原子更新,只能以不安全的方式写入。

此选项允许 Ansible 在原子操作失败时回退到不安全的文件系统对象更新方法(但是,它不会强制 Ansible 执行不安全写入)。

重要提示!不安全写入容易出现竞争条件,并可能导致数据损坏。

选择

  • false ← (默认)

  • true

注释

注意

  • 缩写命令不是幂等的

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

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

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

示例

- name: configure top level configuration and save it
  bigip_imish_config:
    lines: bfd slow-timer 2000
    save_when: modified
    provider:
      user: admin
      password: secret
      server: lb.mydomain.com
  delegate_to: localhost

- name: diff the running-config against a provided config
  bigip_imish_config:
    diff_against: intended
    intended_config: "{{ lookup('file', 'master.cfg') }}"
    provider:
      user: admin
      password: secret
      server: lb.mydomain.com
  delegate_to: localhost

- name: Add config to a parent block
  bigip_imish_config:
    lines:
      - bgp graceful-restart restart-time 120
      - redistribute kernel route-map rhi
      - neighbor 10.10.10.11 remote-as 65000
      - neighbor 10.10.10.11 fall-over bfd
      - neighbor 10.10.10.11 remote-as 65000
      - neighbor 10.10.10.11 fall-over bfd
    parents: router bgp 64664
    match: exact
    provider:
      user: admin
      password: secret
      server: lb.mydomain.com
  delegate_to: localhost

- name: Remove an existing acl before writing it
  bigip_imish_config:
    lines:
      - access-list 10 permit 20.20.20.20
      - access-list 10 permit 20.20.20.21
      - access-list 10 deny any
    before: no access-list 10
    provider:
      user: admin
      password: secret
      server: lb.mydomain.com
  delegate_to: localhost

- name: for idempotency, use full-form commands
  bigip_imish_config:
    lines:
      # - desc My interface
      - description My Interface
    # parents: int ANYCAST-P2P-2
    parents: interface ANYCAST-P2P-2
    provider:
      user: admin
      password: secret
      server: lb.mydomain.com
  delegate_to: localhost

- name: configurable backup path
  bigip_imish_config:
    lines: bfd slow-timer 2000
    backup: true
    provider:
      user: admin
      password: secret
      server: lb.mydomain.com
    backup_options:
      filename: backup.cfg
      dir_path: /home/user
  delegate_to: localhost

返回值

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

描述

backup_path

string

备份文件的完整路径。

返回:当 backup 为 yes 时

示例: "/playbooks/ansible/backup/bigip_imish_config.2016-07-16@22:28:34"

commands

list / elements=string

将推送到远程设备的命令集。

返回:总是

示例: ["interface ANYCAST-P2P-2", "neighbor 20.20.20.21 remote-as 65000", "neighbor 20.20.20.21 fall-over bfd"]

updates

list / elements=string

将推送到远程设备的命令集。

返回:总是

示例: ["interface ANYCAST-P2P-2", "neighbor 20.20.20.21 remote-as 65000", "neighbor 20.20.20.21 fall-over bfd"]

作者

  • Tim Rupp (@caphrim007)

  • Wojciech Wypior (@wojtek0806)