Hi,
I am new to this community and new ansible as so please excuse me of my stupid mistakes.
referring to peter's webinar i am trying to collect device information using reguler
expressions.it seems it through me error as bellow:-
TASK [network_facts : set hostname fact] ********************************************************************************************************************
task path: /etc/ansible/roles/network_facts/tasks/ios.yaml:14
fatal: [8.8.8.8]: FAILED! => {
"msg": "Unexpected templating type error occurred on ({{ output.stdout[2] | regex_search('^hostname (.+)$', '\\\\1') | first }}): 'NoneType' object is not iterable"
}
fatal: [5.5.5.5]: FAILED! => {
"msg": "Unexpected templating type error occurred on ({{ output.stdout[2] | regex_search('^hostname (.+)$', '\\\\1') | first }}): 'NoneType' object is not iterable"
}
to retry, use: --limit @/etc/ansible/facts.retry
PLAY RECAP **************************************************************************************************************************************************
5.5.5.5 : ok=2 changed=0 unreachable=0 failed=1
8.8.8.8 : ok=2 changed=0 unreachable=0 failed=1
i can confirm that ansible is able to login on the device and is able excute the required commend to collect the information but it seems reguler expression is not correct.
Here is my play book:
---
- name: collect device facts and display OS version
hosts: "{{ inventory | default('all') }}"
gather_facts: no
connection: local
roles:
- { role: network_facts }
tasks:
- debug: msg="Node {{ hostname }} is type {{ device_os }} running software version {{ version }}"
================================================================================
below is task yml file:-
---
- name: collect output from ios device
ios_command:
commands:
- show version
- show interfaces
- show running-config
provider: "{{ ios_provider }}"
register: output
# common facts
#
- name: set hostname fact
set_fact: hostname="{{ output.stdout[2] | regex_search('^hostname (.+)$', '\\1') | first }}"
- name: set interfaces fact
set_fact: interfaces="{{ output.stdout[1] | regex_findall('^[L|G|A|B|C|D||M|N|P|T|V]\\S+') }}"
- name: set version fact
set_fact: version="{{ output.stdout[0] | regex_search('Version (\\S+),', '\\1') | first }}"
- name: set config fact
set_fact: config="{{ output.stdout[2] }}"
- name: set config_lines fact
set_fact: config_lines="{{ config.split('\n') }}"
Regards/Surjeet