【问题标题】:Ansible dynamic inventory script does not get evaluatedAnsible 动态清单脚本未得到评估
【发布时间】:2022-11-10 03:05:39
【问题描述】:

我有一个自定义 python 脚本,可以生成与 Ansible 兼容的清单:

...

if __name__ == "__main__":
    with open("main.log", "a") as f:
        f.write(f"{sys.argv}\n")

    arg_parser = argparse.ArgumentParser(description=__doc__, prog=__file__)
...

当我手动运行它时,一切都很好:

python scripts/main.py --list

main.log 文件附加了一个新行:

['scripts/main.py', '--list']

我的ansible.cfg 启用了脚本插件:

[inventory]
enable_plugins = script

但是,当我尝试将脚本与 ansible-inventory 一起使用时,它失败了:

ansible-inventory -i scripts/main.py --list -vvvv
ansible-inventory [core 2.13.2]
  config file = /Users/jaep/code/ic/pocs/poc_ansible_dynamic_inventory/ansible.cfg
  configured module search path = ['/Users/jaep/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /opt/homebrew/Cellar/ansible/6.2.0/libexec/lib/python3.10/site-packages/ansible
  ansible collection location = /Users/jaep/.ansible/collections:/usr/share/ansible/collections
  executable location = /opt/homebrew/bin/ansible-inventory
  python version = 3.10.6 (main, Aug 11 2022, 13:36:31) [Clang 13.1.6 (clang-1316.0.21.2.5)]
  jinja version = 3.1.2
  libyaml = True
Using /Users/jaep/code/ic/pocs/poc_ansible_dynamic_inventory/ansible.cfg as config file
setting up inventory plugins
script declined parsing /Users/jaep/code/ic/pocs/poc_ansible_dynamic_inventory/scripts/main.py as it did not pass its verify_file() method
[WARNING]: Unable to parse
/Users/jaep/code/ic/pocs/poc_ansible_dynamic_inventory/scripts/main.py as an inventory source
[WARNING]: No inventory was parsed, only implicit localhost is available
{
    "_meta": {
        "hostvars": {}
    },
    "all": {
        "children": [
            "ungrouped"
        ]
    }
}

真正令人惊讶的是脚本没有被 ansible-inventory 调用,因为 main.log 仍然是空的。

【问题讨论】:

  • Ansible checks the shebang,所以确保你有一个,并且它是 ansible 的愿​​望,或者(当然)确保文件是可执行的
  • @mdaniel 请将此添加为答案。我会接受的。

标签: python ansible ansible-inventory


【解决方案1】:

我只是忘了把正确的 shebang 放在脚本的顶部:

#!/usr/bin/env python3

并授予脚本执行权限:

chmod +x scripts/main.py

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    • 1970-01-01
    • 2021-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多