yaml - 在 Ansible-YAML 中使用相对路径引用多维数组中的另一个元素

标签 yaml jinja2 ansible

我有一个用 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_urimirrors[0].package_pattern 可以从 mirrors[0].name< 中生成,但要做到这一点,我需要以某种方式使用相对路径引用它们,因为我不想或多或少地将第一级 (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"

有什么方法可以使用相对路径来引用多维数组的其他部分吗?

最佳答案

这会起作用: *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"

关于yaml - 在 Ansible-YAML 中使用相对路径引用多维数组中的另一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22989401/

相关文章:

python - 如何检查键变量是否存在并防止在 jinja2 模板中打印键+值为空的行

github - 如何在 Github 操作工作流文件中使用片段以避免重复?

python - 将 {% include %} 的输出分配给 Jinja2 中的变量

google-app-engine - Google App Engine、Jinja2 CSS 样式表未加载 (404)

docker - Ansible 与 Boot2Docker 配合使用时出现问题

azure - 为什么我无法在 azure devops yaml 模板中的 if 条件中传递运行时变量

python - 在 App Engine 上使用 jinja2 的首选方法是什么?

docker - 使用 Ansible 将命令行参数传递给 Docker

ansible - 在 Ansible 中从 S3 存储桶复制文件

yaml - 在 --extra-vars 中传递数组