community.routeros.api_find_and_modify 模块 – 使用 API 查找和修改信息
注意
此模块是 community.routeros 集合(版本 3.1.0)的一部分。
如果您正在使用 ansible 包,您可能已经安装了此集合。它不包含在 ansible-core 中。要检查是否已安装,请运行 ansible-galaxy collection list。
要安装它,请使用:ansible-galaxy collection install community.routeros。您需要其他要求才能使用此模块,有关详细信息,请参阅 要求。
要在 Playbook 中使用它,请指定:community.routeros.api_find_and_modify。
community.routeros 2.1.0 中的新增功能
概要
- 允许根据条件查找路径的条目,并修改这些条目的值。 
- 使用 community.routeros.api_find_and_modify 模块将路径的所有条目设置为特定值,或在一个步骤中以不同的方式更改多个条目。 
要求
执行此模块的主机上需要满足以下要求。
- librouteros 
- Python >= 3.6 (用于 librouteros) 
参数
| 参数 | 注释 | 
|---|---|
| PEM 格式的文件,其中包含用于证书验证的 CA 证书。 另请参阅  | |
| 在与 RouterOS 设备通信时使用指定的编码。 默认为  默认值:  | |
| 要搜索的字段。 该模块将只考虑给定的  使用 YAML  请注意,如果此处指定的字典为空,则将匹配路径中的每个条目。 | |
| 当  另请参阅  注意:这会强制使用匿名 Diffie-Hellman (ADH) 密码。该协议容易受到中间人攻击,因为交换中使用的密钥未经过身份验证。不要只是在没有证书的情况下连接以“使事情正常工作”,请查看  选择 
 | |
| RouterOS 主机名 API。 | |
| RouterOS 用户密码。 | |
| 要查询的路径。 一个示例值是  | |
| RouterOS API 端口。如果设置了  HTTP API 的默认值为  | |
| 确保匹配的数量不超过此数字。 如果匹配的数量超出此数字,则会失败,不会修改任何内容。 如果未指定,则没有上限。 | |
| 确保匹配的数量不少于此数字。 如果匹配的数量少于此数字,则会失败,不会修改任何内容。 默认值:  | |
| 请求的超时时间。 默认值:  | |
| 如果设置,将使用 TLS 进行 RouterOS API 连接。 选择 
 | |
| RouterOS 登录用户。 | |
| 设置为  另请参阅  选择 
 | |
| 设置为  另请参阅  注意:与其简单地禁用证书验证以“使事情正常工作”,请考虑创建您自己的 CA 证书并使用它来签署用于您的路由器的证书。您可以使用  选择 
 | |
| 在所有匹配  使用 YAML  | 
属性
| 属性 | 支持 | 描述 | 
|---|---|---|
| 操作组: community.routeros.api | 在  | |
| 支持: 完整 | 可以在  | |
| 支持: 完整 | 在 diff 模式下,将返回有关已更改(或可能需要在  | |
| 平台: RouterOS | 可以针对的目标操作系统/系列。 | 
注释
注意
- 如果您想根据旧值更改值(例如将所有注释“foo”更改为“bar”),并确保至少有 N 个这样的值,可以使用 - require_matches_min=N和- allow_no_matches=true。这将使模块在少于 N 个此类条目时失败,但如果没有匹配项则不会失败。后一种情况是任务幂等性所必需的:一旦值被更改,就不应该再有匹配项。
另请参阅
另请参阅
- community.routeros.api
- 用于 RouterOS API 的 Ansible 模块。 
- community.routeros.api_facts
- 使用 API 从运行 MikroTik RouterOS 的远程设备收集事实。 
- community.routeros.api_modify
- 使用 API 修改路径上的数据。 
- community.routeros.api_info
- 从 API 检索信息。 
- 如何使用 RouterOS API 连接到 RouterOS 设备
- 如何使用 RouterOS API 连接到 RouterOS 设备 
示例
---
- name: Rename bridge from 'bridge' to 'my-bridge'
  community.routeros.api_find_and_modify:
    hostname: "{{ hostname }}"
    password: "{{ password }}"
    username: "{{ username }}"
    path: interface bridge
    find:
      name: bridge
    values:
      name: my-bridge
- name: Change IP address to 192.168.1.1 for interface bridge - assuming there is only one
  community.routeros.api_find_and_modify:
    hostname: "{{ hostname }}"
    password: "{{ password }}"
    username: "{{ username }}"
    path: ip address
    find:
      interface: bridge
    values:
      address: "192.168.1.1/24"
    # If there are zero entries, or more than one: fail! We expected that
    # exactly one is configured.
    require_matches_min: 1
    require_matches_max: 1
返回值
常见返回值记录在这里,以下是此模块独有的字段
| 键 | 描述 | 
|---|---|
| 已修改的条目数。 返回:成功 示例:  | |
| 更改后当前路径的所有元素的列表。 返回:成功 示例:  | |
| 更改前当前路径的所有元素的列表。 返回:成功 示例:  | 
