Ansible 替换大配置文件中的值

Ansible replace a value in big config file

我有一个超过 3000 行的配置文件,我只需要 change/replace 几个参数。 因为配置文件很大。我无法使用模板。

需要帮助替换以下参数。


  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

我只需要在某些配置上将 enable = false 替换为 enable = true,但是当我使用替换模块时,整个 enable = false 在配置文件中被替换。

你能用替换模块吗:

---
- name: Replace variable
  replace:
   path: "/etc/repli.conf"
   after: "hite-config {"
   regexp: "enable = false"
   replace: "enable = true"

您实际上可以将 replace moduleafterbefore 参数一起使用:

- 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'