使用 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设置变量,但你必须正确地做。
请参阅下面的固定剧本: