我们有许多csv文件,包含各种配置的查找数据。
#eg of lookup file csv
hostname,ip,country,type,port
atlanta1,1.2.3.4,US,ui,8080
toronto1,1.2.3.5,CA,ui,8080
toronto2,1.2.3.9,CA,db,8000
another3,1.2.3.6,UK,db,8000
我们需要填充复杂的&然后需要在其他剧本中使用的连接变量
# Eg. concatenated variables http:{{hostname}}:{{port}} from above lookup csv file
ui_cluster = http://atlanta1:8080;http://toronto1:8080
db_cluster = http://atlanta1:8000;http://toronto1:8000
..最后,连续变量用于最终的剧本
#configurations in final customer template
my_build_script_UIcluster= {{ui_cluster}}
my_build_script_DBcluster= {{db_cluster}}
我想使用从上面查找创建的这些变量在模板中使用。如何做到这一点或最佳方法?
答案 0 :(得分:2)
include_csv
模块https://github.com/mkouhei/ansible-role-includecsv听起来就像您正在寻找的那样。
答案 1 :(得分:1)
您可以使用 jinja2 csv lookup filter :
csvfile查找以CSV格式读取文件的内容 (逗号分隔值)格式。查找查找其中的行 第一列匹配keyname,并返回第二列中的值 列,除非指定了不同的列。
(来自官方文档)
查找过滤器返回一个数组,其中每一行由键值对象表示。您可以使用 jinja2 map filter 创建一个键值的列表:
对一系列对象应用过滤器或查找属性。 这在处理对象列表时非常有用,但您确实是这样 只对它的某个值感兴趣。
(来自官方文档)
这应该是你需要的一切,而不是复制和粘贴答案。