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

列表 / 元素=字符串

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

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

allow_duplicates

布尔值

f5networks.f5_modules 1.2.0 中添加

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

仅与lines参数一起使用。

选项

  • false ← (默认)

  • true

attributes

别名:attr

字符串

生成的 filesystem 对象应具有的属性。

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

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

默认情况下假定使用=运算符,否则需要在字符串中包含+-运算符。

backup

布尔值

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

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

选项

  • false ← (默认)

  • true

backup_options

字典

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

dir_path

路径

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

filename

字符串

用于存储备份配置的文件名。如果没有给出文件名,它将根据主机名、当前时间和日期以<hostname>_config.<current-date>@<current-time>格式生成。

before

列表 / 元素=字符串

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

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

diff_against

字符串

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

当此选项配置为startup时,模块将返回运行配置与启动配置的差异。

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

当此选项配置为running时,模块将返回相对于对设备配置所做的任何更改,运行配置的之前和之后的差异。

选项

  • "startup" ← (默认)

  • "intended"

  • "running"

diff_ignore_lines

列表 / 元素=字符串

使用此参数指定在差异期间应忽略的一行或多行。

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

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

group

字符串

应拥有文件系统对象的组的名称,如同提供给chown一样。

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

intended_config

字符串

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

此参数不会修改远程设备上的任何设置,仅用于检查当前设备配置的合规性。

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

lines

别名:commands

列表 / 元素=字符串

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

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

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

match

字符串

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

如果将 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

字符串

应拥有文件系统对象的用户名,如同提供给 chown 一样。

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

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

parents

列表 / 元素=字符串

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

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

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 或 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 ← (默认)

replace

字符串

指示模块如何在设备上执行配置。

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

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

选项

  • "line" ← (默认)

  • "block"

route_domain

字符串

用于管理 BGP 配置的路由域。

默认: "0"

running_config

别名:config

字符串

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

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

running_config 参数允许实现者传入用作比较基础配置的配置。

save_when

字符串

对设备运行配置进行更改时,默认情况下不会将更改复制到非易失性存储。

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

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

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

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

选项

  • "always"

  • "never" ← (默认)

  • "modified"

  • "changed"

selevel

字符串

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

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

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

serole

字符串

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

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

setype

字符串

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

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

seuser

字符串

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

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

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

src

路径

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

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

此参数与 linesparents 参数互斥。

unsafe_writes

布尔值

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

默认情况下,此模块使用原子操作来防止数据损坏或目标文件系统对象的不一致读取,但有时系统的配置方式或损坏方式会阻止此操作。一个例子是 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

字符串

备份文件的完整路径。

返回值:当 backup 为 yes 时

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

commands

列表 / 元素=字符串

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

返回值:始终返回

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

updates

列表 / 元素=字符串

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

返回值:始终返回

示例: ["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)