我想要将文件中的变量值获取到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"
}