我有一个在YAML语法中定义的多维数组。这是Ansible使用的group_vars文件的一部分:
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"
让我感到困扰的是,mirrors[0].frontend_uri
和mirrors[0].package_pattern
可以从mirrors[0].name
生成,但为了做到这一点,我需要以某种方式使用相对路径来引用它们,因为我没有&#39 ; t想要将第一级(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"
有没有办法使用相对路径引用多维数组的其他部分?
答案 0 :(得分:4)
这样可行: * name是一个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"