Ansible 中的条件处理程序

Conditional Handler within Ansible

我们使用在处理程序上重新启动 sshd 的用户模块,但这仅在服务器为 Ubuntu16 时有效。

我正试图像这样超越它:

- name: Set SSH/SSHD service
  include_vars:
    ssh_service: "sshd"
  when: ( ansible_distribution_version == "16.04" ) and ( ansible_distribution == "Ubuntu" )

- name: Set SSH/SSHD service
  include_vars:
    ssh_service: "ssh"
  when: ( ansible_distribution_version == "14.04" ) and ( ansible_distribution == "Ubuntu" )

但是这返回了有关调试的错误:

fatal: [172.48.0.146]: FAILED! => {"failed": true, "msg": "ssh_service is not a valid option in debug"}

处理程序如下:

- name: restart_sshd
  service: name="{{ ssh_service }}"
           state=restarted

有没有一个简洁的方法来做到这一点?我不想通过 groupvars 指定它。

根据:

https://fossies.org/linux/ansible/lib/ansible/plugins/action/include_vars.py

我没有按设计使用 include_vars,它需要一个文件。

我可以用set_fact代替:

- name: Set SSH/SSHD service
  set_fact:
    ssh_service: "sshd"
  when: ( ansible_distribution_version == "16.04" ) and ( ansible_distribution == "Ubuntu" )