使用 digital_ocean ansible 模块进行循环控制

loop control with digital_ocean ansible module

感谢其他 Whosebug 用户,我设法从 digital_ocean ansible 模块注册的变量中提取了一些数据。我试图使用 loop_control 仅打印已注册的巨大变量的一部分。以下是该角色的摘录:

- 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,但是有谁知道是否可以用这个模块以这种方式使用它?

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