[英]Ansible yaml anchors and jinja2 templating
如何覆盖磁盘属性而不是硬编码磁盘数?
这就是我想要它(该角色的tasks / main.yml),但它失败并出现语法错误,并且还需要硬编码磁盘数量:
---
- name: anchors
when: false
debug:
new_disk:
- &new_disk
size_gb: 80
type: thin
datastore: '{{ item.datastore }}'
- name: Deploy usage001 vms
loop: '{{ vms.usage001 }}
vmware_guest:
disk:
- <<: *new_disk
- <<: *new_disk
'{{ item.disk[0] }}'
- <<: *new_disk
'{{ item.disk[1] }}
项目看起来像:
vms:
usage001:
disk:
- size_gb: 1000
- size_gb: 600
usage002:
(...)
<<
, Merge Key Language Independent Type的文档说明:
“<<”合并键用于指示应将一个或多个指定映射的所有键插入当前映射中。
但是您在序列而不是地图上指定锚定new-disk
。
你可能想做:
new_disk:
- &new_disk
size_gb: 80
type: thin
datastore: '{{ item.datastore }}'
您似乎希望从您的item
选择size_gb: 1000
,但由于引号超出了您的jinja2语法,替换(如果有效)将导致:
- <<: *new_disk
'size_gb: 1000'
为了工作,它必须是:
- <<: *new_disk
size_gb: 1000
所以请确保你摆脱这些报价。
使用item.disk[0]
给出你的项目的选择似乎也很奇怪,我本来期望像item.vms.usage001.disk[0]
这样的东西,但这可能是我缺乏jinja2特定的知识。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.