This error shows:
fatal: [SW1]: FAILED! => {"msg": "template error while templating string:
no filter named 'clay584.genie.parse_genie'. String: {{
neighbors['stdout'][0] | clay584.genie.parse_genie(command='show cdp
neighbors', os='ios') }}"}
This is the full playbook I am using:
---
- name: Interface Descrpitions
hosts: uwioc-switches
gather_facts: no
connection: network_cli
collections:
- clay584.genie
vars:
ansible_python_interpreter: "{{ ansible_playbook_python }}"
tasks:
- name: Run show cdp neighbors
ios_command:
commands:
- show cdp neighbors
register: neighbors
# Using the Genie Filter Plugin from the Genie Parse Role
# Set pyats_neighbors as a dictionary
- name: Set fact with Genie Filter Plugin
set_fact:
pyats_neighbors: "{{ neighbors['stdout'][0] |
clay584.genie.parse_genie(command='show cdp neighbors', os='ios') }}"
Tried changing vars to set_facts too, but didn't work.
On Monday, June 22, 2020 at 4:16:54 PM UTC-4, J C wrote:
>
> I am using the collection not the role. So it looks like this at the
> top. Had to add the interpreter variable because Ansible kept using Python
> 2
>
> ---
> - name: Interface Descrpitions
> hosts: all
> gather_facts: no
> connection: network_cli
> collections:
> - clay584.genie
> vars:
> ansible_python_interpreter: "{{ ansible_playbook_python }}"
>
> On Mon, Jun 22, 2020 at 2:44 PM Jason <[email protected] <javascript:>>
> wrote:
>
>> Thanks alot.
>>
>> I have been getting this error for the past few days when trying to use
>> genie:
>>
>> fatal: [SW1]: FAILED! => {
>> "msg": "template error while templating string: no filter named
>> 'clay584.genie.parse_genie'. String: {{ neighbors['stdout'][0] |
>> clay584.genie.parse_genie(command='show cdp neighbors', os='ios') }}"
>> }
>>
>> *This is my playbook (what you sent but I needed to import the role
>> first):*
>> - hosts: uwioc-switches
>> gather_facts: no
>> tasks:
>> - name: Import role
>> include_role:
>> name: clay584.parse_genie
>>
>> - name: Run show cdp neighbors
>> ios_command:
>> commands:
>> - show cdp neighbors
>> register: neighbors
>>
>> # Using the Genie Filter Plugin from the Genie Parse Role
>> # Set pyats_neighbors as a dictionary
>> - name: Set fact with Genie
>> - name: Import role
>> include_role:
>> name: clay584.parse_genie
>>
>> - name: Run show cdp neighbors
>> ios_command:
>> commands:
>> - show cdp neighbors
>> register: neighbors
>>
>> # Using the Genie Filter Plugin from the Genie Parse Role
>> # Set pyats_neighbors as a dictionary
>> - name: Set fact with Genie Filter Plugin
>> set_fact:
>> pyats_neighbors: "{{ neighbors['stdout'][0] |
>> clay584.genie.parse_genie(command='show cdp neighbors', os='ios') }}"
>>
>>
>> - name: Add interface description
>> ios_interfaces:
>> config:
>> - name: "{{ item.value.local_interface }}"
>> description: "{{ item.value.device_id }} - {{
>> item.value.port_id }}"
>> state: merged
>> loop: "{{ q('dict', pyats_neighbors.index) }}"
>> when: item.value.port_id is "AIR-AP280"
>>
>> My python version is 3.6.8 and Ansible is 2.9.9
>>
>> I followed this guide to install the necessary libraries:
>> https://developer.cisco.com/codeexchange/github/repo/clay584/parse_genie/
>>
>>
>> The error still persists. Also posted the issue on GitHub. Not sure if
>> it is bug in the parsing library.
>>
>> Any assistance would greatly be appreciated.
>>
>> Thanks.
>>
>> On Monday, June 22, 2020 at 9:07:18 AM UTC-4, J C wrote:
>>>
>>> Something like that I suppose.
>>>
>>>
>>> #Sets a varaiable for cdp neighbor detail
>>> - name: Run show cdp neighbors command
>>> ios_command:
>>> commands:
>>> - show cdp neighbors detail
>>> register: neighbors
>>>
>>> # Using the Genie Filter Plugin from the Genie Parse Role
>>> # Set pyats_neighbors as a dictionary
>>> - name: Set fact with Genie Filter Plugin
>>> set_fact:
>>> pyats_neighbors: "
>>> {{ neighbors['stdout'][0] | clay584.genie.parse_genie(command='show cdp
>>> neighbors detail', os='ios') }}
>>> "
>>> - name: Add interface desription
>>> ios_interfaces:
>>> config:
>>> - name: "{{ item.value.local_interface }}"
>>> description: "
>>> {{ item.value.device_id }} - {{ item.value.port_id }}"
>>> state: merged
>>> loop: "{{ q('dict', pyats_neighbors.index) }}"
>>> when: item.value.port_id is "AIR-AP280"
>>>
>>> On Sat, Jun 20, 2020 at 1:34 PM Jason <[email protected]> wrote:
>>>
>>>> Thanks. If you don't mind me asking because I am not familiar with
>>>> this, can you give me an example of how to use the set fact and when
>>>> statement for my case?
>>>>
>>>> On Friday, June 19, 2020 at 11:22:31 PM UTC-4, J C wrote:
>>>>>
>>>>> I would use the genie module and run the show cdp neighbor command.
>>>>> Then set fact and use that with the when command.
>>>>>
>>>>> On Fri, Jun 19, 2020, 10:05 PM Jason <[email protected]> wrote:
>>>>>
>>>>>> I am working on a project that would require me to bump (shutdown and
>>>>>> re-enable) switchports that are connected to an Access Point.
>>>>>>
>>>>>> I have created a playbook to run a command "show cdp neighbours" on
>>>>>> the switch, and that output would look like:
>>>>>> [image: sh cdp neighbours.JPG]
>>>>>>
>>>>>> What I want to do, is to use ansible to only run a command (ansible
>>>>>> play) on Gig 1/0/19 in this case. For other switches, it may be more
>>>>>> switchports and maybe in different format (eg. Gi 2/0/35).
>>>>>>
>>>>>> Is there a way to filter ansible output by looking for 'AIR-AP280'
>>>>>> and then extract that corresponding Local Interface (switchport number)?
>>>>>>
>>>>>> Or if there is another way to get done what I want, then great.
>>>>>>
>>>>>> Any suggestions/recommendations?
>>>>>>
>>>>>> It is over 50 switches, so it would be great if ansible can do what I
>>>>>> want to do.
>>>>>>
>>>>>> --
>>>>>> 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 view this discussion on the web visit
>>>>>> https://groups.google.com/d/msgid/ansible-project/fd4b0f7a-85ba-4921-b252-9b760d1bd3d8o%40googlegroups.com
>>>>>>
>>>>>> <https://groups.google.com/d/msgid/ansible-project/fd4b0f7a-85ba-4921-b252-9b760d1bd3d8o%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>> .
>>>>>>
>>>>> --
>>>> 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 view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/ansible-project/644c6f2a-5a02-49fd-b84a-1c74ad722daao%40googlegroups.com
>>>>
>>>> <https://groups.google.com/d/msgid/ansible-project/644c6f2a-5a02-49fd-b84a-1c74ad722daao%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>> --
>> 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] <javascript:>.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/ansible-project/9a09ee0c-1184-4d74-a41f-b69a89fca04co%40googlegroups.com
>>
>> <https://groups.google.com/d/msgid/ansible-project/9a09ee0c-1184-4d74-a41f-b69a89fca04co%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>
--
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 view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/36cda932-fe68-499b-a70b-acf81cd693cfo%40googlegroups.com.