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: truesystemd デーモンをリロードする
新しい 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: trueservice モジュールもある
汎用的な 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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- モジュールとは実際には何か
- packageモジュールでパッケージをインストールする
- systemdでサービスを管理する
- ansible-docでドキュメントを読む