29.2. systemd RHEL システムロールを使用した systemd ドロップインファイルのデプロイ
systemd は、他の場所からユニット用に読み取った設定にドロップインファイルを適用します。したがって、元のユニットファイルを変更せずに、ドロップインファイルを使用してユニット設定を変更できます。systemd
RHEL システムロールを使用すると、ドロップインファイルのデプロイプロセスを自動化できます。
このロールは、ハードコードされたファイル名 99-override.conf
を使用して、ドロップインファイルを /etc/systemd/system/<name>._<unit_type>/
に保存します。保存先ディレクトリー内にあるこの名前の既存のファイルがオーバーライドされることに注意してください。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo
権限がある。
手順
systemd ドロップインファイルの内容を使用して Jinja2 テンプレートを作成します。たとえば、次の内容の
~/sshd.service.conf.j2
ファイルを作成します。{{ ansible_managed | comment }} [Unit] After= After=network.target sshd-keygen.target network-online.target
このドロップインファイルは、元の
/usr/lib/systemd/system/sshd.service
ファイルと同じユニットをAfter
設定に指定します。さらにnetwork-online.target
も指定します。この追加のターゲットにより、ネットワークインターフェイスがアクティブ化されて IP アドレスが割り当てられた後に、sshd
が起動します。これにより、sshd
がすべての IP アドレスにバインドできるようになります。ファイル名には、
<name>.<unit_type>.conf.j2
という命名規則を使用します。たとえば、sshd.service
ユニットのドロップインを追加するには、ファイルにsshd.service.conf.j2
という名前を付ける必要があります。このファイルを Playbook と同じディレクトリーに配置します。次の内容を含む Playbook ファイル (例:
~/playbook.yml
) を作成します。--- - name: Managing systemd services hosts: managed-node-01.example.com tasks: - name: Deploy an sshd.service systemd drop-in file ansible.builtin.include_role: name: rhel-system-roles.systemd vars: systemd_dropins: - sshd.service.conf.j2
サンプル Playbook で指定されている設定は次のとおりです。
systemd_dropins: <list_of_files>
- デプロイするドロップインファイルの名前を YAML リスト形式で指定します。
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 'ls /etc/systemd/system/sshd.service.d/' 99-override.conf
関連情報
-
/usr/share/ansible/roles/rhel-system-roles.systemd/README.md
ファイル -
/usr/share/doc/rhel-system-roles/systemd/
ディレクトリー