【问题标题】:Iterating through nested dictionaries in Ansibles group_vars遍历 Ansible group_vars 中的嵌套字典
【发布时间】:2018-05-31 03:20:44
【问题描述】:

我正在尝试迭代循环遍历我们在 ansible 环境中拥有的 group_var 并提取薪水值并在命令模块中使用它。我的 ansible/groups_vars 文件中有以下文件 -

people:
  george:
    lastname: smith
    job:
      title: associate
      salary: 60    

  chris:
    lastname: george
    job:
      title: senior
      salary: 70

  greg:
    lastname: anderson
    job:
      title: director
      salary: 95

这是我目前拥有的代码:

- name: Run module check command against every docroot
  command: 'drush  --root=/var/www/html/wwwroot/{{item.0.salary}}/docroot en update'
  with_subelements:
   - "{{ people }}"
   -  job.salary

我看到的错误是:

失败了! => {"msg": "关键工资应该指向一个列表,得到'60'"}

我通过查看此处的以下问题来整理此解决方案:

Ansible with_subelements
Ansible loop using multi-ter group_vars
Ansible with subelements referencing a dict

尝试将值设置为 .0 或 .1 似乎使其查找字典,并将其设置为 [0] 或 [1] 表示:

{"msg": "在迭代项 '{u'title': associate, u'salary': u'60'} 中找不到 'salary[1]' 键"}

我觉得我真的很接近完成这项工作,但我只是缺少一小部分。我怎样才能让它迭代循环并提取特定的信息?

【问题讨论】:

    标签: ansible


    【解决方案1】:

    在您发布的示例中,没有嵌套字典或要循环的列表。您想遍历单个字典并引用其值。

    以下是您问题的答案:

    - name: Run module check command against every docroot
      command: 'drush  --root=/var/www/html/wwwroot/{{item.value.job.salary}}/docroot en update'
      with_dict:
        - "{{ people }}"
    

    【讨论】:

      猜你喜欢
      • 2017-07-25
      • 2021-02-04
      • 2013-07-21
      • 1970-01-01
      相关资源
      最近更新 更多