我在ansible中运行一个playbook,获取shell模块输出的stdout_lines,并给我这样的格式。
StackNames.stdout_lines:
- "["
- ' "SHSD-CZWV-ami-automation-WIN2012R2-NONPROD-ramirja-119",'
- ' "SHSD-CZWV-ami-automation-WIN2012R2-NONPROD-ramirja-118",'
- ' "SHSD-CZWV-ami-automation-WIN2012R2-NONPROD-ramirja-117"'
- "]"
我试图得到这些值的列表,以便在循环中使用,从而删除堆栈,但首先我需要删除所有的引号,双引号和空格,以便云计算模块能够正确地使用stack_name参数值的格式。
我曾尝试设置一个新的变量,并使用正确的格式,如:
- set_fact:
stack_list: "{{ StackNames.stdout_lines | replace('"','') |trim }}"
但到目前为止,我还没有找到合适的格式。
非常感谢任何帮助
从你的例子来看,你的shell命令返回的是一个json可解析的结果。简单地解析全局输出 (stdout
)的变量内,用 from_json
过滤 你就可以了。
- set_fact:
stack_list: "{{ StackNames.stdout | from_json }}"
- name: Make sure the above is working with your specific output
debug:
var: item
loop: "{{ stack_list }}"