andrelohmann.mailpit
mailpit
Contenu
Utilisez ce rôle pour installer mailpit et l'exécuter en tant que démon en arrière-plan à l'aide de systemd.
Exigences
Ce rôle nécessite Ubuntu.
Variables du rôle
L'ensemble par défaut des variables définit les paramètres avec lesquels mailpit sera démarré :
mailpit_smtp_port: 1025
mailpit_web_port: 8025
mailpit_release: latest
En définissant les variables supplémentaires suivantes, vous pouvez mettre mailpit derrière Apache :
mailpit_proxy_apache: true
mailpit_proxy_domain: _votre.domaine.mailpit_
mailpit_proxy_port: 80
ou Nginx :
mailpit_proxy_nginx: true
mailpit_proxy_domain: _votre.domaine.mailpit_
mailpit_proxy_port: 80
Exemple de Playbook
- hosts: mailpit
roles:
- { role: andrelohmann.mailpit }
Développement du rôle
Objectif spécial
Ce dépôt prend en charge les fonctionnalités suivantes pour le développement du rôle :
- yamllint
- ansible-lint
- test de molécule
- action GitHub
- mise à jour automatique de version
- mise à jour d'ansible-galaxy
- afficher l'état du build
- test dans vagrant (à des fins de développement)
- test avec molécule (dans ou hors de vagrant)
- test contre un conteneur docker
- test et développement dans vscode
Prérequis
- Virtualbox + Vagrant installés (uniquement nécessaire si le rôle doit également être testé avec vagrant)
- Docker Desktop
- VisualStudioCode + pack d'extensions distantes (les dépendances sont définies dans .vscode/extensions.json)
Configuration de développement
Ce rôle Ansible est développé en utilisant Molecule pour les tests. Son développement est basé sur Visual Studio Code et un conteneur de développement correspondant, résolvant toutes les dépendances en termes d'outils nécessaires (ansible, linter, molécule).
Le rôle sera testé sur deux conteneurs Ubuntu (focal, jammy).
Pour démarrer les conteneurs de test de molécule depuis le conteneur de développement, le socket Docker doit être monté dans le conteneur de développement.
Dossiers et fichiers importants
.devcontainer
- Définit le Dockerfile pour le conteneur de développement
- Configure le démarrage du conteneur de développement (par exemple, monter le socket Docker)
molecule/default/Dockerfile.js
- Utilisé comme modèle pour toutes les plateformes définies dans molecule/default/molecule.yml
- Prépare les environnements pour prendre en charge les services systemd (nécessaire pour certains rôles Ansible agissant sur systemd)
- Installe toutes les exigences pour exécuter ansible contre le conteneur dérivé
- Le fichier est aligné avec les attributs des plateformes dans molecule/default/molecule.yml
- Pour plus d'informations, consultez la documentation de la molécule
Utilisation
Visual Studio Code
- Changez vers le répertoire racine de votre rôle et démarrez vscode
code .
- Depuis le conteneur de développement, vous pouvez utiliser les commandes suivantes
yamllint .
ansible-lint .
molecule create
molecule test
Vagrant + Virtualbox
- Changez vers le répertoire racine de votre rôle
- Changez vers le dossier Vagrant
- Démarrez et entrez la machine Vagrant
vagrant up
vagrant ssh
- Changez vers le dossier du rôle
cd /etc/ansible/roles/ansible-role- [tab]
- Maintenant, vous pouvez exécuter tous les tests
yamllint .
ansible-lint .
molecule create
molecule test
Processus de Build et de Publication
Le rôle Ansible définit un ensemble de workflows GitHub pour exécuter des tests de molécule et gérer les versions.
La gestion des versions nécessite quelques réglages.
Protection de la branche master/main
- Paramètres -> Branches -> Ajouter une règle de protection de branche
- Nom du modèle de branche -> main ou master (selon votre branche par défaut)
- Protéger les branches correspondantes -> cocher "Exiger une demande de tirage avant de fusionner"
- "Exiger des approbations" peut être traité individuellement selon les besoins
Donner des permissions de lecture et d'écriture à GITHUB_TOKEN
- Paramètres -> Actions -> Général -> Permissions des workflows -> permissions de lecture et d'écriture
Messages de commit
Les messages de commit doivent suivre un format spécial pour effectuer une mise à jour de version sémantique (patch, mineur ou majeur).
patch
0.0.x
fix(single_word): description
mineur
0.x.0
feat(single_word): description
majeur
x.0.0
perf(single_word): description
BREAKING CHANGE: description du changement important
Il est très important que "BREAKING CHANGE: " soit mentionné à la deuxième ligne ou suivante. Pour les messages de commit sur une seule ligne, la mise à jour de version majeure sera ignorée.
Ajouter la clé secrète GALAXY_API_KEY
- Authentifiez-vous avec votre compte GitHub sur https://galaxy.ansible.com/.
- Récupérez la clé API Galaxy à partir de Préférences -> API Key
- Ouvrez votre dépôt de rôle GitHub
- Paramètres -> Secrets et variables -> Actions -> Nouveau secret du dépôt
- Utilisez "GALAXY_API_KEY" comme clé et la clé API Galaxy copiée comme valeur
Licence
MIT
Informations sur l'auteur
© Andre Lohmann (et d'autres) 2024
https://github.com/andrelohmann
Contact du mainteneur
- Andre Lohmann <lohmann.andre (at) gmail (dot) com>
ansible-galaxy install andrelohmann.mailpit