[英]Ansible using the replace
我有這段代碼試圖替換字符串。
文件:
<?php
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = 'some-server.domain.com';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = 'postfixadmin';
$CONF['database_name'] = 'postfix';
$CONF['encrypt'] = 'dovecot:SHA512';
$CONF['configured'] = true;
?>``
代碼:
- name: Replace by setting db parms for PostFixAdmin Host
replace:
path: /etc/postfixadmin/config.local.php
regexp: "$CONF['database_host'] = 'some-server.domain.com';"
replace: "$CONF['database_host'] = '{{db_host}}';"
backup: yes
- name: Replace by setting db parms for PostFixAdmin User
replace:
path: /etc/postfixadmin/config.local.php
regexp: "$CONF['database_user'] = 'postfix';"
replace: "$CONF['database_user'] = '{{db_user}}';"
backup: yes
我試過\ $ and。
還
- name: Replace by setting db parms for PostFixAdmin Host
lineinfile:
path: /etc/postfixadmin/config.local.php
regexp: ^\\$CONFIG\\['database_host'\\] = .*$
line: "$CONF['database_host'] = '{{db_host}}';"
不會替換它,像這樣在 php 之外添加第二個
?>
$CONF['database_host'] = 'localhost';
我該怎么做呢?
因為它是一個正則表達式,所以您必須轉義所有在正則表達式中有意義的字符,這就是
$
[]
。您的替換任務應該是:
- name: Replace by setting db parms for PostFixAdmin Host
replace:
path: /etc/postfixadmin/config.local.php
regexp: "\\$CONF\\['database_host'\\] = 'some-server.domain.com';"
replace: "$CONF['database_host'] = '{{db_host}}';"
backup: yes
- name: Replace by setting db parms for PostFixAdmin User
replace:
path: /etc/postfixadmin/config.local.php
regexp: "\\$CONF\\['database_user'\\] = 'postfix';"
replace: "$CONF['database_user'] = '{{db_user}}';"
backup: yes
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.