That was it!. Thanks. I had no idea I had to make it executable or what 
that did. I'm traditionally a powershell guy :(
Is there any way to remove my domain name from this post? I realized I 
forgot to edit that out.

On Monday, April 25, 2016 at 7:49:04 AM UTC-7, J Hawkesworth wrote:
>
> Actually... I'd been meaning to create dynamic inventory script myself, so 
> I had a go based on your code above (many thanks).
>
> You might need a #! at the top of the script  (looking at some of the 
> other examples)
>
> #!/usr/bin/env python
> # -*- coding: utf-8 -*-
>
> Only other thing I had to do was remove all my debug output so the 
> response only contained json, otherwise I got the error you describe above.
>
> Hope this helps,
>
> Jon
>
> On Monday, April 25, 2016 at 2:14:26 PM UTC+1, J Hawkesworth wrote:
>>
>> Looks to me like its not running your script, just trying to parse it as 
>> a static inventory file.
>>
>> Did you set your non-essential-servers.py script to be executable?
>>
>> Looking here: 
>> http://docs.ansible.com/ansible/intro_dynamic_inventory.html#using-inventory-directories-and-multiple-inventory-sources
>>  
>> it says 
>>
>> "In an inventory directory, executable files will be treated as dynamic 
>> inventory sources and most other files as static sources."
>>
>> So I think you might just need to 
>>
>> chmod u+x non-essential-servers.py
>>
>>
>>
>> On Monday, April 25, 2016 at 1:11:12 PM UTC+1, Jared Jenkins wrote:
>>>
>>> Hello all, I'm new to python and ansible in general. I feel like I can't 
>>> use this unless I plug into AD. I spent a great deal of time trying to 
>>> learn python for a dynamic inventory and I'm completely stumped. The json 
>>> seems to check out with the doc almost exact.
>>>
>>> I'm running ansible from os x using python 2.7.11 and ansible 2.0.1.0
>>>
>>> Here's my python script
>>>
>>> non-essential-servers.py
>>> ==============================
>>> # import class and constants
>>> from ldap3 import Server, Connection, ALL, NTLM, Tls
>>> import json
>>> import ssl
>>>
>>> #prompt for ldapusername and password
>>> #ldapusr = ("playnetwork.com\\")
>>> #ldapusr += raw_input("Username (use a read-only account):")
>>> #ldappwd = getpass.getpass("Password for " + ldapusr + ":")
>>>
>>>
>>> # define the server and the connection
>>>
>>> server = Server('reddc2.playnetwork.com', use_ssl=True)
>>> conn = Connection(server, user="domain\\username", password="password", 
>>> authentication=NTLM, auto_bind=True)
>>> #conn = Connection(server, user="playnetwork.com\\ldapusr", 
>>> password=ldappwd, authentication=NTLM, auto_bind=True)
>>>
>>> conn.open()
>>> conn.bind()
>>> conn.entries
>>> conn.search('OU=Servers, OU=PlayNetwork, DC=playnetwork, DC=com', 
>>> '(objectclass=computer)', attributes=["name"])
>>>
>>> names = []
>>> for x in conn.response:
>>>     names.append(x['attributes']['name'][0])
>>>
>>> conn.unbind()
>>>
>>> hosts = {}
>>> hosts['hosts'] = names
>>> var = {'a':True}
>>>
>>> export = {}
>>> export['servers'] = hosts
>>> export['vars'] = var
>>> print json.dumps(export, sort_keys=True, indent=4, separators=(',', ': 
>>> '))
>>> ====================
>>> Simplied the json looks like this
>>> {
>>>     "servers": {
>>>         "hosts": [
>>>             "SERVER1",
>>>             "SERVER2",
>>>             "SERVER3",
>>>         ]
>>>     },
>>>     "vars": {
>>>         "a": true
>>>     }
>>> }
>>>
>>> when I run 
>>> ansible -i non-essential-servers.py all -m win_ping
>>>
>>> I get the error
>>> ERROR! non-essential-servers.py:2: Expected key=value host variable 
>>> assignment, got: ldap3
>>>
>>> I feel like I'm not "printing" like I should or not closing my ldap 
>>> connection properly.
>>> Thank you!
>>>
>>

-- 
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/6e07bf5c-bd9f-40a3-b334-43db598b539c%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to