Ansible替换文件中的文本

时间:2019-09-18 08:19:12

标签: ansible

因此,我要负责更换zabbix服务器。为此,我必须在所有服务器中修改zabbix_agent文件,并且有很多。这是我第一次看到ansible,所以我需要一些帮助。而且我正在使用ansible-playbook。

在zabbix_agentd.conf文件中,有旧的zabbix conf:

HostMetadata=Linux
PidFile=/var/run/zabbix/zabbx_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=zabbix.company.com
ServerActive=zabbix.company.com
HostnameItem=system.hostname
Include=/etc/zabbix_agentd.d/

现在我需要将“服务器”和“ ServerActive”替换为“ zabbix2.company.com”

我已经尝试过使用此页面上的各种代码来满足我的需求,但是到目前为止,它失败了。不知道我在做什么错

2 个答案:

答案 0 :(得分:1)

尝试这个

- lineinfile:
    path: /etc/zabbix_agentd.conf
    regexp: '^\s*{{ key }}\s*=(.*)$'
    line: '{{ key }}={{ value }}'
  notify: reload zabix
  loop:
    - {key: 'Server', value: 'zabbix2.company.com'}
    - {key: 'ServerActive', value: 'zabbix2.company.com'}

(未经测试)


笔记

  • 路径是必需的;可能是/etc/zabbix_agentd.conf吗?
  • 没有必要在\s*中搜索空白regexp。但是,它将匹配并修复配置中的潜在空间。
  • 在发生任何更改时创建并通知处理程序reload zabix。参见Handlers: Running Operations On Change
  • 看看Zabix模块。

答案 1 :(得分:0)

我已设法使用此代码解决此问题。

---
tasks:
- name: 'replace line'
  lineinfile:
    dest: /etc/zabbix/zabbix_agentd.conf
    regexp: '^(.*)Server=zabbix.company.com(.*)$'
    line: 'Server=zabbix2.company.com'
    backrefs: yes