2017-02-28 53 views
0

感谢其他的stackoverflow用户,我设法从digital_ocean模块注册的变量中提取一些数据。我试图使用loop_control仅打印已注册的巨大变量的一部分。这里是一个角色摘录:使用digital_ocean ansible模块的循环控制

- name: Add droplet 
    digital_ocean: > 
{ some parameters } 
    with_dict: "{{ droplets_up }}" 
    register: my_droplet 

- debug: msg="Droplet IP is {{ item.droplet.ip_address }}" 
    with_items: "{{ my_droplet.results }}" 
    loop_control: 
    label: "{{ item }}" 

我明显在这里做错了,因为它打印整个变量以及调试消息。在这一点上,我不太了解loop_control,但是有谁知道是否有可能以这种方式在这个模块中使用它?

回答

1

debug动作有result['_ansible_verbose_always'] = True,所以它总是会打印完整的项目,不管你label是什么(虽然label: "{{item}}"不会改变任何东西,尝试label: "{{ item.droplet.ip_address }}")。

如果你只需要列出所有的IP地址,使用map过滤器和单调试声明:

- name: Print droplets IP 
    debug: 
    msg: "{{ my_droplet.results | map(attribute='droplet.ip_address') | list }}"