Невозможно разобрать скрипт инвентаря как инвентарь - PullRequest
0 голосов
/ 01 марта 2019

Мой скрипт Python динамически запрашивает и генерирует файл JSON следующим образом:

{
    "all": {
      "hosts": [
        "192.158.1.1"
      ], 
      "vars": {
        "ansible_become_method": "sudo", 
        "ansible_become": "yes"
      }
    }
  }

Но каким-то образом, когда я выполняю команду ниже

ansible -i script.py -m ping 

, он выдает следующие предупреждающие сообщения

  • [ПРЕДУПРЕЖДЕНИЕ] Невозможно проанализировать /etc/ansible/script.py в качестве источника инвентаризации
  • [ПРЕДУПРЕЖДЕНИЕ] Инвентаризация не была проанализирована, доступен только неявный localhost.
  • [ПРЕДУПРЕЖДЕНИЕ], если список хостов пуст, доступен только локальный хост.Обратите внимание, что неявный localhost не соответствует 'all'

Я не знаю, что я пропустил или ошибался, поскольку я новичок в динамическом инвентаре с Ansible.

КогдаЯ запускаю ansible-inventory -i script.py --list Я получил следующий ответ

{
    "_meta": {
        "hostvars": {}
    }, 
    "all": {
        "children": [
            "ungrouped"
        ]
    }, 
    "ungrouped": {}
}

Моя версия Ansible 2.7.7

Плагин инвентаризации - скрипт

enable_plugins = script

[Обновлено] Запуск -v по предложению Стива дает мне немного больше

 [WARNING]:  * Failed to parse /etc/ansible/newhost.py with script plugin: failed to parse executable inventory script results from /etc/ansible/script.py: Syntax
Error while loading YAML.   mapping values are not allowed in this context  The error appears to have been in '<string>': line 3, column 8, but may be elsewhere in the
file depending on the exact syntax problem.


 File "/usr/lib/python2.7/site-packages/ansible/plugins/inventory/script.py", line 125, in parse
    raise AnsibleError("failed to parse executable inventory script results from {0}: {1}\n{2}".format(path, to_native(e), err))

Ответы [ 2 ]

0 голосов
/ 11 июня 2019

Вам необходимо выполнить команду, подобную этой

ansible-inventory -i 'path-to-the-file/script.py' --list

Важно иметь кавычки.На OsX для меня это была проблема.

0 голосов
/ 01 марта 2019

Ваш сценарий должен быть исполняемым:
$ chmod a+x script.py

См. Документы по использованию сценариев здесь .

Ваш сценарий также должен принять определенноеаргументы .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...