在Ansible YAML中使用相对路径引用多维数组中的另一个元素
我有一个用YAML语法定义的多维数组。这是Ansible使用的group_vars文件的一部分:在Ansible YAML中使用相对路径引用多维数组中的另一个元素,yaml,jinja2,ansible,Yaml,Jinja2,Ansible,我有一个用YAML语法定义的多维数组。这是Ansible使用的group_vars文件的一部分: mirrors: - name: "ubuntu" dists: - precise - precise-backports - precise-proposed - precise-security - precise-updates frontend_uri: "/ubuntu" package_patte
mirrors:
- name: "ubuntu"
dists:
- precise
- precise-backports
- precise-proposed
- precise-security
- precise-updates
frontend_uri: "/ubuntu"
package_pattern: "/ubuntu/pool"
sync_hour: 0
upstreams:
main: "nl.archive.ubuntu.com"
backups:
- "ubuntu.mirror.ac.ke"
- "ke.archive.ubuntu.com"
困扰我的是镜像[0]。前端uri
和镜像[0]。包模式可以从镜像[0]中生成。名称
,但要做到这一点,我需要使用相对路径以某种方式引用它们,因为我不想在路径中包含第一级(0
)的迭代器,大致是这样的:
mirrors:
- name: "ubuntu"
dists:
- precise
- precise-backports
- precise-proposed
- precise-security
- precise-updates
frontend_uri: "/{{ .name }}"
package_pattern: "/{{ .name }}/pool"
sync_hour: 0
upstreams:
main: "nl.archive.ubuntu.com"
backups:
- "ubuntu.mirror.ac.ke"
- "ke.archive.ubuntu.com"
是否有任何方法可以使用相对路径引用多维数组的其他部分?这将起作用:
*名称是一个yamlism,允许将定义的别名用于&
其余的只是使用一个未在同一树中定义的变量引用
_name: &name "ubuntu"
- name: *name
dists:
- precise
- precise-backports
- precise-proposed
- precise-security
- precise-updates
frontend_uri: "/{{ _name }}"
package_pattern: "/{{ _name }}/pool"
sync_hour: 0
upstreams:
main: "nl.archive.ubuntu.com"
backups:
- "ubuntu.mirror.ac.ke"
- "ke.archive.ubuntu.com"
你是说你可以写:frontend\u-uri:“/{{mirrors[0].name}}”
?我不认为这是可能的,我不是故意这么说的,因为我认为这样做是个坏主意,如果它有效的话,我甚至都没有试过。谢谢你的链接,不幸的是似乎没有一个完美的解决方案。我知道“ubuntu”只是一个例子,可能有n个元素。定义一个包含“ubuntu”内容的变量无助于简化,因为您需要定义n个变量,并在package\u模式中相应地使用它们。