Using Ansible ios_facts module

Here is a simple playbook to gather ios facts.

I took the output and pasted it into one of the may JSON lint/editors on 
line to easily see the structure and then added a debug statement for the 
key:value pair I wanted.  Version in this case.


---
- hosts: cisco 
  connection: local
  gather_facts: False
  ignore_errors: yes


  vars:
    cli:
        host: "{{ host }}"
        username: "{{ username }}"
        password: "{{ password }}"


  tasks:
    - name: Gather NX-OS Facts
      ios_facts:
        provider: "{{ cli }}"


      register: facts_output


    - debug: var=facts_output
    - debug: var=facts_output.ansible_facts.ansible_net_version


    - local_action: copy content="{{ facts_output }}" dest="./{{ 
inventory_hostname }}.txt"







TASK [debug] 
********************************************************************************************************************************************************
ok: [arctic-3650] => {
    "facts_output.ansible_facts.ansible_net_version": "03.06.06E"
}






On Saturday, January 20, 2018 at 8:57:38 AM UTC-8, Surjeet Singh wrote:
>
> Hi Peter,
>
> I am facing another issue with same i am trying to debug version only from 
> the results of show version using below method but it gives me variable 
> error. however when i run playbook -vvv i can see the show version command 
> is excuted and they are mapped to stdout and stdout_lines as you mention in 
> document. can you please help me with that or redirect me towards of link.
>
>       register: version
>     - debug: var = version.stdout[0].Version  
>
> Regards/surjeet
>
> On Saturday, September 3, 2016 at 8:58:39 AM UTC+5:30, Peter Sprygada 
> wrote:
>>
>> Hi Valerie,
>>
>> Since network devices such as IOS do not provide a shell environment nor 
>> the ability to download and run arbitrary executables, we are fairly 
>> constrained from using the current connection plugin module implemented in 
>> core.  So in order to build modules that work with network devices, we 
>> build an integration that effectively treats SSH or more appropriately 
>> said, CLI over SSH like an API.  During module execute, we build an SSH 
>> session to the remote device for the purposes of sending and receiving 
>> commands and output.  That is way we must specify connection=local.
>>
>> Peter
>>
>> On Fri, Sep 2, 2016 at 7:55 AM, Valérie P <[email protected]> wrote:
>>
>>> Hello John, 
>>>
>>> I've had a little bit of trouble with the ios_* modules and thanks to 
>>> the source found in this sample it is now functional, anyhow I do not 
>>> understand every line of it, and particularly the "connection: local" one. 
>>> What is it used for? The ansible documentation refer to the connection: 
>>> local as a way to make the playbook play locally. 
>>>
>>> "It may be useful to use a playbook locally, rather than by connecting 
>>> over SSH. This can be useful for assuring the configuration of a system by 
>>> putting a playbook in a crontab. This may also be used to run a playbook 
>>> inside an OS installer, such as an Anaconda kickstart.
>>>
>>> To run an entire playbook locally, just set the “hosts:” line to “hosts: 
>>> 127.0.0.1” and then run the playbook like so:
>>>
>>> ansible-playbook playbook.yml --connection=local
>>>
>>> Alternatively, a local connection can be used in a single playbook play, 
>>> even if other plays in the playbook use the default remote connection type:
>>>
>>> - hosts: 127.0.0.1
>>>   connection: local
>>>
>>> "
>>> Why is the connection: local parameters a must for it to work?
>>>
>>> Thanks in advance!
>>> Valerie
>>>
>>>
>>> Le mercredi 24 août 2016 09:20:15 UTC+2, John Barker a écrit :
>>>>
>>>> I've added a comment with the the corrected playbook sample
>>>>
>>>> https://gist.github.com/privateip/11b042e569585ee9248a
>>>>
>>>> Regards,
>>>> John Barker
>>>>
>>>> On Wednesday, 10 August 2016 15:32:23 UTC+1, Bharath Bharadwaj wrote:
>>>>>
>>>>> Hi All,
>>>>>
>>>>> I'm new to Ansible and yml, my goal is to automate a part of network 
>>>>> operation, I just want to start with a very simple output, copied below 
>>>>> is 
>>>>> my playbook, I'm trying to run a show version, but i'm getting error when 
>>>>> executing the output, yet when i try the same yml script through yml 
>>>>> validator, there is no errors.
>>>>>
>>>>> My Playbook
>>>>>
>>>>> vars:
>>>>>     cli:
>>>>>     host: "{{ network }}"
>>>>>     username: admin
>>>>>     password: test@123
>>>>>     transport: cli
>>>>>
>>>>> tasks:
>>>>> - name: run multiple commands on remote nodes
>>>>>   ios_command:
>>>>>   - commands: show version
>>>>>   - provider: "{{ cli }}"
>>>>>   - transport: cli
>>>>>
>>>>> Error:
>>>>> "ERROR! playbooks must be a list of plays
>>>>>
>>>>> The error appears to have been in 
>>>>> '/etc/ansible/playbooks/cisco_ios.yml': line 1, column 1, but may
>>>>> be elsewhere in the file depending on the exact syntax problem.
>>>>>
>>>>> The offending line appears to be:
>>>>>
>>>>>
>>>>> vars:
>>>>> ^ here"
>>>>>
>>>> -- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "Ansible Project" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to [email protected].
>>> To post to this group, send email to [email protected].
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/ansible-project/6383da04-b68b-4a33-85e9-87318eb0a5b8%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/ansible-project/6383da04-b68b-4a33-85e9-87318eb0a5b8%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/826a69bb-d730-48f6-a7ce-103808c1f0f0%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to