ときどきAnsible日記

主にITインフラ基盤の自動化に関する事を書いているブログです

AnsibleのModule:service

お疲れ様です。伊藤です。

久々にAnsibleのModuleの翻訳記事を載せます。
serviceというModuleですが、Linuxのサービスの自動起動の設定やサービスを今すぐ起動・停止する事などが可能です。以前ご紹介したsystemdはRHEL7からの機能に対応したものなのでこちらはRHEL6以前で使う、といった差があると思います。


説明文は下記になります。
リモートホスト上のサービスを制御します。 サポートされている初期化システムには、BSD init、OpenRC、SysV、Solaris SMF、systemd、upstartなどがあります。
Windowsターゲットの場合は、代わりにwin_serviceモジュールを使用してください。


続いて、パラメータリストです。

パラメータ 必須 デフォルト 選択肢 備考
arguments no コマンドラインで提供される追加の引数
enabled no yes or no 起動時にサービスを開始するかどうか。 state と enabled の少なくとも1つが必要です。
name yes サービスの名前。
pattern no サービスがstatusコマンドに応答しない場合は、ステータス結果のスタンドとして ps コマンドの出力にある部分文字列を探します。 文字列が見つかった場合、サービスは実行中であるとみなされます。
runlevel no default OpenRC initスクリプト(例:Gentoo)のみ。 このサービスが属するランレベル
sleep no サービスが restarted されている場合は、stopとstartコマンドの間で数秒間スリープします。 これは、プロセスの停止を通知した直後に終了するinitスクリプトの動作不良を回避するのに役立ちます。
state no started or stopped or restarted or reloaded started / stopped 必要な場合を除いてコマンドを実行しない冪等のアクションです。 再起動すると常にサービスがバウンスされます。 再読み込みは常にリロードされます。 状態と有効化の少なくとも1つが必要です。 reloadedは、選択したinitシステムが正常に動作しなくても、まだ起動していなければサービスを開始することに注意してください。
use no auto サービスモジュールは実際にはシステム固有のモジュールを使用します。通常は自動検出により、この設定で特定のモジュールが強制的に使用されます。通常は、 'ansible_service_mgr'ファクトの値を使用し、一致が見つからない場合は古い 'service'モジュールに戻ります。


最後にPlaybookの例です。enableは自動起動の設定、stateは今すぐ起動するか停止するかの設定で、どちらかを指定する必要があります。非常に簡単ですね。

# サービスhttpdを起動するアクションの例(実行していない場合)
- service:
    name: httpd
    state: started

# 実行中のサービスhttpdを停止するアクションの例
- service:
    name: httpd
    state: stopped

# どのような場合でもサービスhttpdを再起動するアクションの例
- service:
    name: httpd
    state: restarted

# どのような場合でもサービスhttpdを再ロードするアクションの例
- service:
    name: httpd
    state: reloaded

# 実行中の状態に触れないで、サービスhttpdを有効にするアクションの例
- service:
    name: httpd
    enabled: yes

# 実行中のプロセス/ usr / bin / fooに基づいて、サービスfooを開始するアクションの例
- service:
    name: foo
    pattern: /usr/bin/foo
    state: started

# インタフェースeth0のネットワークサービスを再起動するアクションの例
- service:
    name: network
    state: restarted
    args: eth0


serviceはよく使う上に、非常に簡単なのですぐに覚えられると思います。参考になれば幸いです。
以上です。お疲れ様でした。