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 设计者附加一组命令,以便在命令集之后执行。 |
|
此参数将导致模块在进行任何更改之前,从远程设备创建当前 选项
|
|
这是一个包含与备份文件路径相关的可配置选项的字典对象。仅当 |
|
此选项提供以目录名称结尾的路径,其中将存储备份配置文件。如果目录不存在,则首先创建它,文件名或者是 |
|
用于存储备份配置的文件名。如果没有给出文件名,它将基于主机名、当前时间和日期以 <hostname>_config.<current-date>@<current-time> 格式生成。 |
|
如果需要进行更改,则要推送到命令堆栈的有序命令集。这允许 playbook 设计者有机会在推送任何更改之前执行配置命令,而不会影响如何将命令集与系统匹配。 |
|
此参数指定获取远程设备运行配置时是否收集所有默认值。启用后,模块将通过发出命令 选项
|
|
使用 当此选项配置为 *startup* 时,模块将返回运行配置与启动配置的差异。 当此选项配置为 *intended* 时,模块将返回运行配置与 当此选项配置为 *running* 时,模块将返回相对于对设备配置所做的任何更改的运行配置的之前和之后的差异。 选项
|
|
使用此参数指定在差异期间应忽略的一行或多行。这用于系统自动更新的配置中的行。此参数采用正则表达式或精确行匹配的列表。 |
|
|
|
应该在该部分配置的命令的有序集合。为了确保幂等性和正确的差异比较,这些命令必须与设备运行配置中找到的命令完全相同。请务必注意配置命令语法,因为某些命令会由设备配置解析器自动修改。 |
|
指示模块如何将命令集与当前设备配置进行匹配。如果将match设置为line,则逐行匹配命令。如果将match设置为strict,则命令行将根据位置进行匹配。如果将match设置为exact,则命令行必须完全匹配。最后,如果将match设置为none,则模块将不会尝试将源配置与远程设备上的运行配置进行比较。 选项
|
|
将多行配置元素推送到IOS设备时使用此参数。它指定用作分隔符的字符。这仅适用于配置操作。 默认: |
|
唯一标识应针对其检查命令的部分或层次结构的有序父集。如果省略parents参数,则将针对顶级或全局命令集检查命令。 |
|
指示模块如何在设备上执行配置。如果将replace参数设置为line,则修改后的行将以配置模式推送到设备。如果将replace参数设置为block,则如果任何一行不正确,则整个命令块将以配置模式推送到设备。 选项
|
|
默认情况下,模块将连接到远程设备并检索当前运行配置,将其用作与源内容进行比较的基准。有时,不需要让任务为剧本中的每个任务获取当前运行配置。running_config参数允许实现者传入用作比较基准配置的配置。此选项的配置行应类似于其在设备运行配置中出现时的样子,包括缩进,以确保幂等性和正确的差异比较。 |
|
对设备运行配置进行更改时,默认情况下不会将更改复制到非易失性存储器。使用此参数将在此之前更改。如果将参数设置为always,则运行配置将始终复制到启动配置,并且modified标志将始终设置为True。如果将参数设置为modified,则只有在自上次保存到启动配置以来运行配置已更改时,运行配置才会复制到启动配置。如果将参数设置为never,则运行配置将永远不会复制到启动配置。如果将参数设置为changed,则只有在任务进行了更改时,运行配置才会复制到启动配置。changed是在Ansible 2.5中添加的。 选项
|
|
指定包含要加载的配置或配置模板的文件的源路径。源文件的路径可以是Ansible控制主机上的完整路径,也可以是相对于剧本或角色根目录的相对路径。此参数与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
返回值
常用的返回值已在 此处 记录,以下是此模块特有的字段
键 |
描述 |
---|---|
备份文件的完整路径 返回:当备份为yes时 示例: |
|
将推送到远程设备的命令集 返回:始终 示例: |
|
从备份文件名中提取的日期 返回:当备份为yes时 示例: |
|
备份文件的名称 返回:当备份为yes且文件名未在备份选项中指定时 示例: |
|
备份文件的完整路径,不包括时间戳 返回:当备份为yes且文件名未在备份选项中指定时 示例: |
|
从备份文件名中提取的时间 返回:当备份为yes时 示例: |
|
将推送到远程设备的命令集 返回:始终 示例: |