如何在不对磁盘数量进行硬编码的情况下覆盖磁盘属性?
这是我想要的(该角色的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:
(...)
答案 0 :(得分:0)
<<
的文档,Merge Key Language Independent Type指出:
“ <<”合并键用于指示应将一个或多个指定映射的所有键插入当前映射。
但是您可以在序列而不是map上指定锚点new-disk
。
您可能想做:
new_disk:
- &new_disk
size_gb: 80
type: thin
datastore: '{{ item.datastore }}'
您似乎想从size_gb: 1000
中选择item
,但是由于引号不在jinja2语法之外,因此替换(如果可行)将导致:
- <<: *new_disk
'size_gb: 1000'
要使其正常工作,必须:
- <<: *new_disk
size_gb: 1000
所以请确保您除去那些引号。
考虑到您的商品,使用item.disk[0]
进行的选择也很奇怪,我本来希望像item.vms.usage001.disk[0]
这样的东西,但这可能是我缺乏jinja2的专门知识。