Ansible 2.5.5 replace模块after参数失效 如何仅修改指定数据源minPoolSize
问题原因
- 原配置的
after参数值为.*CWTxDataSourceXA,和实际目标配置里的数据源jndiName="CWTxDataSource"不匹配,导致after过滤规则完全未生效,replace模块直接扫描整个文件替换所有匹配正则的行。 - 即使
after匹配成功,未配置before限定范围的情况下,模块会替换after匹配位置之后所有符合正则规则的内容,还是会命中后面UMDataSource里的配置行。
调整后的任务配置
- name: Update minPoolSize for CWTxDataSource dataSource replace: dest: "{{ op_db_path }}" # 匹配CWTxDataSource的起始标签行作为替换起始范围 after: '.*jndiName="CWTxDataSource"' # 匹配当前dataSource块的闭合标签作为替换结束范围 before: '</dataSource>' regexp: '^.*minPoolSize=.*$' replace: ' <connectionManager maxPoolSize="750" minPoolSize="20" />' backup: yes
上述配置会把替换范围严格限定在jndiName="CWTxDataSource"的dataSource块内部,只会替换这个块里的minPoolSize配置行,不会影响其他数据源的配置。
内容的提问来源于stack exchange,提问作者Omar Odaini
相关产品推荐
相关产品推荐

