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

Ansible读取CSV时when条件过滤指定AWS账号条目不生效问题

问题原因

你的when判断放在了block层级,该条件作用于整个代码块而非循环中的单个条目:只要CSV中存在任意一条AWS_ACCOUNT = aws-account-rnd的记录,整个block就会全部跳过;如果不存在则所有条目全部执行,和你预期的单条过滤逻辑不符。

另外你额外写的两个debug、注册account/accountlist的任务属于冗余逻辑,可以直接删去,直接在循环任务中对单个item做判断即可。

修正后配置

- name: "读取CSV文件得到条目列表"
  community.general.read_csv:
     path: sample.csv
  register: ingest

- name:
  become: yes
  become_user: awx
  delegate_to: localhost
  environment: "{{ proxy_env }}"
  block:
    - name: "Assume role"
      community.aws.sts_assume_role:
        role_arn: "{{ item.ROLE_ARN }}"
        role_session_name: "pm"
      with_items: "{{ ingest.list }}"
      register: assumed_role
      # 对每个循环条目单独做判断,跳过AWS_ACCOUNT为aws-account-rnd的条目
      when: item.AWS_ACCOUNT != 'aws-account-rnd'

效果说明

修正后循环会逐行读取CSV内容:

  • 匹配到AWS_ACCOUNT = aws-account-rnd的条目(对应示例中test1的记录)会被自动跳过
  • 其余符合条件的条目(对应示例中test2的记录)会正常执行assume role操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:24:03