добавить строку в конец строки - PullRequest
0 голосов
/ 23 ноября 2018

Я хочу создать роль для динамического обновления конфигурации Nagios при создании новой виртуальной машины.

Итак, для этого я уже создал роль, которая добавляет определение хоста в конец моего файла Nagios Servers.cfg, выглядит так:

- 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
}

Будет ли у кого-нибудь решение?

Спасибо:)

Ответы [ 2 ]

0 голосов
/ 24 ноября 2018

Мой подход будет другим, но он должен работать с Nagios 3 и 4.

Просто немного отредактируйте вашу первую задачу Ansible:

- 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

Затем замените определение службы наthis:

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 для что-нибудь hostgroup и перезапускаете / перезагружаете сервис Nagios, вы будете следить за разделом /data без дополнительной работы.

0 голосов
/ 23 ноября 2018

Вы можете попробовать его следующим образом:

- 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.*)' }

Довольно некрасиво, но идемпотентно.

...