当我创建一个新的VM时,我希望创建一个角色来动态更新Nagios配置。
为此,我已经创建了一个角色,该角色在我的servers.cfg Nagios文件的末尾添加了一个主机定义,如下所示:
- name: Add {{ Host_Name }} in /etc/naemon/conf.d/hosts/servers.cfg
blockinfile:
dest: /etc/naemon/conf.d/hosts/servers.cfg
block: |
define host {
host_name {{ Host_Name }}
alias {{ Host_Name }}.uem.lan
address {{ Host_IP }}
use modele_host,host-pnp
}
marker: ""
backup: yes效果很好。
所以现在我希望能够在检查文件行的末尾直接添加我的"{{ Host_Name }}“服务器。
示例:这是监视/data分区的检查:
define service {
service_description /data partition
host_name myserv1,myserv2,myserv3,myserv4,myserv5
use srv-pnp,modele_service_disk_linux_snmp
check_command check_snmp_storage!uem_snmp!/data$!90!95
}我想把我的"{{ Host_Name }}“像这样加起来:
define service {
service_description /data partition
host_name myserv1,myserv2,myserv3,myserv4,myserv5,{{ Host_Name }}
use srv-pnp,modele_service_disk_linux_snmp
check_command check_snmp_storage!uem_snmp!/data$!90!95
}有谁能找到解决办法吗?
Thx :)
发布于 2018-11-24 12:28:46
我的方法将是不同的,但是它应该与Nagios 3和4一起工作。
只需编辑一下您的第一个不可接受的任务:
- name: Add {{ Host_Name }} in /etc/naemon/conf.d/hosts/servers.cfg
blockinfile:
dest: /etc/naemon/conf.d/hosts/servers.cfg
block: |
define host {
host_name {{ Host_Name }}
alias {{ Host_Name }}.uem.lan
address {{ Host_IP }}
hostgroup_name anything
use modele_host,host-pnp
}
marker: ""
backup: yes然后将您的服务定义替换为:
define service {
service_description /data partition
hostgroup_name anything
use srv-pnp,modele_service_disk_linux_snmp
check_command check_snmp_storage!uem_snmp!/data$!90!95
}每当您通过Ansible向任何主机组添加新主机并重新启动/重新加载Nagios服务时,您都将监视您的/data分区,而不需要额外的工作。
发布于 2018-11-23 17:07:46
您可以尝试使用以下方法:
- name: 'LINEINFILE'
lineinfile:
path: 'service.cfg'
line: '{{item.line}}'
regexp: '{{item.regexp}}'
backrefs: True
loop:
- { line: '\1\2', regexp: '(\s*host_name.*),{{inventory_hostname}}(.*)' }
- { line: '\1,{{inventory_hostname}}', regexp: '(\s*host_name.*)' }很丑,但是是幂等的。
https://stackoverflow.com/questions/53446620
复制相似问题