gpt4 book ai didi

Ansible vars_prompt 在单独的文件中

转载 作者:行者123 更新时间:2023-12-02 01:37:13 26 4
gpt4 key购买 nike

标准变量可以按主机和/或组位于单独的文件中。例如。 group_vars/组名或 host_vars/主机名。

是否可以在 playbook 文件以外的任何其他位置设置 vars_prompt?例如,最好直接在 group_vars/groupname 或 group_vars_prompt/groupname 中?

未找到任何相关文档。谢谢

最佳答案

Afaik,你不能那样做。充其量,您可以使用调用 read 的动态 list 脚本,如下所示:

#!/bin/bash
read foo
cat <<EOF
{
"localhost": {
"hosts": [ "localhost" ]
},
"_meta" : {
"hostvars" : {
"localhost": {
"foo": "$foo"
}
}
}
}
EOF

但由于 ansible 在执行 list 脚本时吞下了 STDOUTSTDERR(请参阅:https://github.com/ansible/ansible/blob/devel/lib/ansible/inventory/script.py#L42),您将无法显示任何文件的问题提示您写入的描述符。

作为替代方案,如果您在 X 下运行,您可以使用 Zenity:

#!/bin/bash
foo=`zenity --title "Select Host" --entry --text "Enter value for foo"`

cat <<EOF
{
"localhost": {
"hosts": [ "localhost" ]
},
"_meta" : {
"hostvars" : {
"localhost": {
"foo": "$foo"
}
}
}
}
EOF

这样,您将获得 (GUI) 提示。

但我认为这无论如何都不可取,因为它可能以百种方式失败。也许您可以尝试其他方法,或者告诉我们您想要实现的目标。

替代方法

  • 使用由用户或脚本填充的 vars 文件
  • 使用 ansible -e 命令行选项,最终包装在 bash 脚本中 reading vars,如果需要 UI,最终使用 zenity
  • 让用户填写库存文件(group_vars/whatever可以是一个目录,包含多个文件)
  • 通过管道使用lookup从脚本中读取
  • 在 env 中使用 lookup,从环境变量中读取 vars
  • 将 Ansible Tower 与表单结合使用
  • 使用 vars_prompt(如果未输入任何内容,则返回默认值),因为 playbook 可能是执行此操作的最佳位置
  • ...

这些解决方案中的任何一个都可能比绕过应该真正无人值守可用的库存更好(因为您可能稍后从 Tower 运行,因为您可能从 cron 执行,因为您可能 ansible-pull, ...)。

关于Ansible vars_prompt 在单独的文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30572684/

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