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