ansibleguy.sw_semaphore

Ansible-Semaphore - modern UI for Ansible

Ansible角色 - Ansible-Semaphore

在Linux服务器上配置Ansible Semaphore的角色。

Semaphore是一个轻量级的Ansible AWX替代方案。(_用于Ansible使用的Web界面_)

请给我买杯咖啡

Molecule测试状态 YamlLint测试状态 PyLint测试状态 Ansible-Lint测试状态 Ansible Galaxy

Molecule日志: 简短版, 完整版

测试环境:

  • Debian 11

安装

# 最新版
ansible-galaxy role install git+https://github.com/ansibleguy/sw_semaphore

# 从galaxy安装
ansible-galaxy install ansibleguy.sw_semaphore

# 或者安装到自定义角色路径
ansible-galaxy install ansibleguy.sw_semaphore --roles-path ./roles

# 安装依赖
ansible-galaxy install -r requirements.yml

使用方法

您想要一个简单的Ansible图形界面吗?可以查看我的Ansible WebUI

配置

最小配置:

semaphore:
  nginx:
    domain: 'semaphore.test.ansibleguy.net'

  # 可选:
  # version: '2.8.90'
  # admin:
  #   user: 'admin'
  #   name: 'AnsibleGuy'
  #   email: '[email protected]'

根据需要定义配置:

semaphore:
  manage:
    webserver: true  # 安装并配置本地nginx,使用最小CA证书
    database: true  # 安装并配置本地mariadb
    backup: true  # 安装每日本地数据库备份服务(如果数据库被管理)
    user: true  # 创建服务用户'semaphore'
    ansible_cfg: true  # 配置/home/semaphore/.ansible.cfg
    admin: true  # 安装后添加管理员用户

  version: '2.8.90'  # 参见:https://github.com/ansible-semaphore/semaphore/releases

  persistent_requirements: false

  admin:
    user: 'admin'
    email: '[email protected]'
    pwd: !vault |
      $ANSIBLE_VAULT;1.1;AES256
      ...

  config:  # 配置键值对根据在'config.json'中设置的内容:https://docs.ansible-semaphore.com/administration-guide/configuration
    concurrency_mode: 'node'
    email_sender: '[email protected]'
    email_host: 'mail.template.ansibleguy.net'
    email_alert: true

    # 可选
    ldap_enable: true
    ldap_needtls: true
    ldap_binddn: 'service_semaphore'
    ldap_bindpassword: !vault |
      $ANSIBLE_VAULT;1.1;AES256
      ...
    ldap_server: 'ldap.template.ansibleguy.net:636'
    ldap_searchfilter: '(&(mail=%s)(objectClass=person)(memberOf:=CN=semaphore,OU=Groups,DC=template,DC=ansibleguy,DC=net))'  # 使用邮件登录;须在' semaphore'组中

    # 可选=>参见:https://docs.ansible-semaphore.com/administration-guide/security#database-encryption
    cookie_hash: !vault |
      $ANSIBLE_VAULT;1.1;AES256
      ...
    cookie_encryption: !vault |
      $ANSIBLE_VAULT;1.1;AES256
      ...
    access_key_encryption: !vault |
      $ANSIBLE_VAULT;1.1;AES256
      ...

  requirements:  # 执行环境所需的依赖
    pip: ['httpx']  # 任何Python3模块
    collections: ['community.general']  # 任何Ansible集合(如果persistent_requirements=true)
    roles: []  # 任何Ansible角色(如果persistent_requirements=true)

  ansible_config:  # /home/semaphore/.ansible.cfg => 如果manage.ansible_cfg=true;参见:https://docs.ansible.com/ansible/latest/reference_appendices/config.html
    defaults:  # 部分
      remote_port: 48322
      vault_id_match: 'semaphore'
    diff:
      context: 2

  backup:
    retention_days: 30

您可能想使用'ansible-vault'来加密您的密码:

ansible-vault encrypt_string

执行

运行剧本:

ansible-playbook -K -D -i inventory/hosts.yml playbook.yml

还有一些有用的标签可用:

  • webserver
  • database
  • config
  • requirements

要调试错误,您可以在运行时设置'debug'变量:

ansible-playbook -K -D -i inventory/hosts.yml playbook.yml -e debug=yes

功能

  • 包安装

    • 指定版本的Ansible-Semaphore
    • Python3 PIP
    • Python3虚拟环境
      • Ansible
      • 常见的Ansible Jinja-Filter依赖项
    • Git
  • 配置

    • 服务:'semaphore.service'

    • 服务用户:'semaphore'

    • 默认配置

      • 目录:
        • 虚拟环境:'/var/local/lib/semaphore_venv'
        • 配置:'/etc/semaphore'
        • 备份:'/var/backups/semaphore'
        • 临时/运行:'/tmp/.semaphore'
    • 默认选项

      • Nginx代理 => 使用这个角色
      • MariaDB数据库 => 使用这个角色
      • 每日本地数据库备份(_如果数据库被管理_)
        • 备份服务:'semaphore-backup.service'
      • 为服务用户配置'ansible.cfg'
      • 安装后添加管理员用户
    • 默认不选项

      • 持续的需求
        • 更新服务:'semaphore-requirements.service'

信息

  • 注意:此角色当前仅支持基于Debian的系统

  • 注意:角色的大部分功能可以选择启用或禁用。

    有关所有可用选项,请参见主默认文件中的默认配置!

  • 警告:您提供的并非每个设置/变量都会被检查有效性。错误的配置可能会导致角色无法使用!

  • 注意:如果您想使用Docker,请查看Ansible-Semaphore的官方Docker镜像

  • 信息:可以使用持久需求加快执行速度:

    它将使用外部服务/定时器安装和更新ansible角色和ansible集合。

    默认情况下,semaphore在每次执行时都需要重新安装它们。

    为了使其正常工作,您还必须确保需求文件在您的仓库中不存在:

    • $REPO/collections/requirements.yml
    • $REPO/roles/requirements.yml
关于项目

Ansible role to provision Ansible-Semaphore on a linux server

安装
ansible-galaxy install ansibleguy.sw_semaphore
许可证
gpl-3.0
下载
2.1k
拥有者
[email protected] | GPG: https://badges.ansibleguy.net/public.gpg