我正在使用ansible来提供wordpress安装,为此我有一个wp-config.php的模板。
我的wp-config.php.j2模板替换了键和盐,看起来像这样
{{ wordpress_keys.content }}
wordpress_keys来自一个任务,如下所示:
- name: retrieve new wordpress keys and salts
uri:
url: "https://api.wordpress.org/secret-key/1.1/salt/"
method: GET
return_content: yes
register: wordpress_keys
问题在于,键和盐有时会在其中包含“特殊”字符,例如<&gt ;, {}等,这似乎会导致ansible产生如下错误:
致命:[ddc-wpchange2.ddc.prod] => {'msg':“AnsibleError:失败了 模板定义('AUTH_KEY',
'1 = MFI * +!d ^ 1 / y;} za6 $ Qf w4vo {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 + GT; $ K〜H9)&10 6(M〜F +} UFU: “Y + ZF = o1:> p1S:2FB6)e~vO_
#[ - i1ur} V?y $> EOyF; {lkU8Y; y0Znt'); \ n:模板 模板字符串时出错:意外'''','失败':真}
错误不会一直发生,只有当存在某些特殊字符时才会发生。
我的问题是......我怎样才能在请求的结果中替换,而不会发生这种情况?是否有某种逃避或引用可行?
谢谢,
约翰
答案 0 :(得分:5)
逃避某些角色会很困难,因为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_keys.php
的wp-config.php.j2模板中添加一行。
答案 1 :(得分:2)
所以我最终放弃了模板解决方案。相反,我使用wp-cli为我生成wp-config.php文件。我之所以这样做是因为模板解决方案随机无法使用模板,因为模板正在接收内容。