通过Ansibles group_vars中的嵌套字典进行迭代

时间:2018-05-30 18:55:32

标签: ansible

我试图迭代循环遍历我们在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":"找不到工资[1]'重复项目' {u' title&#39 ;: associate,u' salary&#39 ;: u'}"}"}

我觉得我真的很接近这个工作,但我只缺少一小部分。如何让它迭代循环并提取特定的信息呢?

1 个答案:

答案 0 :(得分:2)

在您发布的示例中,没有嵌套的词典或列表可以循环显示。您希望迭代单个字典并引用其值。

以下是您的问题的答案:

- 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 }}"