29.3. systemd RHEL システムロールを使用した systemd ユニットのデプロイ
カスタムアプリケーション用のユニットファイルを作成すると、systemd はそれを /etc/systemd/system/
ディレクトリーから読み取ります。systemd
RHEL システムロールを使用すると、カスタムユニットファイルのデプロイを自動化できます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo
権限がある。
手順
カスタム systemd ユニットファイルの内容を使用して Jinja2 テンプレートを作成します。たとえば、次のように、サービスの内容を含む
~/example.service.j2
ファイルを作成します。{{ ansible_managed | comment }} [Unit] Description=Example systemd service unit file [Service] ExecStart=/bin/true
ファイル名には、
<name>.<unit_type>.j2
という命名規則を使用します。たとえば、example.service
ユニットを作成するには、ファイルにexample.service.j2
という名前を付ける必要があります。このファイルを Playbook と同じディレクトリーに配置します。次の内容を含む Playbook ファイル (例:
~/playbook.yml
) を作成します。--- - name: Managing systemd services hosts: managed-node-01.example.com tasks: - name: Deploy, enable, and start a custom systemd service ansible.builtin.include_role: name: rhel-system-roles.systemd vars: systemd_unit_file_templates: - example.service.j2 systemd_enabled_units: - example.service systemd_started_units: - example.service
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.systemd/README.md
ファイルを参照してください。Playbook の構文を検証します。
$ ansible-playbook --syntax-check ~/playbook.yml
このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
$ ansible-playbook ~/playbook.yml
検証
サービスが有効になっていて起動していることを確認します。
# ansible managed-node-01.example.com -m command -a 'systemctl status example.service' ... ● example.service - A service for demonstrating purposes Loaded: loaded (/etc/systemd/system/example.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2024-07-04 15:59:18 CEST; 10min ago ...
関連情報
-
/usr/share/ansible/roles/rhel-system-roles.systemd/README.md
ファイル -
/usr/share/doc/rhel-system-roles/systemd/
ディレクトリー