我需要从其他变量的内容创建新的变量。目前我使用的是这样的东西:
- command: echo "{{ var1 }}-{{ var2 }}-{{ var3 }}"
register: newvar
问题是:
{{ var1 }}...{{ varN }}
会带来太长的字符串和非常丑陋的代码。{{ newvar.stdout }}
会更好一些,但是set_fact
模块的会在两次运行之间缓存事实。它不适合我。有没有其他的解决方案?
发布于 2015-07-02 22:22:47
问得好。但我认为没有符合你标准的好答案。我能想到的最好的办法就是使用一个额外的vars文件。
像这样的任务:
- include_vars: concat.yml
在concat.yml
中,你有自己的定义:
newvar: "{{ var1 }}-{{ var2 }}-{{ var3 }}"
发布于 2017-10-04 01:52:38
因为字符串是Python中的字符列表,所以我们可以像连接列表一样连接字符串(使用+号):
{{ var1 + '-' + var2 + '-' + var3 }}
如果您想通过管道将结果字符串传递给某个筛选器,请确保将位括在括号中:
例如,连接我们的3个var,并得到一个sha512散列:
{{ (var1 + var2 + var3) | hash('sha512') }}
注意:这适用于Ansible 2.3。我还没有在早期版本上测试过它。
发布于 2018-06-27 03:42:11
就像在python中连接列表一样简单。
ansible -m debug -a msg="{{ '-'.join(('list', 'joined', 'together')) }}" localhost
localhost | SUCCESS => {
"msg": "list-joined-together" }
使用变量的工作方式相同:
ansible -m debug -a msg="{{ '-'.join((var1, var2, var3)) }}" localhost
https://stackoverflow.com/questions/31186874
复制相似问题