【发布时间】:2020-10-01 07:09:14
【问题描述】:
我有一个超过 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 替换为 enable = true,但是当我使用替换模块时,整个 enable = false 会在配置文件中被替换。
【问题讨论】:
-
我使用了 shell 模块 awk 命令。但即使它没有做出实际的改变,它也会导致改变。 sed -i '/^\\s*hite-config\\s*{\\s*/!b;n;c\\ \\ \\ \\ enable = false' /etc/repli.conf
-
为什么不能使用模板?在我看来,这将是去这里的方式。
-
@toydarian:我可以给你一些用例,它们并不总是最好的解决方案,包括当配置文件很大(如 OP 报告的那样)并且你不一定拥有所有您库存中所有值的参考。我可以给出的另一个示例是在应用程序安装时仅更改默认生成的配置文件中的某些值(例如侦听端口、日志级别..),您希望确保可以在该文件中捕获新的添加/删除应用程序升级,而无需在每个新版本中自行维护该模板。
-
@Zeitounator 我没有说在某些情况下
replace更好。不过,我确实有点太喜欢模板了。我猜最佳解决方案取决于需要多少 OP 来更改此配置以及它来自哪里 -
是的,模板在我的情况下不起作用。
标签: regex ansible jinja2 ansible-template