Python script with Json output as inventory

Hello to everyone :slight_smile:
I’m quite new to Ansible.
I have used the Python API for ansible to connect to a few servers I have,
I want to get the inventory list for the python script from MySQL server, so as far as I understood the list should be in Json format (this is because each host have different ports)
But when I run the script I get a error that ansible couldn’t connect to the server:

This is the error i’m getting:

UP ***********
FAILED *******
DOWN *********
{
“_meta”: {
“hostvars”: {
“10.24.20.126”: {
“ansible_host”: “10.24.20.126” >>> Failed to connect to the host via ssh.

This is the full json I’m sending to the host_list variable in the python script
js = {“group”: {“hosts”: [“10.24.20.126”, “10.24.20.127”], “vars”: {“ansible_user”: “user”, “ansible_port”: 22}}, “_meta”: {“hostvars”: {“10.24.20.126”: {“ansible_host”: “10.24.20.126”, “ansible_user”: “user”, “ansible_port”: “22”}, “10.24.20.127”: {“host_specific_var”: “foo”}}}}

And this is the error i’m getting:

UP ***********
FAILED *******
DOWN *********
{
“_meta”: {
“hostvars”: {
“10.24.20.126”: {
“ansible_host”: “10.24.20.126” >>> Failed to connect to the host via ssh.

This ansible can connect to this server if i ping it using ansible (ansible -m ping 10.24.20.126)

10.24.20.126 | SUCCESS => {
“changed”: false,
“ping”: “pong”
}

the python script I took from here:
https://github.com/ansible/ansible/blob/devel/examples/scripts/uptime.py

And I just send into the host_list variable the JSON.

Any thought of why my script doesn’t work ?

Thank you evreyone

host_list cannot accept a JSON string. It expects either a CSV string of hosts, the path to an INI formatted file, or a path to a script that can be executed to return the JSON you are trying to pass directly to host_list.

So if my python script will run a python script that return JSON will it work ?
I mean if i do something like that:
$ python Ansible.py -i inv.py
And the inv.py will return JSON
Or it have to be
$ ansible -m ping -i inv.py

All this hassle is because I got different servers with different ports to access to the SSH, there is no way in the host_list in the python script to pass port for each host?