首页 > 解决方案 > 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 = falsetoenable = true但是当我使用替换模块时,整个enable = false被替换在配置文件中。

标签: regexansiblejinja2ansible-template

解决方案


您实际上可以使用带有and参数的replace 模块:afterbefore

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

推荐阅读