簡體   English   中英

使用 Ansible lineinfile 模塊將星號 (*) 添加到配置文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM