You need to add a new line under [defaults] collections_paths = /path/to/collections
On Tue, Jun 23, 2020 at 10:29 AM Jason <[email protected]> wrote: > No I have never used a collection before. So my ansible.cfg is currently > to the default > > On Tuesday, June 23, 2020 at 11:22:11 AM UTC-4, J C wrote: >> >> Not sure it seems like it is looking for the filter. Have you used a >> collection before? Is the collections_path defined in the ansible.cfg? >> >> On Mon, Jun 22, 2020 at 3:49 PM Jason <[email protected]> wrote: >> >>> 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]> 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]. >>>>> 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 >>> <https://groups.google.com/d/msgid/ansible-project/36cda932-fe68-499b-a70b-acf81cd693cfo%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/cda449ee-3155-40ab-9feb-474d1355bf8eo%40googlegroups.com > <https://groups.google.com/d/msgid/ansible-project/cda449ee-3155-40ab-9feb-474d1355bf8eo%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/CAANJ-QTTpajtSNPxB61AsVcMfYCEVzj6RcWbi8NC0efnkKFC_Q%40mail.gmail.com.
