ansibleguy.sw_semaphore
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)
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'
- Répertoires :
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'
- Exigences persistantes
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
Ansible role to provision Ansible-Semaphore on a linux server
ansible-galaxy install ansibleguy.sw_semaphore