community.routeros.api_modify 模块 – 使用 API 修改路径数据
注意
此模块是 community.routeros 集合(版本 3.1.0)的一部分。
如果您使用的是 ansible 包,则可能已经安装了此集合。 它不包含在 ansible-core 中。 要检查是否已安装,请运行 ansible-galaxy collection list。
要安装它,请使用: ansible-galaxy collection install community.routeros。 您需要进一步的要求才能使用此模块,请参阅 要求 了解详细信息。
要在 playbook 中使用它,请指定: community.routeros.api_modify。
community.routeros 2.2.0 中的新增功能
概要
- 允许使用 API 修改路径的信息。 
- 使用 community.routeros.api_find_and_modify 模块,根据一些搜索条件以受控方式修改一个或多个条目。 
- 要备份可以使用此模块恢复的路径,请使用 community.routeros.api_info 模块。 
- 该模块忽略动态和内置条目。 
- 请注意,此模块仍处于大量开发中,仅支持某些路径。 如果您想支持新路径,或者认为您在现有路径中发现了问题,请首先 在 community.routeros 问题跟踪器中创建一个问题。 
要求
执行此模块的主机需要以下要求。
- Python 2.6 需要 ordereddict 
- Python >= 3.6(适用于 librouteros) 
- librouteros 
参数
| 参数 | 注释 | 
|---|---|
| PEM 格式的文件,其中包含用于证书验证的 CA 证书。 另请参阅  | |
| 要确保此路径存在的数据。 未提供的字段将不会被修改。 如果  | |
| 在与 RouterOS 设备通信时使用指定的编码。 默认值为  默认值:  | |
| 设置为  另请参阅  注意:这强制使用匿名 Diffie-Hellman (ADH) 密码。 该协议容易受到中间人攻击,因为交换中使用的密钥未经过身份验证。 不要只是在没有证书的情况下连接以“使事情正常工作”,请查看  选择 
 | |
| 对于  如果  如果  如果  请注意, 选择 
 | |
| 如何处理为只读字段传入的值。 如果  如果  如果  选择 
 | |
| 如何处理为只写字段传入的值。 如果  如果  如果  选择 
 | |
| RouterOS 主机名 API。 | |
| RouterOS 用户密码。 | |
| 要查询的路径。 一个示例值是  选择 
 | |
| RouterOS API端口。如果  HTTP API 的默认值为  | |
| 将操作限制为与以下条件匹配的条目。 这与  例如,对于  | |
| 要限制其值的字段。 | |
| 是否应匹配禁用或未提供的值。 选择 
 | |
| 匹配要限制的字段值的正则表达式。 请注意,所有值在匹配之前都将转换为字符串。 无法使用正则表达式匹配禁用的值。如果您还想匹配禁用的值,请设置  | |
| 要限制的字段值。 请注意,值的类型很重要。如果提供字符串  | |
| 请求的超时时间。 默认值:  | |
| 如果设置了,则 TLS 将用于 RouterOS API 连接。 选择 
 | |
| RouterOS 登录用户。 | |
| 设置为  另请参阅  注意:与其简单地停用证书验证来“使事情正常工作”,请考虑创建您自己的 CA 证书并使用它来签署用于您的路由器的证书。您可以使用  选择 
 | 
属性
| 属性 | 支持 | 描述 | 
|---|---|---|
| 操作组: community.routeros.api | 在  | |
| 支持: 完全 | 可以在  | |
| 支持: 完全 | 当处于 diff 模式时,将返回已更改的详细信息(或可能需要在  | |
| 平台: RouterOS | 可以操作的目标操作系统/系列。 | 
说明
注意
- 如果路径中存在只写字段,则该模块在严格意义上是非幂等的,因为它无法验证这些字段的当前值。该模块应假定的行为可以通过 - handle_write_only选项进行控制。
另请参阅
另请参阅
- community.routeros.api
- 用于 RouterOS API 的 Ansible 模块。 
- community.routeros.api_facts
- 使用 API 从运行 MikroTik RouterOS 的远程设备收集事实。 
- community.routeros.api_find_and_modify
- 使用 API 查找和修改信息。 
- community.routeros.api_info
- 从 API 检索信息。 
- 如何使用 RouterOS API 连接到 RouterOS 设备
- 如何使用 RouterOS API 连接到 RouterOS 设备 
示例
---
- name: Setup DHCP server networks
  # Ensures that we have exactly two DHCP server networks (in the specified order)
  community.routeros.api_modify:
    path: ip dhcp-server network
    handle_absent_entries: remove
    handle_entries_content: remove_as_much_as_possible
    ensure_order: true
    data:
      - address: 192.168.88.0/24
        comment: admin network
        dns-server: 192.168.88.1
        gateway: 192.168.88.1
      - address: 192.168.1.0/24
        comment: customer network 1
        dns-server: 192.168.1.1
        gateway: 192.168.1.1
        netmask: 24
- name: Adjust NAT
  community.routeros.api_modify:
    hostname: "{{ hostname }}"
    password: "{{ password }}"
    username: "{{ username }}"
    path: ip firewall nat
    data:
      - action: masquerade
        chain: srcnat
        comment: NAT to WAN
        out-interface-list: WAN
        # Three ways to unset values:
        #   - nothing after `:`
        #   - "empty" value (null/~/None)
        #   - prepend '!'
        out-interface:
        to-addresses: ~
        '!to-ports':
- name: Block all incoming connections
  community.routeros.api_modify:
    hostname: "{{ hostname }}"
    password: "{{ password }}"
    username: "{{ username }}"
    path: ip firewall filter
    handle_absent_entries: remove
    handle_entries_content: remove_as_much_as_possible
    restrict:
      # Do not touch any chain except the input chain
      - field: chain
        values:
          - input
    data:
      - action: drop
        chain: input
返回值
常用返回值记录在此处,以下是此模块特有的字段
| 键 | 描述 | 
|---|---|
| 更改后当前路径的所有元素的列表。 返回: 始终 示例:  | |
| 更改前当前路径的所有元素的列表。 返回: 始终 示例:  | 
