如何防止ansible模板被接收到的内容混淆?

2024-10-03 23:23:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用ansible来提供wordpress的安装,为此我有一个wp的模板-配置.php. 在

我的wp-配置.php.j2模板替换了键和盐,如下所示

{{ wordpress_keys.content }}

wordpress_键来自一个任务,如下所示:

^{pr2}$

问题是,有时键和盐中有“特殊”字符,如<;>;、{}等。这似乎导致ansible生成如下错误:

fatal: [ddc-wpchange2.ddc.prod] => {'msg': "AnsibleError: Failed to template define('AUTH_KEY',
'1=MFI*+!d^1/y;}za6$Qfw4vo{bv!gV?lmX ?^P h/5L?szDv &V<~in+.~^oOdCFpyt]Tu8FSmGE}@||,Pe(:(1%CjjAwhq{Gi#j- ');\ndefine('LOGGED_IN_KEY',
'BJ6c9#/XDBVDB-8Q+ctK9DLZiKUzPYbM&aMlO!.v7COPb8=[9HdU&Y7%SzE{&xh');\ndefine('NONCE_KEY', '.xB:3|/#|^2*JMh6+t$Ek:DG+wEqyO4:QZmMo}g|MeZi~LrvNpJ-z(8/S ,P.,N');\ndefine('AUTH_SALT', '-pzZ6 l40^8++a@t_sldj_CK{{V%]u-#cK44dAig%v<');\ndefine('SECURE_AUTH_SALT', '?ONdE{--{6CQT_Jrn0N4xHhI|}Rz2y1cc9Cj22XO
kITU|)BJm@BgPd5.lPW-?e;');\ndefine('LOGGED_IN_SALT', 'O_Q7}Q.fx,Gt#0m30-@$k +~>dSk k6gz/I+>$k~h9)<6(M~F+}UFU: 'y+zF= o1:>p1S:2FB6)e~vO_#[-i1ur}V?y$>EOyF;{lkU8Y;y0Znt');\n: template error while templating string: unexpected ']'", 'failed': True}

错误不会一直发生,只有在出现一些特殊字符时才会发生。在

我的问题是。。。我怎样才能在不发生这种情况的情况下直接替换请求的结果?有没有某种逃避或引用的方法可以奏效?在

谢谢,
约翰


Tags: keyinauth模板错误wordpress情况template
2条回答

转义某些字符将很困难,因为不仅uri模块需要支持它,而且模板引擎引擎也必须取消转义。在

相反,这里有一个解决方法:

修改任务,使内容保存到文件而不是变量:

- name: retrieve new wordpress keys and salts
  uri:
    url: "https://api.wordpress.org/secret-key/1.1/salt/"
    method: GET
    dest: wp_keys.php
    return_content: yes

然后在wp上加一条线-配置.php.j2模板,其中包含wp_keys.php。在

所以我最终放弃了模板解决方案。相反,我使用wpcli来生成wp-配置.php帮我归档。我这样做是因为模板解决方案会随机失败,模板会被它接收到的内容弄糊涂。在

相关问题 更多 >