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/57388c38-d040-431e-97fc-0b8dad4f0800%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
