gpt4 book ai didi

ansible - 在任务中访问 ansible.cfg 变量

转载 作者:行者123 更新时间:2023-12-01 23:30:00 24 4
gpt4 key购买 nike

我如何引用 remote_tmp (或任何其他)在 ansible.cfg 中定义的值在我的任务中?例如,在 my_task/defaults/main.yml :

file_ver: "1.5"
deb_file: "{{ defaults.remote_tmp }}/deb_file_{{ file_ver }}.deb"

产生一个错误:
fatal: [x.x.x.x]: FAILED! => {"failed": true, 
"msg": "the field 'args' has an invalid value,
which appears to include a variable that is undefined.
The error was: {{ defaults.remote_tmp }}/deb_file_{{ file_ver }}.deb:
'defaults' is undefined\... }

最佳答案

你不能开箱即用。
您需要操作插件或 vars 插件来读取不同的配置参数。
如果你使用 action plugin 方式,你必须调用你新创建的 action 来获取 remote_tmp定义。
如果选择 vars 插件方式,remote_tmp在 list 初始化期间与其他主机变量一起定义。

示例 ./vars_plugins/tmp_dir.py :

from ansible import constants as C

class VarsModule(object):

def __init__(self, inventory):
pass

def run(self, host, vault_password=None):
return dict(remote_tmp = C.DEFAULT_REMOTE_TMP)

请注意 vars_plugins文件夹应该靠近您的 hosts文件,或者您应该在 ansible.cfg 中明确定义它。

您现在可以使用以下方法对其进行测试:
$ ansible localhost -i hosts -m debug -a "var=remote_tmp"
localhost | SUCCESS => {
"remote_tmp": "$HOME/.ansible/tmp"
}

关于ansible - 在任务中访问 ansible.cfg 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40246768/

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