andrelohmann.accounts
comptes
Contenu
Déployez des utilisateurs et des clés publiques sur vos machines.
Exigences
Ce rôle nécessite Ubuntu.
Variables de rôle
Créez une liste de tous les utilisateurs qui doivent être créés sur le système. Vous pouvez définir chaque paramètre pour l'utilisateur disponible sur http://docs.ansible.com/ansible/user_module.html. Vous pouvez également définir chaque paramètre (sauf "user") pour la clé qui est disponible sur http://docs.ansible.com/ansible/authorized_key_module.html. Le tableau optionnel "accounts_sshd_configs" permet de définir des paramètres pour sshd_config.
accounts_users:
- name: __NOM_UTILISATEUR__
uid: __UID__
state: present
groups:
- sudo
public_keys:
- key: ssh-rsa AAA...
state: present
accounts_sshd_configs:
- key: PermitRootLogin
value: 'no'
- key: AuthenticationMethods
value: 'publickey password'
- PasswordAuthentication
value: 'yes'
Si vous avez besoin d'utilisateurs supplémentaires sur une base d'hôte, vous pouvez définir une liste supplémentaire accounts_host_users.
accounts_host_users:
- name: __NOM_UTILISATEUR__
uid: __UID__
state: present
groups:
- sudo
public_keys:
- key: ssh-rsa AAA...
state: present
Exemple de Playbook
- hosts: comptes
roles:
- { role: andrelohmann.accounts }
Développement de rôle
Objectif spécial
Ce dépôt prend en charge les fonctionnalités suivantes pour le développement de rôle :
- yamllint
- ansible-lint
- test de molécule
- action github
- mise à jour automatique de version
- mise à jour d'ansible-galaxy
- afficher l'état de construction
- tester avec vagrant (pour le développement)
- tester avec molécule (à l'intérieur ou à l'extérieur de vagrant)
- tester contre un conteneur docker
- tester et développer à l'intérieur de vscode
Prérequis
- Virtualbox + Vagrant installé (uniquement nécessaire si le rôle doit également être testé avec vagrant)
- Docker Desktop
- VisualStudioCode + pack d'extension distant (les dépendances sont définies dans .vscode/extensions.json)
Configuration de développement
Ce rôle ansible est développé en utilisant molécule 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é à lier 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, montage lié du 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 supporter 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 - étudiez la documentation de molécule
Utilisation
Visual Studio Code
- Changez dans le répertoire racine de votre rôle et démarrez vscode
code .
- À partir du conteneur de développement, vous pouvez utiliser les commandes suivantes
yamllint .
ansible-lint .
molecule create
molecule test
Vagrant + Virtualbox
- Changez dans le répertoire racine de votre rôle
- Changez dans le dossier vagrant
- Démarrez et entrez dans la machine vagrant
vagrant up
vagrant ssh
- Changez dans le dossier de 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 construction et de publication
Le rôle ansible définit un ensemble de flux de travail github pour exécuter des tests de molécule et la gestion des publications.
La gestion des publications nécessite quelques réglages.
Protéger 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 -> cochez "Exiger une demande de tirage avant de fusionner"
- "Exiger des approbations" peut être traité individuellement comme requis
Donner des permissions de lecture et d'écriture à GITHUB_TOKEN
- Paramètres -> Actions -> Général -> Permissions de flux de travail -> permissions de lecture et d'écriture
Messages de validation
Les messages de validation doivent suivre un format spécial pour réaliser une mise à jour de version sémantique de type 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 majeur
Il est absolument important que "BREAKING CHANGE: " soit mentionné à la deuxième ligne ou plus. Dans les messages de validation à ligne unique, 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é d'API galaxy dans Préférences -> Clé d'API
- Ouvrez votre dépôt de rôle github
- Paramètres -> Secrets et variables -> Actions -> Nouveau secret de dépôt
- Utilisez "GALAXY_API_KEY" comme clé et la clé d'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.accounts