getting facts from remote devices

24 views
Skip to first unread message

Surjeet Singh

unread,
Jan 19, 2018, 3:55:29 AM1/19/18
to Ansible Project
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
 
Reply all
Reply to author
Forward
0 new messages