regex - Ansible 替换大配置文件中的值
问题描述
我有一个超过 3000 行的配置文件,我只需要更改/替换几个参数。因为配置文件很大。我无法使用模板。
在替换以下参数时需要帮助。
gateway-config {
enable = true
host-name = "car-cache"
port = 202
batch-size = 100
patterns = ["^((test))"]
type = LINE
prefix = "stats."${auth}".service"
}
k9-config {
enable = true
send-enable = false
host-name = ${auth}
connection-timeout = 120000
read-timeout = 60000
proxy = ""
project = "Networking"
period = 120
我只需要在 some-config 上替换enable = false
toenable = true
但是当我使用替换模块时,整个enable = false
被替换在配置文件中。
解决方案
您实际上可以使用带有and参数的replace 模块:after
before
- name: Replace between the expressions (requires Ansible >= 2.4)
replace:
path: /path/to/your/file
after: 'gateway-config {'
before: '}'
regexp: '^(\s*enable = )false$'
replace: '\g<1>true'
推荐阅读
- javascript - 我的 A-Frame 组件无法获得当前的 a-videosphere Y 旋转
- android - ACTION_GET_CONTENT 从下载中选择文档返回 null
- typescript - 如何在不硬编码属性名称的情况下重写我的代码?
- angular - 如何动态添加 Angular 组件内容?
- jquery - 选中或取消选中单选按钮 jquery 提醒单选按钮的值
- asset-pipeline - 如何在 Rails 5.2 资产管道中组织文件?
- android - 二进制 XML 文件第 12 行:android 中的资源 ID #0x7f0b0058
- android-studio - 为什么切换到 Kotlin 会破坏 Android Studio 代码辅助
- node.js - GraphQL 将 null 返回给第三个根子节点,但在后端函数中生成
- c# - Windows Server 2008 R2 上的 Windows 应用程序崩溃