buluma.service

Ansible角色 service

在你的Linux系统中添加自定义服务。

GitHub 版本 问题 拉取请求 下载
github 版本 问题 拉取请求 Ansible角色

示例剧本

此示例来自 molecule/default/converge.yml,并在每次推送、拉取请求和发布时进行测试。

---
- name: Converge
  hosts: all
  become: true
  gather_facts: true

  vars:
    _service_test_command:
      default: /usr/bin/sleep
      Alpine: /bin/sleep
      Debian: /bin/sleep
      Ubuntu-16: /bin/sleep
      Ubuntu-18: /bin/sleep
    service_test_command: "{{ _service_test_command[ansible_distribution ~ '-' ~ ansible_distribution_major_version] | default(_service_test_command[ansible_os_family] | default(_service_test_command['default'])) }}"  # noqa 204 仅为长文本。

  roles:
    - role: buluma.service
      service_list:
        - name: simple-service
          description: 简单服务
          start_command: "{{ service_test_command }} 3600"
          state: started
          enabled: true
        - name: stopped-service
          description: 简单服务
          start_command: "{{ service_test_command }} 3601"
          state: stopped
          enabled: false
        - name: specific-stop-service
          description: 特定停止服务
          start_command: "{{ service_test_command }} 1440"
          stop_command: /usr/bin/killall -f "sleep 1440"
        - name: specific-user-group-service
          description: 特定用户组服务
          start_command: "{{ service_test_command }} 28800"
          user_name: root
          group_name: root
        - name: specific-workingdirectory-service
          description: 特定工作目录服务
          start_command: "{{ service_test_command }} 57600"
          working_directory: /tmp
        - name: specific-pattern-service
          description: 特定状态模式服务
          start_command: "{{ service_test_command }} 115200"
          status_pattern: 115200
        - name: variable-service
          description: 带环境变量的服务
          start_command: "{{ service_test_command }} ${time}"
          environment_variables:
            time: 230400
        - name: pidfile-service
          description: 带pid文件的服务
          start_command: "{{ service_test_command }} 460800"
          pidfile: /var/run/pidfile-service.pid
        - name: environmentfile-service
          description: 带环境文件的服务
          start_command: "{{ service_test_command }} 921600"
          environmentfile: /environmentfile.txt

机器需要做好准备。在CI中,可以使用 molecule/default/prepare.yml 来完成:

---
- name: Prepare
  hosts: all
  gather_facts: false
  become: true
  serial: 30%

  roles:
    - role: buluma.bootstrap

  post_tasks:
    - name: 创建 /environmentfile.txt
      ansible.builtin.copy:
        content: "value=variable"
        dest: /environmentfile.txt
        mode: "0644"

另外,也可以查看 完整说明和示例 ,了解如何使用这些角色。

角色变量

变量的默认值在 defaults/main.yml 中设置:

---
# service的默认文件

# service_list可以包含要添加到系统的服务列表。
# 每个项的必需项目有:
# - name: 服务的(简短)名称,例如 "tomcat"。
# - description: 一个稍长的名称,例如 "Tomcat应用程序服务器"。
# - start_command: 启动守护进程的命令,
#   例如 "/usr/local/bin/java -jar some.jar"
# 可选项有:
# - stop_command: 默认情况下,找到并停止启动的程序。
#   如果运行的程序在启动期间被重命名或扩展(包括路径),
#   可以在这里指定自定义停止命令,例如 "pkill foo"
# - status_pattern: 查找程序状态时要查找的程序(或模式),
#   例如 "artifactory"。
# - type: 程序的启动方式; "simple" 或 "forking"。简单意味着程序
#   在前台运行,例如 "nc -l 1234"。分叉意味着程序本身会分叉,
#   例如 "nc -l 12345 &"
# - working_directory: 启动服务前要切换到的目录。
# - environment_variables: 要设置的变量列表。例如:
#   environment_variables:
#     variable1: value1
#     variable2: value2
# - after: 在提到的服务后启动。
# - restart_mode: 使用的模式,例如 "always"。
# - restart_seconds: 允许重启完成的时间。
service_list: []

要求

已使用角色的状态

以下角色用于准备系统。您可以以其他方式准备系统。

需求 GitHub 版本
buluma.bootstrap Ansible Molecule 版本

上下文

此角色是许多兼容角色的一部分。有关更多信息,请查看 这些角色的文档

以下是相关角色的概述:

依赖关系

兼容性

此角色已在以下 容器镜像 上进行测试:

容器 标签
EL 8
Debian 全部
Fedora 全部
opensuse 全部
Ubuntu 全部
Kali 全部

所需的最小Ansible版本为2.12,已进行测试:

  • 上一个版本。
  • 当前版本。
  • 开发版本。

如果您发现问题,请在 GitHub 中登记。

变更日志

角色历史

许可证

Apache-2.0

作者信息

Shadow Walker

关于项目

Add custom services to your Linux system.

安装
ansible-galaxy install buluma.service
许可证
apache-2.0
下载
396.8k
拥有者
DevOps Engineer