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

如何在Ansible中从字典列表提取属性生成ipa_group可用的用户列表

解决Ansible提取用户名列表用于ipa_group模块的问题

问题描述

我已在Ansible的group_vars中定义了如下用户列表:

accountnames:
  - {user: foo, userfn: 'Foo Bar'}
  - {user: test, userfn: 'Test Acct1'}
  - {user: blah, userfn: 'Blah Boom'}

我希望提取其中的用户名生成列表,用于通过ipa_group模块添加用户,而非手动列出所有用户(也不想在group_vars中重复创建仅含用户名的列表)。当前尝试直接传入accountnames时出现TypeError错误:

unhashable type: 'dict'

解决方法

用Ansible的map过滤器配合list过滤器,从字典列表中提取user字段的值,生成纯用户名列表后传给ipa_group模块的users参数即可。

示例Playbook代码:

- name: 向IPA组添加指定用户
  ipa_group:
    name: 目标组名称
    users: "{{ accountnames | map(attribute='user') | list }}"
    state: present
    ipa_host: ipa.example.com
    ipa_user: admin
    ipa_pass: admin_password

原理说明

  • map(attribute='user'):遍历accountnames里的每个字典,提取其中user属性的值,返回一个迭代器
  • list:把迭代器转换成标准列表格式,满足ipa_group模块对users参数的要求(需要字符串列表,而非字典列表)

这种方式无需在group_vars中重复维护单独的用户名列表,直接从已有的accountnames动态生成所需数据,避免重复定义和手动更新的麻烦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 17:42:03