0Pricing
DevOps Bootcamp · レッスン

systemdでサービスを管理する

サービスを起動、停止、有効化します

「systemdでサービスを管理する」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。

長時間稼働するサービスを管理する

systemd モジュールは、現在の多くの Linux ディストリビューションで init システムとして使われている systemd が管理するサービスを制御します。これを使ってサービスを起動、停止、有効化します。

サービスを起動する

サービス名を指定し、state: started を設定します。モジュールは、サービスがまだ実行されていない場合にだけ起動するため、冪等性が保たれます。

ansible.builtin.systemd:
  name: nginx
  state: started

サービスを停止する

サービスを停止するには state: stopped を使います。いつもどおり、サービスが現在実行中の場合にだけ処理を行います。

ansible.builtin.systemd:
  name: nginx
  state: stopped

再起動とリロード

state: restarted はサービスを完全に再起動します。一方、reloaded は接続を切断せずに設定を読み直します。安全なデフォルトは再起動です。

ansible.builtin.systemd:
  name: nginx
  state: restarted

起動と有効化は別物

state はサービスを今すぐ実行するかどうかを制御します。enabled は、ブート時に自動起動するかどうかを制御します。これらは独立しています。

ブート時に有効化する

enabled: true を設定すると、再起動後にサービスが自動的に起動します。started と組み合わせると、現在と将来の両方に対応できます。

ansible.builtin.systemd:
  name: nginx
  state: started
  enabled: true

systemd デーモンをリロードする

新しい unit ファイルを追加したら、daemon_reload: true を設定します。これにより、unit に対する処理を行う前に systemd が設定を読み直します。

ansible.builtin.systemd:
  name: myapp
  daemon_reload: true

冪等性が保たれる

実行中のサービスに started を指定すると、ok になり、changed にはなりません。モジュールは処理を行う前に、現在の状態を確認します。

root 権限が必要

サービスの制御には権限が必要なので、become: true を追加します。これがないと systemd に拒否され、タスクは失敗します。

- name: Enable nginx
  become: true
  ansible.builtin.systemd:
    name: nginx
    enabled: true

service モジュールもある

汎用的な service モジュールは、さまざまな init システムで動作します。daemon_reload のような systemd 専用オプションが必要な場合は、systemd を直接使用します。

ハンドラーと相性がよい

よくあるパターンは、設定が変更された場合にだけサービスをrestartすることです。後で学ぶハンドラーが、変更を検知してこの再起動を実行します。

簡単な確認

nginx を今すぐ実行し、さらに再起動後も実行されるようにしたいとします。

振り返り

systemd モジュールは、サービスの起動、停止、再起動、有効化を行います。state は現在の状態、enabled はブート時の設定を意味することを覚えておきましょう。⚙️

よくある質問

「systemdでサービスを管理する」レッスンは無料ですか?

はい。「systemdでサービスを管理する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。

「systemdでサービスを管理する」で何を学びますか?

サービスを起動、停止、有効化します ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

DevOps Bootcampを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「systemdでサービスを管理する」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDevOps Bootcampレッスンでコードを書いて実行できますか?

はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. モジュールとは実際には何か
  2. packageモジュールでパッケージをインストールする
  3. systemdでサービスを管理する
  4. ansible-docでドキュメントを読む
← DevOps Bootcampに戻る