Well at this point I would probably remove genie.  Then create a virtual
python environment.  Run the pip install commands and see if that works for
you.  If you are still running into issues I would reach out to the guys
who made genie - I think Clay is in the group there too.

https://eurl.io/#r18UzrQVr



---------- Forwarded message ---------
From: Jason <[email protected]>
Date: Tue, Jun 23, 2020, 12:30 PM
Subject: Re: [ansible-project] Ansible to connect to certain switchports on
Cisco 2960
To: Ansible Project <[email protected]>


I added it. Now, this shows:

fatal: [SW1]: FAILED! => {
    *"msg": "parse_genie: Genie package is not installed. To install, run
'pip install genie'."*
}

When I do pip or pip3 install genie, it says requirements already satisfied
(as I already installed it).

Just to show you what my directories look like:

[image: directory genie.JPG]

And under [defaults] in my ansible.cfg:

*collections_paths = /etc/ansible/collections/ansible_collections/*

Tried putting a less specific and then a more specifc path to the
collections folder also. (= /etc/ansible/collections, =
/etc/ansible/collections/ansible_collections/clay584/genie)

Before this, I did a * ansible-galaxy collection install clay584.genie* to
install the collection and it said this:
Installing 'clay584.genie:0.1.11' to
'/root/.ansible/collections/ansible_collections/clay584/genie'

Did I do anything wrong?


On Tuesday, June 23, 2020, at 11:34:31 AM UTC-4, J C wrote:
>
> 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/cb187525-7951-44d3-b7d5-3dfb704b1ffco%40googlegroups.com
<https://groups.google.com/d/msgid/ansible-project/cb187525-7951-44d3-b7d5-3dfb704b1ffco%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-QRKJJryLrWsuUQUKWWPmh2c1eCoUKJrmcyyTi5M3f3sBw%40mail.gmail.com.

Reply via email to