ansible Динамическая инвентаризация Значение хостов не принимает список хостов

Я пытаюсь создать динамический инвентарь для своей установки. везде я вижу примеры IP-адресов и имени хоста в виде списка. но когда я предоставляю значение хостов в виде списка, это ошибка и говорит, что это должно быть dict.

Ниже инвентаря, который я предоставляю для playbook,

{
    "all": {
        "hosts": ["192.168.1.2", "192.168.1.3", "192.168.1.4"],
        "vars": {
             "ansible_ssh_user": "root"
        },
        "_meta": {
            "hostvars": {}
        }
    },
    "webserver": {
        "hosts": ["192.168.1.3", "192.168.1.4"],
        "vars": {
             "ansible_ssh_user": "root"
        },
        "_meta": {
            "hostvars": {}
        }
    },
    "dbserver": {
        "hosts": ["192.168.1.2"],
        "vars": {
             "ansible_ssh_user": "root"
        },
        "_meta": {
            "hostvars": {}
        }
    }
}

он дает это предупреждение и ошибку

[WARNING]:  * Failed to parse /Users/rahulbhatu/playbooks/waf-
playbooks/inventory with yaml plugin: Invalid "hosts" entry for "all" group,
requires a dictionary, found "<type 'list'>" instead.

[WARNING]:  * Failed to parse /Users/rahulbhatu/playbooks/waf-
playbooks/inventory with ini plugin: Invalid host pattern 'all:' supplied,
ending in ':' is not allowed, this character is reserved to provide a port.

[WARNING]: Unable to parse /Users/rahulbhatu/playbooks/waf-playbooks/inventory
as an inventory source

[WARNING]: No inventory was parsed, only implicit localhost is available```
fatal: [{]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: ssh: Could not resolve hostname {: nodename nor servname provided, or not known", "unreachable": true}

Однако, когда я передаю его таким образом как dict и значение null, он работает, может ли кто-нибудь помочь мне в том, чего мне не хватает.

    "all": {
        "hosts": {
             "192.168.1.2": null,
             "192.168.1.3" : null,
             "192.168.1.4" : null
        },
        "vars": {
             "ansible_ssh_user": "root"
        },
        "_meta": {
            "hostvars": {}
        }
    },
    "webserver": {
        "hosts": {
            "192.168.1.3": null,
            "192.168.1.4": null
        },
        "vars": {
             "ansible_ssh_user": "root"
        },
        "_meta": {
            "hostvars": {}
        }
    },
    "dbserver": {
        "hosts": {
            "192.168.1.2": null
        },
        "vars": {
             "ansible_ssh_user": "root"
        },
        "_meta": {
            "hostvars": {}
        }
    }
}
0
задан 14 April 2020 в 12:48
1 ответ

Помимо вышеуказанной ошибки, вы можете получить ту же ошибку, если используете файл hosts .ini. Измените расширение на файл .yml, чтобы оно соответствовало фактическому формату файла. У меня было так просто, и это было решено так!

0
ответ дан 28 July 2021 в 19:14

Теги

Похожие вопросы