【发布时间】:2019-07-18 21:08:23
【问题描述】:
我正在尝试将文件中变量的值转换为 Ansible 变量,以便我可以使用它。
这是我得到的:
- name: extract Unique Key
shell: "grep UNIQUE_KEY ../config.py | cut -d' ' -f 3"
register: command_output
- set_fact:
unique_key: x{{ command_output.stdout | regex_replace("^'", '') | regex_replace('^"', '') | regex_replace("'$", '') | regex_replace('"$', '') }}
- set_fact:
unique_key: "{{ unique_key | regex_replace('^x', '') }}"
- debug: var=unique_key
这行得通,但感觉很笨拙,看起来很丑。
我已经尝试将 sed 添加到我原来的 shell 模块中,但我不知道如何正确转义引号。我也不知道如何逃避 regex_replace 以使其在单个变量赋值中工作。
有没有更简单的方法:
"TEST"
或
'TEST'
到这里:
TEST
在 Ansible 中? (我对 Ansible 也很陌生,所以这也无济于事)
编辑:在我最初接受@Vladimir-Botka 的回答之后,我发现了这个问题:
如果我不去掉引号并将变量嵌入到另一个变量中,它会保留引号:
我需要用这个值来构造路径:
vars:
service_location: "/opt/{{ unique_key }}-scheduler-service"
如果我不使用上面的方法删除引号,该变量将包含调试语句输出中的引号:
ok: [fedorasvr1] => {
"service_location": "/opt/'TEST'-scheduler-service"
}
【问题讨论】: