如何迭代ansible注册值?

时间:2017-12-08 06:55:52

标签: python json ansible

所以,我必须在ansible中运行一个具有多个答案的命令,例如 :运行命令列出所有名称和其他详细信息用户。结果会说,

Carry   2/10

Barry   19/7

Harry   7/7

Jerry   11/4

Terry   7/12

Marie   13/10

我已将此结果保存到剧本任务中的变量名称

 register: names
  • 我如何一次迭代这些名称中的每一个,并在我迭代它们时运行特定命令?
  • 我是否必须将此字符串转换为json文件,因为ansible接受json?

2 个答案:

答案 0 :(得分:0)

您可以使用:with_lines: "{{ names }}"

迭代这些行

每次{{ item }} var获取一行时,就可以运行你喜欢的任何东西(为了开始我会检查该行是否为空)。 我还建议您查看ansible regex filters以便操作这些字符串。

您也可以使用with_items: "{{ names.stdout_lines }}"作为ansible-documantation

答案 1 :(得分:-1)

如果你想使用你用注册创建的列表变量的不同输入来运行相同的命令,你可以使用with_items进行迭代:

- name: doing something cool
    cmd: my_awesome_cmd {{ item }}
  with_items:
    names

您可以在此处查看文档。 https://docs.ansible.com/ansible/devel/plugins/lookup/items.html

如果你想为每个输入做不同的事情,你也可以依赖于你可以使用register作为列表:

- name: doing something cool with carry
    cmd: my_awesome_cmd {{ names[0] }}
- name: doing something cool with barry
    cmd: my_awesome_cmd {{ names[1] }}
- name: doing something cool with harry
    cmd: my_awesome_cmd {{ names[2] }}
...

您始终可以使用调试打印出变量的输出,这样您就可以更好地查看结构,并直接获取您正在寻找的内容。 http://docs.ansible.com/ansible/latest/debug_module.html