Worth running with -vvvvv to see if there is any more information to help 
you debug the problem.

Try this syntax as my guess is ansible is looking for a module called 
'module' instead of your custome 'mssql_query' module

- name: "Execut my module on MSSQL"
  mssql_query:
   login_host: my_database_name
   port: 1433
   login_user: sa_ofs
   login_password: my_password
   query: SELECT * FROM dbo.my_table
   db: my_database
   autocommit: true
   tds_version: 7.1
   as_dict: false
 delegate_to: my_database_name

Hope this helps,

Jon


On Monday, December 30, 2019 at 2:42:45 PM UTC, Karther wrote:
>
> Hello,
>
> I create module in file /library/module.py with this content :
>
> #!/usr/bin/python
> # -*- coding: utf-8 -*-
>
>
> from ansible.module_utils.basic import AnsibleModule
> from ansible.module_utils.parsing.convert_bool import BOOLEANS
>
>
> DOCUMENTATION = '''
> ---
> module: mssql_query
> author: Mohamed El Morabity
> short_description: Run a SQL query on a Microsoft SQL Server database.
> description:
>   - Run a SQL query on a Microsoft SQL Server database.
> options:
>   login_user:
>     description:
>       - The username used to authenticate with.
>     required: false
>     default: ''
>   login_password:
>     description:
>       - The password used to authenticate with.
>     required: false
>     default: ''
>   login_host:
>     description:
>       - The host running the database.
>     required: false
>     default: ''
>   port:
>     description:
>       - The database port to connect to.
>     type: int
>     required: false
>     default: 1433
>     aliases: ['login_port']
>   db:
>     description:
>       - The name of the database.
>     required: false
>     default: ''
>   query:
>     description:
>       - The SQL query to run.
>     required: True
>   autocommit:
>     description:
>       - Automatically commit the change only if the import succeed. 
> Sometimes it is necessary to use autocommit=true, since some content can't 
> be changed within a transaction.
>     required: false
>     default: false
>   tds_version:
>     description:
>       - The TDS protocol version to use.
>     required: false
>     default: 7.1
>   as_dict:
>     description:
>       - If true, return results as a list of dictionaries.
>     type: bool
>     required: false
>     default: false
> notes:
>   - Requires the pymssql Python package on the remote host.
> requirements: ['pymssql']
> '''
>
> EXAMPLES = '''
> # Run SQL query
> - local_action:
>     module: mssql_query
>     db: mydatabase
>     query: SELECT * FROM myschema.mytable
> '''
>
>
> try:
>     import pymssql
>
>     HAS_LIB = True
> except ImportError:
>     HAS_LIB = False
>
>
> def run_query(module, db_connection, as_dict):
>     """Run a SQL query."""
>
>     query = module.params['query']
>
>     result = []
>     try:
>         cursor = db_connection.cursor(as_dict=as_dict)
>         cursor.execute(query)
>         try:
>             result = cursor.fetchall()
>         except pymssql.OperationalError as ex:
>             if 'Statement not executed or executed statement has no 
> resultset' in ex.args:
>                 pass
>         changed = cursor.rowcount != 0
>         db_connection.commit()
>         cursor.close()
>     except pymssql.ColumnsWithoutNamesError as ex:
>         # If no column name in result, re-run without as dict
>         return run_query(module, db_connection, False)
>     except pymssql.Error as ex:
>         if ex.args:
>             module.fail_json(msg='Unable to execute query: 
> {}'.format(ex[1]), errno=ex[0])
>         module.fail_json(msg='Unable to execute query: {}'.format(ex))
>     finally:
>         if db_connection is not None:
>             db_connection.close()
>
>     return (changed, result, cursor.rowcount)
>
>
> def main():
>     """Main execution path."""
>
>     module = AnsibleModule(
>         argument_spec={
>             'login_host': {'type': 'str', 'default': ''},
>             'port': {'type': 'int', 'default': 1433, 'aliases': 
> ['login_port']},
>             'login_user': {'type': 'str', 'default': ''},
>             'login_password': {'type': 'str', 'default': '', 'no_log': 
> True},
>             'query': {'required': True, 'type': 'str'},
>             'db': {'type': 'str', 'default': ''},
>             'autocommit': {'type': 'bool', 'choices': BOOLEANS, 'default': 
> False},
>             'tds_version': {'type': 'str', 'default': '7.1'},
>             'as_dict': {'type': 'bool', 'choices': BOOLEANS, 'default': 
> False},
>         }
>     )
>
>     if not HAS_LIB:
>         module.fail_json(msg='pymssql is required for this module')
>
>     try:
>         db_connection = pymssql.connect(host=module.params['login_host'],
>                                         port=str(module.params['port']),
>                                         user=module.params['login_user'],
>                                         
> password=module.params['login_password'],
>                                         database=module.params['db'],
>                                         
> tds_version=module.params['tds_version'])
>         db_connection.autocommit(module.params['autocommit'])
>     except pymssql.Error as ex:
>         module.fail_json(msg='Unable to connect to database: 
> {}'.format(ex))
>
>     (changed, result, rowcount) = run_query(module, db_connection,
>                                             
> as_dict=module.params['as_dict'])
>
>     module.exit_json(changed=changed, result=result, rowcount=rowcount)
>
>
> if __name__ == '__main__':
>     main()
>
>
>
>
> #########################################################################
>
>
> And in my task i have this content :
>
> - name: "Execut my module on MSSQL"
>   module: mssql_query
>     login_host: my_database_name
>     port: 1433
>     login_user: sa_ofs
>     login_password: my_password
>     query: SELECT * FROM dbo.my_table
>     db: my_database
>     autocommit: true
>     tds_version: 7.1
>     as_dict: false
>   delegate_to: my_database_name
>
>
> The module is here : 
> https://github.com/melmorabity/ansible-mssql-query/blob/master/mssql_query.py
>
> And when i use this task, ansible tell me that there is problem syntaxe 
> ... 
>
> I don't understand whyyy ????
>
> One expert can help me please !! :)
>
> Regards,
>
> Karther
>

-- 
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/89fd6435-7f31-4195-8356-9f89893627fa%40googlegroups.com.

Reply via email to