有没有很好的方法来禁用和停止服务,但只有在服务器上安装它?像这样:
Double[]
请注意" only_if_present"是Ansible目前不存在的关键字,但我认为我的目标很明显。
答案 0 :(得分:5)
我不知道你的包名是什么,但你可以做类似的事情:
- shell: dpkg-query -W 'avahi'
ignore_errors: True
register: is_avahi
when: ansible_distribution == 'Debian' or ansible_distribution == 'Ubuntu'
- shell: rpm -q 'avahi'
ignore_errors: True
register: is__avahi
when: ansible_distribution == 'CentOS' or ansible_distribution == 'Red Hat Enterprise Linux'
- service: name=avahi-daemon enabled=no state=stopped
when: is_avahi|failed
更新:我添加了条件,以便当您有多个不同的发行版时,剧本可以正常工作,您可能需要根据自己的要求进行调整。
答案 1 :(得分:1)
系统服务的通用解决方案:
- name: Disable services if enabled
shell: if systemctl is-enabled --quiet {{ item }}; then systemctl disable {{ item }} && echo disable_ok ; fi
register: output
changed_when: "'disable_ok' in output.stdout"
loop:
- avahi-daemon
- abrtd
- abrt-ccpp
它产生3个状态:
ok
changed
failed