28.4. systemd RHEL システムロールを使用した systemd ユーザーユニットのデプロイ


カスタムアプリケーション用としてユーザーごとにユニットファイルを作成でき、systemd はそれらを /home/<username>/.config/systemd/user/ ディレクトリーから読み取ります。systemd RHEL システムロールを使用すると、各ユーザーのカスタムユニットファイルのデプロイを自動化できます。

前提条件

  • コントロールノードと管理対象ノードの準備が完了している
  • 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
  • 管理対象ノードへの接続に使用するアカウントに、そのノードに対する sudo 権限がある。
  • systemd ユニットの Playbook に指定したユーザーが存在する。

手順

  1. カスタム systemd ユニットファイルの内容を使用して Jinja2 テンプレートを作成します。たとえば、次のように、サービスの内容を含む ~/example.service.j2 ファイルを作成します。

    {{ ansible_managed | comment }}
    [Unit]
    Description=Example systemd service unit file
    
    [Service]
    ExecStart=/bin/true
    RemainAfterExit=yes
    
    [Install]
    WantedBy=multi-user.target

    ファイル名には、<name>.<unit_type>.j2 という命名規則を使用します。たとえば、example.service ユニットを作成するには、ファイルに example.service.j2 という名前を付ける必要があります。このファイルを Playbook と同じディレクトリーに配置します。

  2. 次の内容を含む Playbook ファイル (例: ~/playbook.yml) を作成します。

    ---
    - name: Managing systemd services
      hosts: managed-node-01.example.com
      tasks:
        - name: Deploy, enable, and start a custom systemd service for a user
          ansible.builtin.include_role:
            name: rhel-system-roles.systemd
          vars:
            systemd_unit_file_templates:
              - item: example.service.j2
                user: <username>
            systemd_enabled_units:
              - item: example.service
                user: <username>
            systemd_started_units:
              - item: example.service
                user: <username>
    重要

    systemd RHEL システムロールは新しいユーザーを作成しません。Playbook に存在しないユーザーを指定するとエラーが返されます。

    Playbook で使用されるすべての変数の詳細は、コントロールノードの /usr/share/ansible/roles/rhel-system-roles.systemd/README.md ファイルを参照してください。

  3. Playbook の構文を検証します。

    $ ansible-playbook --syntax-check ~/playbook.yml

    このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。

  4. Playbook を実行します。

    $ ansible-playbook ~/playbook.yml

検証

  • サービスが有効になっていて起動していることを確認します。

    # ansible managed-node-01.example.com -m command -a 'systemctl --user -M <username>@ status example.service'
    ...
    ● example.service - Example systemd service unit file
         Loaded: loaded (/home/<username>/.config/systemd/user/example.service; enabled; preset: disabled)
         Active: active (exited) since Wed 2025-03-05 13:33:36 CET; 45s ago
    ...
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る