andrelohmann.accounts

comptes

Dernier test

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

https://thedatabaseme.de/2022/01/17/automated-testing-your-ansible-role-with-molecule-and-github-actions/

  • 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>
À propos du projet

ansible galaxy role to deploy users and public keys

Installer
ansible-galaxy install andrelohmann.accounts
Licence
mit
Téléchargements
581
Propriétaire