我们需要将双引号转义的 JSON 字符串提供到 NodeJS 产品的 AWS 密钥中。单内双引号格式不适用于该应用程序。结构化数据采用 dict-list-dict 格式。例子:
{
"data": "[{\"URL\": \"beta.test.net\", \"token\": \"beta-token\"}, {\"URL\": \"beta-prod.test.net\", \"token\": \"beta-prod-token\"}]"
}
Run Code Online (Sandbox Code Playgroud)
我尝试了许多过滤器来让 ansible 和 jinja 获取 JSON 变量并将其转换为所需格式的字符串,但结果从来都不太正确。| 到_json | 字符串给出以下结果:
{
"data": "[{'URL': 'beta.test.net', 'token': 'beta-token'}, {'token': 'test-token', 'URL': 'beta-prod.test.net'}]"
}
Run Code Online (Sandbox Code Playgroud)
当我尝试使用替换或正则表达式替换时,即使使用保护字符,我最终也会遇到 python 解析错误。下面是一个示例,仅使用坟墓的重音“`”转义进行替换。
TASK [Update secret in AWS] ***************************************************************************************************
task path: path:27
The full traceback is:
Traceback (most recent call last):
File "/home/.local/lib/python3.5/site-packages/ansible/executor/task_executor.py", line 146, in run
res = self._execute()
File "/home/.local/lib/python3.5/site-packages/ansible/executor/task_executor.py", line 587, in _execute
self._task.post_validate(templar=templar)
File "/home/.local/lib/python3.5/site-packages/ansible/playbook/task.py", …Run Code Online (Sandbox Code Playgroud)