gpt4 book ai didi

virtualbox - 无法使用 ansible list 文件,因为它是可执行的

转载 作者:行者123 更新时间:2023-12-04 13:59:53 26 4
gpt4 key购买 nike

我正在尝试运行 Ansible 库存文件 ansible -i hosts-prod all -u root -m ping并且失败并显示此消息:

ERROR: The file hosts-prod is marked as executable, 
but failed to execute correctly. If this is not supposed
to be an executable script, correct this with
`chmod -x hosts-prod`.

我相信这是因为我正在使用 Virtual Box 和共享文件夹,这迫使我的所有文件都使用 ug+rwx。并且 vbox 不允许更改共享文件夹的权限(至少来自 Windows 的共享文件夹是我的情况)

有没有办法让 Ansible 运行这个文件?我可以看到几个选项:
  • 编辑 hosts-prod成为可执行文件。我不知道这涉及到什么(显然是 Ansible 的新手)。
  • 在 Ansible 中设置一个配置选项,告诉它不要将此文件作为可执行文件运行 - 只需将其视为静态配置文件即可。我找不到这样做的选项,所以我怀疑这是不可能的。
  • 将文件移到共享文件夹之外:在我的情况下不是一个选项。
  • 你的好主意..

  • 感谢所有帮助/想法!

    实际 hosts-prod config 文件如下所示,因此欢迎任何有关使其在内部可执行的提示:
    web01 ansible_ssh_host=web01.example.com
    db01 ansible_ssh_host=db01.example.com

    [webservers]
    web01

    [dbservers]
    db01

    [all:vars]
    ansible_ssh_user=root

    最佳答案

    可执行 list 被解析为 JSON 而不是 ini 文件,因此您可以将其转换为输出 JSON 的脚本。最重要的是,Ansible 将一些参数传递给一个简单的“猫”是不够的:

    #!/bin/bash
    cat <<EOF
    {
    "_meta": {
    "hostvars": {
    "host1": { "some_var": "value" }
    }
    },
    "hostgroup1": [
    "host1",
    "host2"
    ]
    ...
    }
    EOF

    不像简单的“猫”那么优雅,但应该有效。

    关于virtualbox - 无法使用 ansible list 文件,因为它是可执行的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26859360/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com