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

Ansible实操:如何为现有用户列表批量添加新键值对?

Ansible 为CSV读取的用户列表添加额外字段

你可以通过set_fact结合loop遍历用户列表,使用combine过滤器将原用户条目与新增字段的字典合并,实现需求。以下是完整的Playbook:

- hosts: localhost
  tasks:
    - read_csv:
        path: /var/lib/awx/projects/file/creation.csv
        fieldnames: FirstName,LastName,ClassType
        delimiter: ','
      register: userdata

    # 遍历每个用户条目,合并新增字段
    - set_fact:
        updated_userdata: "{{ updated_userdata | default([]) + [item | combine(new_fields)] }}"
      loop: "{{ userdata.list }}"
      vars:
        new_fields:
          EmailAddress: "{{ item.Username }}@gmail.com"
          OtherAddresses: "primary:{{ item.Username }}@gmail.com,secondary:{{ item.Username }}@outlook.com"
          Registered: "Yes"

    # 输出处理后的用户列表
    - debug:
        var: updated_userdata

关键步骤说明:

  1. 读取CSV数据:read_csv模块读取指定路径的CSV文件,结果注册到userdata变量,其中userdata.list是包含所有用户条目的列表。
  2. 生成新增字段字典:在vars中定义new_fields,根据当前循环的用户条目item的Username字段,动态生成EmailAddress、OtherAddresses的值,固定设置Registered为Yes。
  3. 合并字典并构建新列表:使用combine过滤器将原用户条目item与new_fields合并,得到包含完整字段的用户字典;通过updated_userdata | default([]) + [...]将合并后的字典逐步添加到新列表中。
  4. 验证结果:debug模块输出处理后的updated_userdata,确认新增字段是否正确添加。

如果你希望直接修改原userdata.list,可以将set_fact的目标变量改为userdata.list,但建议保留原数据,使用新变量存储处理后的结果,便于后续对比或复用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 21:53:20