Ansibleでサービスが存在するかどうかを確認します



Check If Service Exists With Ansible



解決:

を参照してくださいservice_factsモジュール、Ansible2.5の新機能。

-名前:サービスファクトを入力しますservice_facts:-デバッグ:メッセージ:Dockerがインストールされました!いつ:「サービスの「docker」」 

もちろん、ラッパースクリプトが/etc/init.dに存在するかどうかを確認することもできます。だからこれは私が最終的に得たものです:



-名前:サービスが存在するかどうかを確認しますstat:path = / etc / init.d / {{service_name}} register:service_status --name:サービスを停止しますservice:name = {{service_name}} state = stop when:service_status.stat.exists登録:service_stopped 

'service'モジュールが 'unrecognizedservice'エラーを処理できると便利です。

これは私のアプローチであり、initスクリプトをチェックする代わりにserviceコマンド:



-名前:Apacheシェルを確認します: 'service apache2 status' register:_svc_apache failed_when:> _svc_apache.rc!= 0 and( 'unrecognized service' not in _svc_apache.stderr)-name:disable apache service:name = apache2 state = stopped enabled = no when: '_ svc_apache.rc == 0'
  • 「サービスステータス」の終了コードを確認し、出力に「認識されないサービス」が含まれている場合は終了コード0を受け入れます。
  • 終了コードが0の場合、そのサービスはインストールされます(停止または実行中)