【发布时间】:2019-08-08 20:55:22
【问题描述】:
我正在尝试使用 Ansible 升级 Cisco 路由器,并在我实际重新启动之前使用 cli_config 模块检查启动标记是否设置正确。
我正在尝试使用 when 子句来防止 playbook 应用更改,除非配置看起来正确
我想确保变量“文件名”——这是管理员传递给剧本的图像的名称——包含在检查启动文件的命令的输出中——它已注册到一个变量称为“boot_sys_marker_running_config”
我已经试过了:
when: filename in boot_sys_marker_running_config.stdout
我也试过了
when: filename == "boot_sys_marker_running_config.stdout"
我尝试在运行 playbook 时使用 -vvvv 选项调试这些,并且在 playbook 中设置了 debugger: always,但没有洞察力
我似乎总是知道条件不成功 - 但我看不到条件认为我希望它评估什么 - 有谁知道如何“调查”条件以便我可以适当地修改它?
剧本选项:
-e "filename=csr1000v-universalk9azn.16.11.01b.SPA.bin"
我在其中注册变量并尝试使用条件的部分剧本
- name: check to see that the correct boot system marker has been configured
cli_command:
command: "show run | i boot system"
register: boot_sys_marker_running_config ignore_errors: yes
- name: copy running config to startup when boot marker is correct
cli_command:
command: "copy running-config startup-config"
register: writing_config_to_startup
ignore_errors: yes
when: filename in boot_sys_marker_running_config.stdout
我有一个调试任务来显示 boot_sys_marker_running_config 的内容:
TASK [debug] ************************************************************************************************************************************************
ok: [r3-cvpn1.corp.ncsc.gov.uk] => {
"msg": {
"changed": false,
"failed": false,
"stdout": "boot system bootflash:csr1000v-universalk9azn.16.11.01b.SPA/packages.conf",
"stdout_lines": [
"boot system bootflash:csr1000v-universalk9azn.16.11.01b.SPA/packages.conf"
]
}
}
【问题讨论】:
-
你能粘贴剧本、输出或变量的值吗?
-
第一个任务输出也请。
-
它只显示“ok” - 所以粘贴了调试输出
-
你能检查一下是不是条件对齐的问题。什么时候应该用名字。
-
抱歉 - 粘贴时缩进不正常 - 已更正