cisco.ios.ios_config 模块 – 用于管理配置部分的模块。
注意
此模块是 cisco.ios 集合(版本 9.0.3)的一部分。
如果您正在使用 ansible 包,您可能已经安装了此集合。它不包含在 ansible-core 中。要检查是否已安装,请运行 ansible-galaxy collection list。
要安装它,请使用:ansible-galaxy collection install cisco.ios。
要在 playbook 中使用它,请指定:cisco.ios.ios_config。
cisco.ios 1.0.0 中的新增功能
概要
- Cisco IOS 配置使用简单的块缩进文件语法将配置划分为各个部分。此模块提供了以确定性方式处理 IOS 配置部分的实现。 
参数
| 参数 | 注释 | 
|---|---|
| 如果需要进行更改,要追加到命令堆栈末尾的有序命令集。就像 before 一样,这允许 playbook 设计者追加一组命令,以便在命令集之后执行。 | |
| 此参数将导致模块在进行任何更改之前,创建远程设备当前  选项 
 | |
| 这是一个包含与备份文件路径相关的可配置选项的 dict 对象。仅当  | |
| 此选项提供以目录名称结尾的路径,在该路径中将存储备份配置文件。如果该目录不存在,则将首先创建它,并且文件名是  | |
| 用于存储备份配置的文件名。如果未提供文件名,则将根据主机名、当前时间和日期生成,格式为 <hostname>_config.<current-date>@<current-time> | |
| 如果需要进行更改,要推送到命令堆栈的有序命令集。这使 playbook 设计者有机会在推送任何更改之前执行配置命令,而不会影响命令集与系统匹配的方式。 | |
| 此参数指定在获取远程设备运行配置时是否收集所有默认值。启用后,模块将通过发出命令  选项 
 | |
| 当使用  当此选项配置为 startup 时,该模块将返回 running-config 与 startup-config 的差异。 当此选项配置为 intended 时,该模块将返回 running-config 与  当此选项配置为 running 时,该模块将返回对设备配置所做的任何更改的运行配置前后差异。 选项 
 | |
| 使用此参数指定在差异期间应忽略的一个或多个行。这用于配置中由系统自动更新的行。此参数采用正则表达式列表或精确行匹配。 | |
| 
 | |
| 配置节中应配置的命令的有序集合。这些命令必须与设备运行配置中的命令完全相同,以确保幂等性和正确的差异。请务必注意配置命令语法,因为某些命令会被设备配置解析器自动修改。 | |
| 指示模块如何将命令集与当前设备配置进行匹配。如果 match 设置为 line,则逐行匹配命令。如果 match 设置为 strict,则命令行的匹配会考虑位置。如果 match 设置为 exact,则命令行的匹配必须完全相同。最后,如果 match 设置为 none,则模块不会尝试将源配置与远程设备上的运行配置进行比较。 选项 
 | |
| 当将多行配置元素推送到 IOS 设备时,将使用此参数。它指定用作分隔符的字符。这仅适用于配置操作。 默认值:  | |
| 唯一标识命令应检查的节或层次结构的父级有序集合。如果省略 parents 参数,则会针对顶层或全局命令集检查命令。 | |
| 指示模块如何在设备上执行配置。如果 replace 参数设置为 line,则会将修改的行以配置模式推送到设备。如果 replace 参数设置为 block,则当任何行不正确时,会将整个命令块以配置模式推送到设备。 选项 
 | |
| 默认情况下,模块将连接到远程设备并检索当前运行配置,以用作与源内容进行比较的基础。有时,不希望任务在 playbook 中的每个任务都获取当前的运行配置。running_config 参数允许实现者传入配置,以用作比较的基本配置。此选项的配置行应类似于它们在设备运行配置中出现时的样子,包括缩进,以确保幂等性和正确的差异。 | |
| 当对设备运行配置进行更改时,默认情况下不会将更改复制到非易失性存储器。使用此参数将在之前更改此行为。如果参数设置为 always,则运行配置将始终复制到启动配置,并且 modified 标志将始终设置为 True。如果参数设置为 modified,则仅当运行配置自上次保存到启动配置以来已更改时,才会将其复制到启动配置。如果参数设置为 never,则永远不会将运行配置复制到启动配置。如果参数设置为 changed,则仅当任务进行了更改时,才会将运行配置复制到启动配置。changed 在 Ansible 2.5 中添加。 选项 
 | |
| 指定包含要加载的配置或配置模板的源文件的路径。源文件的路径可以是 Ansible 控制主机上的完整路径,也可以是 playbook 或角色根目录的相对路径。此参数与 lines 和 parents 互斥。源文件中的配置行应类似于它们在设备运行配置中出现时的样子,包括缩进,以确保幂等性和正确的差异。 | 
备注
注意
- 已在 CML 上针对 Cisco IOSXE 版本 17.3 进行了测试。 
- 为了确保幂等性和正确的差异,相关模块选项中的配置行应类似于它们在设备运行配置中出现时的样子,包括缩进。 
- 此模块与连接 - network_cli一起使用。请参阅 https://docs.ansible.org.cn/ansible/latest/network/user_guide/platform_ios.html
- 有关使用 Ansible 管理网络设备的更多信息,请参阅 :ref:`Ansible 网络指南 <network_guide>` 
- 有关使用 Ansible 管理 Cisco 设备的更多信息,请参阅 `Cisco 集成页面 <https://ansible.org.cn/integrations/networks/cisco>`_。 
示例
- name: Configure top level configuration
  cisco.ios.ios_config:
    lines: hostname {{ inventory_hostname }}
- name: Configure interface settings
  cisco.ios.ios_config:
    lines:
      - description test interface
      - ip address 172.31.1.1 255.255.255.0
    parents: interface Ethernet1
- name: Configure ip helpers on multiple interfaces
  cisco.ios.ios_config:
    lines:
      - ip helper-address 172.26.1.10
      - ip helper-address 172.26.3.8
    parents: "{{ item }}"
  with_items:
    - interface Ethernet1
    - interface Ethernet2
    - interface GigabitEthernet1
- name: Configure policer in Scavenger class
  cisco.ios.ios_config:
    lines:
      - conform-action transmit
      - exceed-action drop
    parents:
      - policy-map Foo
      - class Scavenger
      - police cir 64000
- name: Load new acl into device
  cisco.ios.ios_config:
    lines:
      - 10 permit ip host 192.0.2.1 any log
      - 20 permit ip host 192.0.2.2 any log
      - 30 permit ip host 192.0.2.3 any log
      - 40 permit ip host 192.0.2.4 any log
      - 50 permit ip host 192.0.2.5 any log
    parents: ip access-list extended test
    before: no ip access-list extended test
    match: exact
- name: Check the running-config against master config
  cisco.ios.ios_config:
    diff_against: intended
    intended_config: "{{ lookup('file', 'master.cfg') }}"
- name: Check the startup-config against the running-config
  cisco.ios.ios_config:
    diff_against: startup
    diff_ignore_lines:
      - ntp clock .*
- name: Save running to startup when modified
  cisco.ios.ios_config:
    save_when: modified
- name: For idempotency, use full-form commands
  cisco.ios.ios_config:
    lines:
      # - shut
      - shutdown
    # parents: int gig1/0/11
    parents: interface GigabitEthernet1/0/11
# Set boot image based on comparison to a group_var (version) and the version
# that is returned from the `ios_facts` module
- name: Setting boot image
  cisco.ios.ios_config:
    lines:
      - no boot system
      - boot system flash bootflash:{{new_image}}
    host: "{{ inventory_hostname }}"
  when: ansible_net_version != version
- name: Render a Jinja2 template onto an IOS device
  cisco.ios.ios_config:
    backup: true
    src: ios_template.j2
- name: Configurable backup path
  cisco.ios.ios_config:
    src: ios_template.j2
    backup: true
    backup_options:
      filename: backup.cfg
      dir_path: /home/user
# Example ios_template.j2
# ip access-list extended test
#  permit ip host 192.0.2.1 any log
#  permit ip host 192.0.2.2 any log
#  permit ip host 192.0.2.3 any log
#  permit ip host 192.0.2.4 any log
返回值
常见返回值记录在 此处,以下是此模块独有的字段
| 键 | 描述 | 
|---|---|
| 备份文件的完整路径 返回值: 当 backup 为 yes 时 示例:  | |
| 将推送到远程设备的命令集 返回值: 总是 示例:  | |
| 从备份文件名中提取的日期 返回值: 当 backup 为 yes 时 示例:  | |
| 备份文件的名称 返回值: 当 backup 为 yes 并且未在备份选项中指定 filename 时 示例:  | |
| 备份文件的完整路径,不包括时间戳 返回值: 当 backup 为 yes 并且未在备份选项中指定 filename 时 示例:  | |
| 从备份文件名中提取的时间 返回值: 当 backup 为 yes 时 示例:  | |
| 将推送到远程设备的命令集 返回值: 总是 示例:  | 
