Tim*_*bov 35 ansible ansible-playbook
我需要从其他变量的内容创建新变量.目前我正在使用这样的东西:
- command: echo "{{ var1 }}-{{ var2 }}-{{ var3 }}"
register: newvar
Run Code Online (Sandbox Code Playgroud)
问题是:
{{ var1 }}...{{ varN }}
带来太长的字符串和非常难看的代码.{{ newvar.stdout }}
有点好但令人困惑.set_fact
模块的使用在运行之间缓存事实.这对我来说不合适.还有其他解决方案吗?
udo*_*dan 29
好问题.但我认为没有符合您标准的好答案.我能想到的最好的是使用额外的vars文件.
像这样的任务:
- include_vars: concat.yml
Run Code Online (Sandbox Code Playgroud)
在concat.yml
你有你的定义:
newvar: "{{ var1 }}-{{ var2 }}-{{ var3 }}"
Run Code Online (Sandbox Code Playgroud)
use*_*557 21
由于字符串是Python中的字符列表,我们可以像连接列表(使用+符号)一样连接字符串:
{{ var1 + '-' + var2 + '-' + var3 }}
Run Code Online (Sandbox Code Playgroud)
如果要将结果字符串传递给某个过滤器,请确保将这些位括在括号中:
例如,要连接我们的3个变量,并获得sha512哈希:
{{ (var1 + var2 + var3) | hash('sha512') }}
Run Code Online (Sandbox Code Playgroud)
注意:这适用于Ansible 2.3.我没有在早期版本上测试它.
小智 11
就像在python本身中加入列表一样简单。
ansible -m debug -a msg="{{ '-'.join(('list', 'joined', 'together')) }}" localhost
Run Code Online (Sandbox Code Playgroud)
localhost | SUCCESS => {
"msg": "list-joined-together" }
Run Code Online (Sandbox Code Playgroud)
使用变量的工作方式相同:
ansible -m debug -a msg="{{ '-'.join((var1, var2, var3)) }}" localhost
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
74469 次 |
最近记录: |