Ansible 2.5.5 - 'replace' 模块中的 before 属性不起作用
Ansible 2.5.5 - before attribute in 'replace' module not working
我试图仅替换特定字符串后的第一次出现。然而,ansible 总是会匹配所有的匹配项。这是文件:
这是我的 ansible 任务:
- name: Update minPoolSize for CWTxDataSource dataSource
replace:
dest: "{{ op_db_path }}"
after: ".*CWTxDataSourceXA"
regexp: "^.*minPoolSize=.*$"
replace: ' <connectionManager maxPoolSize="750" minPoolSize="20" />'
backup: yes
<dataSource jndiName="CWTxDataSource">
<connectionManager maxPoolSize="750" minPoolSize="1" />
</dataSource>
<dataSource jndiName="UMDataSource">
<connectionManager maxPoolSize="750" minPoolSize="1" />
</dataSource>
在上面的示例中,两个 connectionManager
标签都会更新,这不是预期的行为吗?如何更新我的 regexp
以仅更新第一场比赛?我尝试了 replace
模块中的 before
选项作为解决方法,但由于某种原因它对我不起作用。
我在 ansible 文档中找到了以下行:
# Prior to Ansible 2.7.10, using before and after in combination did the opposite of what was intended.
因此,为了让我使用 after
before
作为解决方法,我不得不反转它们的值:
- name: Update minPoolSize for CWTxDataSource dataSource
# after / before values are reversed in ansible < 2.7
replace:
path: "{{ op_db_path }}"
before: 'jndiName="CWTxDataSource"'
after: "</dataSource>"
regexp: 'minPoolSize="\d+"'
replace: 'minPoolSize="{{ CWTxDS_minPoolSize }}"'
请注意 after
before
值没有实际意义,但它有效!
我试图仅替换特定字符串后的第一次出现。然而,ansible 总是会匹配所有的匹配项。这是文件:
这是我的 ansible 任务:
- name: Update minPoolSize for CWTxDataSource dataSource
replace:
dest: "{{ op_db_path }}"
after: ".*CWTxDataSourceXA"
regexp: "^.*minPoolSize=.*$"
replace: ' <connectionManager maxPoolSize="750" minPoolSize="20" />'
backup: yes
<dataSource jndiName="CWTxDataSource">
<connectionManager maxPoolSize="750" minPoolSize="1" />
</dataSource>
<dataSource jndiName="UMDataSource">
<connectionManager maxPoolSize="750" minPoolSize="1" />
</dataSource>
在上面的示例中,两个 connectionManager
标签都会更新,这不是预期的行为吗?如何更新我的 regexp
以仅更新第一场比赛?我尝试了 replace
模块中的 before
选项作为解决方法,但由于某种原因它对我不起作用。
我在 ansible 文档中找到了以下行:
# Prior to Ansible 2.7.10, using before and after in combination did the opposite of what was intended.
因此,为了让我使用 after
before
作为解决方法,我不得不反转它们的值:
- name: Update minPoolSize for CWTxDataSource dataSource
# after / before values are reversed in ansible < 2.7
replace:
path: "{{ op_db_path }}"
before: 'jndiName="CWTxDataSource"'
after: "</dataSource>"
regexp: 'minPoolSize="\d+"'
replace: 'minPoolSize="{{ CWTxDS_minPoolSize }}"'
请注意 after
before
值没有实际意义,但它有效!