使用regex_replace来删除ansible playbook中的字符。

问题描述 投票:0回答:1

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

但到目前为止,我还没有找到合适的格式。

非常感谢任何帮助

regex replace ansible amazon-cloudformation
1个回答
0
投票

从你的例子来看,你的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 }}"
© www.soinside.com 2019 - 2024. All rights reserved.