我需要修改文件中的一行。只有問題,該線出現多次,但在不同的範圍。像在從WSO2組態手冊這個例子:用Ansible修改示波器中的一行
<KeyStore>
<Location>${carbon.home}/resources/security/wso2carbon.jks</Location>
<Type>JKS</Type>
<Password>wso2carbon</Password>
<KeyAlias>wso2carbon</KeyAlias>
<KeyPassword>wso2carbon</KeyPassword>
</KeyStore>
<TrustStore>
<!-- trust-store file location -->
<Location>${carbon.home}/repository/resources/security/client-truststore.jks</Location>
<!-- trust-store type (JKS/PKCS12 etc.) -->
<Type>JKS</Type>
<!-- trust-store password -->
<Password>wso2carbon</Password>
</TrustStore>
我需要例如修改<Password>
條目與一個值在<Keystore>
範圍,並與不同的第二值在<TrustStore>
範圍,以有不同的密碼。 lineinfile模塊可以這樣做嗎?或者還有其他方法嗎?
PS。 使用模板不是我正在尋找的解決方案,因爲我想用它來修改已存在的服務器並且不會丟失任何本地修改。
謝謝,您的解決方案完美工作。該模塊的工作原理和您提出的解決方案是完美的,但我不確定負面預測分組(最後的'<'使我感到困惑)。這裏我嘗試過的這一行也起作用,我可以理解''' - name:替換模塊的測試 replace:dest =/tmp/carbon.xml regexp ='(\ s *)((?:\ n。 *)*)()(。*)( )((?:\ n。*)*)( )'替換='\ 1 \ 2 \ 3ThePassWord \ 5 \ 6 \ 7'backup = yes' '。我會upvote你的答案,但我沒有足夠的聲譽。 –
使用'password <'的負向前視意味着跳過已設置密碼的塊(沒有它,您的任務將始終返回已更改的狀態),並且添加了<<'以避免當密碼爲'foobar'時您想將其設置爲'foo' - 在這種情況下,前面沒有'<'將匹配'foobar'的一部分,並且密碼不會被改變。 –