ansibleguy.sw_semaphore

Ansible-Semaphore - interface moderne pour Ansible

Rôle Ansible - Ansible-Semaphore

Rôle pour provisionner Ansible Semaphore sur un serveur Linux.

Semaphore est une alternative légère à Ansible AWX. (Interface Web pour l'utilisation d'Ansible)

Achetez-moi un café

Statut du test Molecule Statut du test YamlLint Statut du test PyLint Statut du test Ansible-Lint Ansible Galaxy

Logs de Molecule : Court, Complet

Testé :

  • Debian 11

Installation

# dernière version
ansible-galaxy role install git+https://github.com/ansibleguy/sw_semaphore

# depuis galaxy
ansible-galaxy install ansibleguy.sw_semaphore

# ou vers un chemin de rôle personnalisé
ansible-galaxy install ansibleguy.sw_semaphore --roles-path ./roles

# installer les dépendances
ansible-galaxy install -r requirements.yml

Utilisation

Vous voulez une interface Ansible simple ? Découvrez ma Ansible WebUI

Configuration

Configuration minimale :

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

  # optionnel :
  # version: '2.8.90'
  # admin:
  #   utilisateur: 'admin'
  #   nom: 'AnsibleGuy'
  #   email: '[email protected]'

Définissez la configuration selon vos besoins :

semaphore:
  manage:
    webserver: true  # installer et configurer nginx local avec un certificat min-ca
    database: true  # installer et configurer mariadb local
    backup: true  # installer le service pour sauvegarde quotidienne de la base de données locale (si la base de données est gérée)
    user: true  # créer l'utilisateur de service 'semaphore'
    ansible_cfg: true  # provisionner /home/semaphore/.ansible.cfg
    admin: true  # ajouter un utilisateur admin après l'installation

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

  persistent_requirements: false

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

  config:  # clés et valeurs de configuration comme définies dans '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

    # optionnel
    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))'  # connexion avec email ; doit être dans le groupe 'semaphore'

    # optionnel => voir : 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:  # exigences dont votre environnement d'exécution a besoin
    pip: ['httpx']  # tous les modules python3
    collections: ['community.general']  # toutes les collections ansible (si persistent_requirements=true)
    roles: []  # tous les rôles ansible (si persistent_requirements=true)

  ansible_config:  # /home/semaphore/.ansible.cfg => si manage.ansible_cfg=true; voir : https://docs.ansible.com/ansible/latest/reference_appendices/config.html
    defaults:  # section
      remote_port: 48322
      vault_id_match: 'semaphore'
    diff:
      context: 2

  backup:
    retention_days: 30

Vous voudrez peut-être utiliser 'ansible-vault' pour chiffrer vos mots de passe :

ansible-vault encrypt_string

Exécution

Exécutez le playbook :

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

Il y a aussi quelques tags utiles disponibles :

  • webserver
  • database
  • config
  • requirements

Pour déboguer les erreurs, vous pouvez définir la variable 'debug' au moment de l'exécution :

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

Fonctionnalité

  • Installation de paquets

    • Ansible-Semaphore dans la version spécifiée
    • Python3 PIP
    • Environnement virtuel Python3
      • Ansible
      • dépendances courantes des filtres Jinja d'Ansible
    • Git
  • Configuration

    • Service : 'semaphore.service'

    • Utilisateur de service : 'semaphore'

    • Configuration par défaut :

      • Répertoires :
        • Venv : '/var/local/lib/semaphore_venv'
        • Configuration : '/etc/semaphore'
        • Sauvegarde : '/var/backups/semaphore'
        • Tmp/Run : '/tmp/.semaphore'
    • Options par défaut :

      • Proxy Nginx => utilisant CE rôle
      • Base de données MariaDB => utilisant CE rôle
      • Sauvegarde quotidienne locale de la base de données (si la base de données est gérée)
        • Service de sauvegarde : 'semaphore-backup.service'
      • Provisionnement de 'ansible.cfg' pour l'utilisateur de service
      • Ajout d'un utilisateur admin après l'installation
    • Options par défaut non incluses :

      • Exigences persistantes
        • Service de mise à jour : 'semaphore-requirements.service'

Informations

  • Remarque : ce rôle ne prend actuellement en charge que les systèmes basés sur Debian.

  • Remarque : La plupart des fonctionnalités du rôle peuvent être incluses ou exclues.

    Pour toutes les options disponibles, consultez la configuration par défaut située dans le fichier de configuration principal !

  • Avertissement : Tous les réglages/variables que vous fournissez ne seront pas vérifiés pour leur validité. Une mauvaise configuration pourrait casser le rôle !

  • Remarque : Si vous souhaitez utiliser Docker => vous voudrez peut-être consulter l'image Docker officielle d'Ansible-Semaphore à la place !

  • Info : Les exigences persistantes peuvent être utilisées pour accélérer les exécutions :

    Cela installera et mettra à jour les rôles ansible et les collections ansible en utilisant un service/minuteur externe.

    Par défaut, Semaphore devra les réinstaller À CHAQUE EXÉCUTION.

    Pour que cela fonctionne, vous devrez également vous assurer que les fichiers de exigences n'existent pas dans vos dépôts :

    • $REPO/collections/requirements.yml
    • $REPO/roles/requirements.yml
À propos du projet

Ansible role to provision Ansible-Semaphore on a linux server

Installer
ansible-galaxy install ansibleguy.sw_semaphore
Licence
gpl-3.0
Téléchargements
2.1k
Propriétaire
[email protected] | GPG: https://badges.ansibleguy.net/public.gpg