我正在尝试替换localhost
字符串
$amp_conf['AMPDBHOST'] = 'localhost';
与变量的内容{{ asterisk_db_host }}
,即172.17.0.3
。
虽然
- replace:
dest: /usr/src/freepbx/installlib/installcommand.class.php
regexp: '(\$amp_conf\[.AMPDBHOST.\] = .)localhost(.;)'
replace: '\1\2'
Run Code Online (Sandbox Code Playgroud)
完美的结果
$amp_conf['AMPDBHOST'] = 'localhost';
- replace:
dest: /usr/src/freepbx/installlib/installcommand.class.php
regexp: '(\$amp_conf\[.AMPDBHOST.\] = .)localhost(.;)'
replace: '\1{{ asterisk_db_host }}\2'
Run Code Online (Sandbox Code Playgroud)
也
- replace:
dest: /usr/src/freepbx/installlib/installcommand.class.php
regexp: '(\$amp_conf\[.AMPDBHOST.\] = .)localhost(.;)'
replace: '\1{{ asterisk_db_host|regex_escape() }}\2'
Run Code Online (Sandbox Code Playgroud)
用O2.17.0.2';
或替换字符串O2\.17\.0\.2';
。
我在这里做错了什么?我该如何正确进行此替换?
您的替换字符串如下所示:
'\1{{ asterisk_db_host }}\2'
Run Code Online (Sandbox Code Playgroud)
在 Jinja 模板之后,这实际上是在 regex 模块中用作替换字符串的内容:
'\1172.17.0.3\2'
Run Code Online (Sandbox Code Playgroud)
看看第一个学期。不再是\1
,现在是\1172
,这显然是错误的。解决这个问题的一种方法是在替换的值部分周围加上引号(因为当你这样做时,会有一个非数字字符——引号——将你的反向引用与模板扩展的值分开)。这是一种选择:
- hosts: localhost
gather_facts: false
vars:
asterisk_db_host: "172.17.0.3"
tasks:
- replace:
dest: ./cfgfile
regexp: >-
(\$amp_conf\[.AMPDBHOST.\] = )'localhost'(;)
replace: >-
\1'{{ asterisk_db_host }}'\2
Run Code Online (Sandbox Code Playgroud)
这使用了 YAML 块引用 ( >-
),因此我们无需担心在表达式中转义引号,并且在我的简单测试中它似乎做正确的事情。
归档时间: |
|
查看次数: |
28232 次 |
最近记录: |