使用 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 }}"
感谢其他 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 }}"