2017-10-27 3 views
1

サービスを無効にして停止する良い方法はありますか?サーバーにインストールされている場合のみですか? 「only_if_presentは」Ansibleに今存在するが、私は私の目標は明らかであると仮定していないキーワードであることを可能:存在する場合のみサービスを無効にする

- service: name={{ item }} enabled=no state=stopped only_if_present=yes 
    with_items: 
    - avahi-daemon 
    - abrtd 
    - abrt-ccpp 

注:このような何か。

+0

あなたが意味するのは、パッケージがインストールされているか、サービスが実行されているかどうかです。 – sys0dm1n

+1

本当の質問は、なぜあなたはホストにインストールされていないサービスを操作しようとしているのですか?インストールされていますか?通常インストールされていて、それをすべてのホストから削除したいのですか?いくつかのホストがそれを持っていると思われているものと、そうでないものがある場合は、それらを異なるグループに入れ、それを持っているグループに対してのみ動作させます。 – Jack

+0

[パッケージがインストールされている場合にのみ、systemdサービスを無効にする]の可能な複製(https://stackoverflow.com/questions/46968364/disable-systemd-service-only-if-the-package-is-installed) – techraf

答えて

1

私はあなたのケースでは、パッケージ名が何であるかを知らないが、あなたはこれに似た何かを行うことができます。

- 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

これはうまく動作しますが、debianのようなシステムでのみ動作します。私たちのホストには、複数の異なるディストリビューションがあります – Petr

関連する問題