我正在嘗試用 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 執行此操作的最佳方法是什么?
uj5u.com熱心網友回復:
我能夠讓它作業,這個想法是將正則運算式放入變數中,然后regex_escape()按照@Zeitounator 在評論中的建議使用。
- 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"}"'
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/525710.html
標籤:重击可靠的
