搜索

29.3. 使用 systemd RHEL 系统角色部署 systemd 单元

download PDF

您可以为自定义应用程序创建单元文件,systemd 从 /etc/systemd/system/ 目录中读取这些文件。通过使用 systemd RHEL 系统角色,您可以自动部署自定义单元文件。

先决条件

流程

  1. 使用自定义 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 放在同一个目录中。

  2. 创建一个包含以下内容的 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 文件。

  3. 验证 playbook 语法:

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

    请注意,这个命令只验证语法,不会防止错误但有效的配置。

  4. 运行 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/ 目录
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.