[英]Adding asterisk (*) to configuration file with Ansible lineinfile module
我正在嘗試編寫一個劇本來將日志轉發器行添加到 AIX 上的 syslog.conf。
任務看起來像這樣:
- set_fact:
log_servers:
- "auth.info\t@10.10.10.100"
- "*.info\t@log.example.com"
- lineinfile:
path: /etc/syslog.conf
regexp: '^{{item}}'
line: '{{item}}'
loop: "{{log_servers}}"
第一行插入沒有問題,但由於前導星號而遇到第二行時,我得到 Python 異常。
星號可以在行中的任何其他位置,但不能在行首。 帶反斜杠的 escaping ( \*.info\t@log.example.com
) 導致 JSON 解析錯誤,雙反斜杠 ( \\*.info\t@log.example.com
) 只是在排在前面。
關於如何解決這個問題的任何建議?
您的問題來自這樣一個事實,即您正試圖對正則表達式(需要避開星號的地方)和要添加的行(不需要避開星號的地方)使用相同的字符串。
不過,有一種方法可以解決這個問題,那就是使用內置的regex_escape
過濾器。
所以,你的兩個任務應該變成:
- set_fact:
log_servers:
- "auth.info\t@10.10.10.100"
- "*.info\t@log.example.com"
- lineinfile:
path: /etc/syslog.conf
regexp: '^{{ item | regex_escape() }}'
line: '{{ item }}'
loop: "{{ log_servers }}"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.