我有一个简单的ansible playbook,可以在大多数ios设备上正常工作。当我执行“show conf”时,我的一些3850交换机出现故障,看起来像是超时。如何使用ios_command模块(也可能是ios_config)为命令完成指定更长的非默认超时?
有用的细节:
剧本:
---
- hosts: ios_devices
gather_facts: no
connection: local
tasks:
- name: OBTAIN LOGIN CREDENTIALS
include_vars: secrets.yaml
- name: DEFINE PROVIDER
set_fact:
provider:
host: "{{ inventory_hostname }}"
username: "{{ creds['username'] }}"
password: "{{ creds['password'] }}"
- name: LIST NAME SERVERS
ios_command:
provider: "{{ provider }}"
commands: "show run | inc name-server"
register: dns_servers
- debug: var=dns_servers.stdout_lines
成功运行:
$ ansible-playbook listnameserver.yaml -i inventory / onehost
播放[ios_devices] ******************************************* ************************************************** ********************
任务[获取登录证明书] ***************************************** ************************************************** ********* 好的:[iosdevice1.example.com]
任务[定义提供者] ****************************************** ************************************************** ***************** 好的:[iosdevice1.example.com]
任务[名单服务器] ***************************************** ************************************************** **************** 好的:[iosdevice1.example.com]
任务[调试] ******************************************* ************************************************** ************************** 好的:[iosdevice1.example.com] => { “dns_servers.stdout_lines”:[ [ “ip name-server 10.1.1.166”, “ip name-server 10.1.1.168” ] ] }
回放********************************************* ************************************************** ************************** iosdevice1.example.com:ok = 4 changed = 0 unreachable = 0 failed = 0
运行不成功:
$ ansible-playbook listnameserver.yaml -i inventory / onehost
播放[ios_devices] ******************************************* ************************************************** ********************
任务[获取登录证明书] ***************************************** ************************************************** ********* 好的:[iosdevice2.example.com]
任务[定义提供者] ****************************************** ************************************************** ***************** 好的:[iosdevice2.example.com]
任务[名单服务器] ***************************************** ************************************************** **************** 致命的:[iosdevice2.example.com]:失败了! => {“已更改”:false,“msg”:“超时尝试发送命令:show run | inc name-server”,“rc”:1} 重试,使用: - limit @ / home / sample / ansible-playbooks / listnameserver.retry
回放********************************************* ************************************************** ************************** iosdevice2.example.com:ok = 2 changed = 0 unreachable = 0 failed = 1
答案 0 :(得分:0)
如果请求花费的时间超过此ios_command将失败,则默认超时为10秒。
您可以将超时添加为提供程序变量中的键,如下所示:
- name: DEFINE PROVIDER
set_fact:
provider:
host: "{{ inventory_hostname }}"
username: "{{ creds['username'] }}"
password: "{{ creds['password'] }}"
timeout: 30
答案 1 :(得分:0)
如果提供者中已有超时值,这是一种仅更新变量中键的便捷方法。
- name: Update existing provider timeout key
set_fact:
provider: "{{ provider | combine( {'timeout': '180'} ) }}"