我是一名學生系統和網路管理員,我必須在 linux 虛擬機上安裝 syslog 服務器。在我的劇本中,我配置了一些被注釋的配置行,應該“取消注釋”(也就是從 #example 到 example)。我的代碼應該可以作業,但由于某種原因它不作業。當我運行它時它不會出錯,但它不會改變任何東西.. 這是我嘗試過的 3 個不同選項的劇本。
---
- name: Configure syslog server
hosts: servers
become: true
tasks:
- name: Install rsyslog
apt:
name: rsyslog
state: present
- name: Start service rsyslog, if not started
ansible.builtin.service:
name: rsyslog
state: started
- name: Enable service rsyslog to start on boot
ansible.builtin.service:
name: rsyslog
enabled: yes
這部分有效。現在我必須更改 /etc/rsyslog.conf 檔案中的這些行:
#module(load=”imudp”)
#input(type=”imudp” port=”514”)
#module(load=”imtcp”)
#input(type=”imtcp” port=”514”)
以下是我嘗試過的 3 個選項:
################
### Option 1 ###
################
- name: Swap/ edit lines in config
lineinfile:
dest: /etc/rsyslog.conf
line: 'module(load="imudp")' #new text
regexp: '#module(load="imudp")' #old text
state: present
create: true
################
### Option 2 ###
################
- name: delete comment out lines in config
ansible.builtin.replace:
dest: /etc/rsyslog.conf
regexp: '^#\s*{{ item.regexp }}(.*)$'
replace: '{{ item.replace }}'
loop:
- regexp: '^#(.*module(load="imudp").*)'
replace: '\1'
- regexp: '^#(.*input(type="imudp" port="514").*)'
replace: '\1'
- regexp: '^#(.*module(load="imtcp").*)'
replace: '\1'
- regexp: '^#(.*input(type="imtcp" port="514").*)'
replace: '\1'
################
### Option 3 ###
################
- name: delete comment out lines in config
ansible.builtin.replace:
dest: /etc/rsyslog.conf
regexp: '^#(.*module(load="imudp").*)'
replace: 'module(load="imudp")'
因此,它表示一切正常,但沒有任何變化。下一部分作業正常。
- name: Restart service rsyslog
ansible.builtin.service:
name: rsyslog
state: restarted
有人知道我的代碼有什么問題嗎?已經非常感謝了!
所有 3 個選項的輸出都相同:
jess@jess-client1:~$ ansible-playbook -i hosts.ini syslog.yaml --ask-become-pass
BECOME password:
PLAY [Configure syslog server] **********************************************************************************************************************
TASK [Gathering Facts] ******************************************************************************************************************************
ok: [naserver]
TASK [Install rsyslog] ******************************************************************************************************************************
ok: [naserver]
TASK [Start service rsyslog, if not started] ********************************************************************************************************
ok: [naserver]
TASK [Enable service rsyslog to start on boot] ******************************************************************************************************
ok: [naserver]
TASK [delete comment out lines in config] ***********************************************************************************************************
ok: [naserver]
TASK [Restart service rsyslog] **********************************************************************************************************************
changed: [naserver]
PLAY RECAP ******************************************************************************************************************************************
naserver : ok=6 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
uj5u.com熱心網友回復:
您的正則運算式中有括號,它是正則運算式中的特殊字符,因此您必須對其進行轉義:
- name: Swap/ edit lines in config
lineinfile:
dest: logs/testfile.log
line: 'module(load="imudp")' #new text
regexp: '#module\(load="imudp"\)' #old text
state: present
create: true
或使用特殊字符。
regexp: '#module.load="imudp".' #old text
uj5u.com熱心網友回復:
ansible.builtin.replace 可以使用:
- name: replace
replace:
path: /etc/rsyslog.conf
regexp: "{{ item }}"
replace: "\\1"
loop:
- '#(module\(load=”imudp”\))'
- '#(input\(type=”imudp” port=”514”\))'
- '#(module\(load=”imtcp”\))'
- '#(input\(type=”imtcp” port=”514”\))'
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/346786.html
上一篇:無法將'()->()'型別的值轉換為預期的引數型別'(LongPressGesture.Value)->Void'(又名'(Bool)-&
