【问题标题】:Easiest way to replace multiple config lines in a Bash script with Ansible用 Ansible 替换 Bash 脚本中的多个配置行的最简单方法
【发布时间】:2022-11-01 10:58:39
【问题描述】:

我正在尝试用 Ansible 替换 bash 脚本中的一些变量。这是原始函数的一部分(来自更大的脚本):

set_variable_defaults() {
    : "${MK_LIBDIR:="/usr/lib/check_mk_agent"}"
    : "${MK_CONFDIR:="/etc/check_mk"}"
    : "${MK_VARDIR:="/var/lib/check_mk_agent"}"
    : "${MK_LOGDIR:="/var/log/check_mk_agent"}"
    : "${MK_BIN:="/usr/bin"}"
}

而我想要的是:

set_variable_defaults() {
    : "${MK_LIBDIR:="/share/usr/lib/check_mk_agent"}"
    : "${MK_CONFDIR:="/share/etc/check_mk"}"
    : "${MK_VARDIR:="/share/var/lib/check_mk_agent"}"
    : "${MK_LOGDIR:="/var/log/check_mk_agent"}"
    : "${MK_BIN:="/share"}"
}

我尝试了lineinfilereplace,但我遇到的问题是我的正则表达式和行有双引号、冒号、斜杠和{}。使用 Ansible 执行此操作的最佳方法是什么?

【问题讨论】:

  • 你试过template整个脚本文件吗?
  • @CarlosMonroyNieblas 脚本有时会发生变化,我从互联网上下载它,但是从一个版本到另一个版本的变量总是相同的。
  • 您不控制分发给主机的文件版本?
  • @CarlosMonroyNieblas 这是一个由第 3 方每周左右更新的监控脚本。我将它部署到一堆 VM,但其中一个 VM 有一些特定要求,这迫使我更改一些默认变量。
  • 请参阅regex_escape 过滤器。

标签: bash ansible


【解决方案1】:

我能够使其工作,想法是将正则表达式放入变量中,然后按照@Zeitounator 在 cmets 中的建议使用regex_escape()

- name: adjust agent to work in HaOS
  ansible.builtin.lineinfile:
    path: /path/to/my/file
    regexp: '{{ item.regexp }}'
    line: '{{ item.line }}'
  with_items:
    - { regexp: '{{ MK_LIBDIR | regex_escape() }}', line: '    : "${MK_LIBDIR:="/share/usr/lib/check_mk_agent"}"' }
    - { regexp: '{{ MK_CONFDIR | regex_escape() }}', line: '    : "${MK_CONFDIR:="/share/etc/check_mk"}"' }
    - { regexp: '{{ MK_VARDIR | regex_escape() }}', line: '    : "${MK_VARDIR:="/share/var/lib/check_mk_agent"}"' }
    - { regexp: '{{ MK_BIN | regex_escape() }}', line: '    : "${MK_BIN:="/share"}"' }
  vars:
    - MK_LIBDIR: '    : "${MK_LIBDIR:="/usr/lib/check_mk_agent"}"'
    - MK_CONFDIR: '    : "${MK_CONFDIR:="/etc/check_mk"}"'
    - MK_VARDIR: '    : "${MK_VARDIR:="/var/lib/check_mk_agent"}"'
    - MK_BIN: '    : "${MK_BIN:="/usr/bin"}"'

【讨论】:

    猜你喜欢
    • 2021-11-14
    • 2015-10-20
    • 2011-09-25
    • 2021-11-11
    • 2017-10-05
    • 2023-03-09
    • 2020-09-22
    • 2010-12-14
    • 2018-07-25
    相关资源
    最近更新 更多