Назад | Перейти на главную страницу

ansible: установка переменной в соответствии с ansible_os_family

Используя ansible 2.0.2.0, я хочу развернуть файл на целевом сервере. Папка назначения отличается в семействе Debian и RedHat.

Я использовал set_fact, но кажется, что он использовал последнее определенное, игнорируя параметр when :.

Я не хочу использовать файлы переменных, потому что эта переменная используется только в этой конкретной книге.

Дублирование задачи копирования в RedHat и Debian, хотя и возможно, усложнит обслуживание в будущем.

Приведенный ниже сценарий не сработает при выполнении на сервере Ubuntu, поскольку пункт назначения был расширен до /etc/nrpe.d, который предназначен для RedHat.

- set_fact:
  destination: "/etc/nagios/nrpe.d/"
  when: ansible_os_family == "Debian"

- set_fact:
  destination: "/etc/nrpe.d/"
  when: ansible_os_family == "RedHat"

- name: Ensure Nagios custom checks directory exists
  file: path=/usr/local/lib/nagios/plugins state=directory mode=0755

- name: Install check_cpu_steal
  copy: src=eprepo/sysadmin/nagios_checks/check_cpu_steal dest=/usr/local/lib/nagios/plugins/check_cpu_steal mode=0755 owner=root group=root

- name: Install check_cpu_steal command to /etc/nrpe.d
  copy: src=eprepo/sysadmin/files/check_cpu_steal.conf dest="{{ destination }}/check_cpu_steal.conf mode=0644 owner=root group=root"

Я решил свою проблему.

По сути, вы можете установить переменную в соответствии с os_family, но вы должны делать это правильно.

См. Мою фиксированную книгу ниже:

---
- name: Set fact for Debian
  set_fact:
    destination: "/etc/nagios/nrpe.d/"
    nrpe_server: "nagios-nrpe-server"
  when: ansible_os_family == "Debian"

- name: Set fact for RedHat
  set_fact:
    destination: "/etc/nrpe.d/"
    nrpe_server: "nrpe"
  when: ansible_os_family == "RedHat"

- name: Ensure Nagios custom checks directory exists
  file: path=/usr/local/lib/nagios/plugins state=directory mode=0755

- name: Install check_cpu_steal nagios check
  copy: src=eprepo/sysadmin/nagios_checks/check_cpu_steal dest=/usr/local/lib/nagios/plugins/check_cpu_steal mode=0755 owner=root group=root

- name: Install check_cpu_steal nrpe config
  copy: src=eprepo/sysadmin/files/check_cpu_steal.conf dest="{{ destination }}/check_cpu_steal.cfg" mode=0644 owner=root group=root

- name: Restart nrpe daemon
  service: name={{ nrpe_server }} state=restarted