ときどきAnsible日記

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

AnsibleのModule:systemd

お疲れ様です。伊藤です。
続いてmoduleのsystemdになります。説明文は以下です。

リモートホスト上のsystemdサービスを制御します

シンプルですね。RHEL7から導入されているsystemd関連のコマンドです。基本的にはサービスの起動停止設定を行うコマンドです。引数は下記になります。

パラメータ 必須 デフォルト 選択肢 備考
daemon_reload no yes or no 他の操作を行う前にdaemon-reloadを実行して、systemdが変更を読み込んでいることを確認してください。aliases: daemon-reload
enabled no yes or no 起動時にサービスを開始するかどうか。 stateとenabledの少なくとも1つが必要です
masked no yes or no ユニットをマスクする必要があるかどうかにかかわらず、マスクされたユニットは開始できません
name no サービスの名前。 chroot環境で使用する場合、常に完全な名前(crond.service)を指定する必要があります。aliases: unit, service
no_block no yes or no 要求された操作が完了するまで同期的に待機しないでください。 エンキューされたジョブは、完了時にAnsibleブロッキングなしで続行されます
state no started or stopped or restarted or reloaded started/stopped は、必要な場合を除いてコマンドを実行しない冪等のアクションです。 restarted は常にサービスをバウンスします。 reloaded は常にリロードされます
user no yes or no systemctlを実行して、システムのサービスマネージャではなく、呼び出し元のユーザのサービスマネージャと通信します


こちらは例文です。

# サービスが実行中であることを確認する
- name: Make sure a service is running
  systemd: state=started name=httpd

# 実行している場合、debian上のサービスcronを停止する
- name: stop service cron on debian, if running
  systemd: name=cron state=stopped

# すべての場合に、デーモンリロードを発行して設定の変更を取り出す
- name: restart service cron on centos, in all cases, also issue daemon-reload to pick up config changes
  systemd:
    state: restarted
    daemon_reload: yes
    name: crond

# リロードサービスhttpd、すべての場合
- name: reload service httpd, in all cases
  systemd:
    name: httpd
    state: reloaded

# サービスhttpdを有効にし、マスクされていないことを確認してください
- name: enable service httpd and ensure it is not masked
  systemd:
    name: httpd
    enabled: yes
    masked: no

# dnf-automaticのタイマーを有効にする
- name: enable a timer for dnf-automatic
  systemd:
    name: dnf-automatic.timer
    state: started
    enabled: True

# systemdにconfigsを読み直すように強制する
- name: just force systemd to reread configs (2.4 and above)
  systemd: daemon_reload=yes

systemdに関しては戻り値が大量にあります。今回の掲載は見送りますが、今後調査することがあれば追記したいと思います。
お疲れ様でした。