我的用例如下:
我有一个模板文件,我想从该模板创建2个不同的文件,每个文件的变量由一组不同的变量填充。
例如,假设我要对包含该行的文件进行模板化:
mkdir -p {{myTemplateVariable}}
我想找到一种适当的方法来获取由“ File1”和“ File2”填充的变量。就像是 :
- name: template test 1
template:
src=myTemplateFile
dest=result1
- name: template test 2
template:
src=myTemplateFile
dest=result2
在这里我可以为第一个模板指定要使用的变量为a =“ File1”,为第二个模板指定b =“ File2”。
对于Ansible 2.x:
- name: template test
template:
src: myTemplateFile
dest: result1
vars:
myTemplateVariable: File1
- name: template test
template:
src: myTemplateFile
dest: result2
vars:
myTemplateVariable: File2
对于Ansible 1.x:
不幸的是,该template
模块不支持向其传递变量,该变量可以在模板内部使用。有功能请求,但被拒绝了。
我可以想到两种解决方法:
1.包含
该include
语句支持传递变量。因此,您可以将template
任务放在一个额外的文件中,并使用适当的参数将其包含两次:
my_include.yml:
- name: template test
template:
src=myTemplateFile
dest=destination
main.yml:
- include: my_include.yml destination=result1 myTemplateVariable=File1
- include: my_include.yml destination=result2 myTemplateVariable=File2
2.重新定义myTemplateVariable
另一种方法是在每个template
任务之前简单地重新定义myTemplateVariable 。
- set_fact:
myTemplateVariable: File1
- name: template test 1
template:
src=myTemplateFile
dest=result1
- set_fact:
myTemplateVariable: File2
- name: template test 2
template:
src=myTemplateFile
dest=result2
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句