gpt4 book ai didi

jenkins - ansible 循环来自 jenkins 的逗号分隔列表

转载 作者:行者123 更新时间:2023-12-02 12:16:50 35 4
gpt4 key购买 nike

我有一个由 Jenkins 注入(inject)的环境变量,例如:

CUSTOMERS="foo,bar"

现在我需要循环这些值。有没有办法在ansible中访问这些值作为项目?

欢迎提供任何帮助,包括如何解决此问题的其他建议。

最佳答案

您可以使用--extra-vars将环境变量传递给ansible,但这只是解决方案的一部分,您需要将字符串值转换为ansible可以理解的数据格式。

一个简单的选择是编写一个简单的 Python(或您喜欢的语言)脚本,将环境变量转换为 JSON 列表,并使用 --extra-vars "@customers 将 JSON 文件作为额外变量传递给 ansible .json"(ansible 1.3 中提供 JSON 文件输入),请参阅 Ansible Variable documentation

import sys
import os
import json

DEFAULT_VAR="CUSTOMERS"

def var_to_json(var_name, list_sep = ','):
var_dict = {var_name: os.environ[var_name].split(list_sep)}
return json.dumps(var_dict)

var_name=DEFAULT_VAR
if len(sys.argv) > 1:
var_name = sys.argv[1]
print var_to_json(var_name)

上面的脚本可以进一步推广(或根据您的情况进行定制)。我必须让您在构建环境中将各个部分连接在一起。

或者,如 this previous answer解释说,您可以在ansible中定义自定义过滤器来处理输入值。您可以创建一个将变量值转换为列表的过滤器,然后在引用变量时在剧本中使用该过滤器(大概是通过 --extra-vars 传入的)。

关于jenkins - ansible 循环来自 jenkins 的逗号分隔列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23118985/

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