2017-11-09 4 views
0

私はサービスの存在を確認してから、mongodなどのサービスを停止したいと思います。ここで"シェル"や "コマンド"を経由しないで、安全なモジュールによるサービスの状態

はストーピングサービスのためのコードです:

- name: stop 
    service: 
    name: mongod 
    state: stopped 

しかし、あなたは二度目の上記のスクリプトを実行した場合、それはあなたのサービスが実行されていないエラーが発生します。

このスクリプトを実行する前に状態を確認するにはどうすればよいですか?サービスが実行されていることを確認してから停止する方法。

プレイブックに「シェル」オプションと「コマンド」オプションのどちらも使用しない場合は、私は安全なモジュールを使用します。で

ソリューション:あなたがアドバイスしてください解決策を見つけた場合

- name: Check if mongod is active 
    command: systemctl status mongod 
    register: deb_check 
    ignore_errors: yes 
    no_log: True 
    failed_when: false 
# I ignored all errors when the process is dead 

- name: Stop mongof if it is active otherwise SKIP 
    service: 
    name: mongod 
    state: stopped 
    when: deb_check.stdout.find('dead') == -1 

How to get service status by Ansible?は、私は古い溶液でとどまるので、残念ながら私は答えを見つけることができませんでしたシェルまたはコマンド

答えて

1

を使用していました。

-1

正しい答えはハンドラで処理することです。特に、ハンドラが再生の最後にのみ実行されるため、サービスの開始または停止を何度も避ける必要があります。

あなたはそのような何かを試すことができます

関連する問題