ansible: definindo a variável de acordo com ansible_os_family

1

Usando ansible 2.0.2.0, eu quero implantar um arquivo no servidor de destino. A pasta de destino é diferente na família Debian e RedHat.

Eu usei set_fact, mas parece que ele usou o último definido, ignorando o when: option.

Eu não quero usar arquivos de variáveis, porque essa variável é usada apenas neste manual em particular

A duplicação da tarefa de cópia no RedHat e no Debian, enquanto possível, complicará a manutenção no futuro.

O manual abaixo falhará quando executado contra o servidor Ubuntu porque o destino foi expandido para se tornar /etc/nrpe.d que é para 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"
    
por Sharuzzaman Ahmat Raslan 20.07.2016 / 20:41

1 resposta

1

Eu resolvi meu próprio problema.

Em essência, você pode definir a variável de acordo com os_family, mas você deve fazê-lo corretamente.

Veja meu playbook fixo abaixo:

---
- 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
    
por 21.07.2016 / 12:11