首页 文章

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

提问于
浏览
0

我正在尝试迭代循环遍历我们在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”:“无法在迭代项目中找到'salary [1]'键'{u'title':associate,u'salary':u'60'}”}

我觉得我真的很接近这个工作,但只有一小部分我想念 . 如何让它迭代循环并拉出特定的信息?

1 回答

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

相关问题