【发布时间】: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"}"
}
我尝试了lineinfile 和replace,但我遇到的问题是我的正则表达式和行有双引号、冒号、斜杠和{}。使用 Ansible 执行此操作的最佳方法是什么?
【问题讨论】:
-
你试过
template整个脚本文件吗? -
@CarlosMonroyNieblas 脚本有时会发生变化,我从互联网上下载它,但是从一个版本到另一个版本的变量总是相同的。
-
您不控制分发给主机的文件版本?
-
@CarlosMonroyNieblas 这是一个由第 3 方每周左右更新的监控脚本。我将它部署到一堆 VM,但其中一个 VM 有一些特定要求,这迫使我更改一些默认变量。
-
请参阅
regex_escape过滤器。