You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible如何通过嵌套循环为PostgreSQL数据库批量添加多个扩展

解决方案

Ansible 可通过subelements过滤器实现嵌套遍历,直接为所有配置了扩展的数据库批量安装全部扩展,推荐写法如下:

- name: 安装所有数据库配置的PostgreSQL扩展
  become: yes
  become_user: postgres
  postgresql_ext:
    name: "{{ item.1 }}"
    db: "{{ item.0.name }}"
  loop: "{{ postgres_database | subelements('extensions', skip_missing=true) }}"

写法说明

  • subelements过滤器会将每个数据库对象和其下的每一个扩展配对为独立遍历项,遍历生成的item是二元数组:
    • item.0:对应上层postgres_database列表中的单条数据库配置
    • item.1:对应当前数据库extensions列表中的单个扩展名称
  • skip_missing=true参数会自动跳过没有定义extensions字段的数据库,无需额外加when判断

如果你使用的是Ansible 2.5以下版本,可改用with_subelements写法:

- name: 安装所有数据库配置的PostgreSQL扩展
  become: yes
  become_user: postgres
  postgresql_ext:
    name: "{{ item.1 }}"
    db: "{{ item.0.name }}"
  with_subelements:
    - "{{ postgres_database }}"
    - extensions
    - skip_missing: true

内容的提问来源于stack exchange,提问作者nbari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 15:54:04