2016-11-18 15 views
0

私の可能なコーディングでは、service httpd statusのようなサービスの状態を知りたい(サービスが実行されているかどうか)結果は変数に格納されます。そのステータスを使用して、私はある程度他のコードを使用します。私はどのようにしてサービスのステータスを知っていますか?

私はサービスモジュールを使用していますが、ステータスのオプションはありません。私はシェルモジュールを使用している場合、私はこの警告

[WARNING]: Consider using service module rather than running service

ので、それがサービスの状態を取得するためにやって他のモジュールであるを得ましたか。

答えて

3

いいえ、サービスのステータスを取得するための標準モジュールはありません。

しかし、あなたはあなたが何をしているかわかっている場合は、特定のcommandタスクの警告を抑制することができます。

- command: service httpd status 
    args: 
    warn: false 

私はしばらく前にこのトリックについて簡単なnoteを掲載しました。

+0

ここhttpdサービスは、それが良い動作します開始:

これは私が編集したファイルです。サービスが停止している場合はエラーが発生します。 – SSN

+0

'service'コマンドがゼロ以外の終了コードで終了する場合は、例えば' failed_when:false'で処理する必要があります。 –

0

うまくいけば、service: allow user to query service status #3316がすぐにコアモジュールにマージされます。

あなたはansible 2.2.0.0を使用して、このdiff to system/service.py

ここにあります私の差分を用いて手でそれをパッチすることができます。私は私のMAC/homebrewのインストールでこれを実行して、それは私のために動作します。 /usr/local/Cellar/ansible/2.2.0.0_2/libexec/lib/python2.7/site-packages/ansible/modules/core/system/service.py

@@ -36,11 +36,12 @@ 
     - Name of the service. 
    state: 
     required: false 
-  choices: [ started, stopped, restarted, reloaded ] 
+  choices: [ started, stopped, status, restarted, reloaded ] 
     description: 
      - C(started)/C(stopped) are idempotent actions that will not run 
-   commands unless necessary. C(restarted) will always bounce the 
-   service. C(reloaded) will always reload. B(At least one of state 
+   commands unless necessary. C(status) would report the status of 
+   the service C(restarted) will always bounce the service. 
+   C(reloaded) will always reload. B(At least one of state 
      and enabled are required.) 
    sleep: 
     required: false 
@@ -1455,7 +1456,7 @@ 
    module = AnsibleModule(
     argument_spec = dict(
      name = dict(required=True), 
-   state = dict(choices=['running', 'started', 'stopped', 'restarted', 'reloaded']), 
+   state = dict(choices=['running', 'started', 'stopped', 'status', 'restarted', 'reloaded']), 
      sleep = dict(required=False, type='int', default=None), 
      pattern = dict(required=False, default=None), 
      enabled = dict(type='bool'), 
@@ -1501,6 +1502,9 @@ 
    else: 
     service.get_service_status() 

+ if module.params['state'] == 'status': 
+  module.exit_json(state=service.running) 
+ 
    # Calculate if request will change service state 
    service.check_service_changed() 
関連する問題