andrelohmann.accounts

cuentas

Última prueba

Contenido

Despliega usuarios y claves públicas en tus máquinas.

Requisitos

Este rol requiere Ubuntu.

Variables del Rol

Crea una lista con todos los usuarios que necesitan ser creados en el sistema. Puedes establecer cada parámetro para el usuario que está disponible en http://docs.ansible.com/ansible/user_module.html. También puedes establecer cada parámetro (excepto "usuario") para la clave que está disponible en http://docs.ansible.com/ansible/authorized_key_module.html. El array opcional "accounts_sshd_configs" permite establecer parámetros de sshd_config.

accounts_users:
- name: __NOMBRE_DE_USUARIO__
  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 necesitas usuarios adicionales en base al host, puedes establecer una lista adicional accounts_host_users.

accounts_host_users:
- name: __NOMBRE_DE_USUARIO__
  uid: __UID__
  state: present
  groups:
  - sudo
  public_keys:
  - key: ssh-rsa AAA...
    state: present

Ejemplo de Playbook

- hosts: accounts
  roles:
  - { role: andrelohmann.accounts }

Desarrollo del Rol

Propósito especial

Este repositorio soporta las siguientes características para el desarrollo del rol:

  • yamllint
  • ansible-lint
  • prueba de molécula
  • acción de GitHub
  • auto actualización de versión
  • actualizar ansible-galaxy
  • mostrar estado de la construcción
  • prueba dentro de vagrant (para fines de desarrollo)
  • prueba con molécula (dentro o fuera de vagrant)
  • prueba contra contenedor Docker
  • prueba y desarrollo dentro de vscode

Requisitos

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

  • Virtualbox + Vagrant instalado (solo necesario si el rol debe ser probado con vagrant también)
  • Docker Desktop
  • VisualStudioCode + paquete de extensión remoto (dependencias están definidas dentro de .vscode/extensions.json)

Configuración de Desarrollo

Este rol de ansible se desarrolla usando molécula para pruebas. Su desarrollo se basa en Visual Studio Code y un contenedor de desarrollo correspondiente, resolviendo todas las dependencias en términos de herramientas necesarias (ansible, linters, molécula).

El rol será probado en dos contenedores Ubuntu (focal, jammy).

Para iniciar los contenedores de prueba de molécula desde dentro del contenedor de desarrollo, el socket de Docker necesita ser montado en el contenedor de desarrollo.

Carpetas y archivos importantes

.devcontainer
  • Define el Dockerfile para el contenedor de desarrollo
  • Configura el inicio del contenedor de desarrollo (por ejemplo, montar el socket de Docker)
molecule/default/Dockerfile.js
  • Usado como plantilla para todas las plataformas definidas en molecule/default/molecule.yml
  • Prepara los entornos para soportar servicios de systemd (necesario para algunos roles de ansible que actúan sobre systemd)
  • Instala todos los requisitos para ejecutar ansible contra el contenedor derivado
  • El archivo está alineado con los atributos de las plataformas en molecule/default/molecule.yml
  • Para más información, estudia la documentación de molécula

Uso

Visual Studio Code

  • Cambia al directorio raíz de tu rol y abre vscode
code .
  • Desde dentro del contenedor de desarrollo, puedes usar los siguientes comandos de ejecución
yamllint .
ansible-lint .
molecule create
molecule test

Vagrant + Virtualbox

  • Cambia al directorio raíz de tu rol
  • Cambia a la carpeta de vagrant
  • Inicia y entra en la máquina de vagrant
vagrant up
vagrant ssh
  • Cambia al directorio del rol
cd /etc/ansible/roles/ansible-role- [tab]
  • Ahora puedes ejecutar todas las pruebas
yamllint .
ansible-lint .
molecule create
molecule test

Proceso de Construcción y Lanzamiento

El rol de ansible define un conjunto de flujos de trabajo de GitHub para ejecutar pruebas de molécula y gestionar lanzamientos.

La gestión de lanzamientos requiere algunas configuraciones.

Proteger la rama principal/main

  • Configuraciones -> Ramas -> Agregar regla de protección de rama
  • Nombre del patrón de rama -> main o master (dependiendo de tu rama predeterminada)
  • Proteger ramas coincidentes -> marcar "Requerir una solicitud de extracción antes de fusionar"
  • "Requerir aprobaciones" puede manejarse de forma individual según se requiera

Dar permisos de lectura y escritura a GITHUB_TOKEN

  • Configuraciones -> Acciones -> General -> Permisos de flujo de trabajo -> permisos de lectura y escritura

Mensajes de confirmación

Los mensajes de confirmación deben seguir un formato especial para lograr una actualización de versión semántica de parche, menor o mayor.

parche

0.0.x

fix(single_word): descripción
menor

0.x.0

feat(single_word): descripción
mayor

x.0.0

perf(single_word): descripción
BREAKING CHANGE: describiendo el cambio disruptivo

Es absolutamente importante que "BREAKING CHANGE: " se mencione en la segunda línea o posteriores. En los mensajes de confirmación de línea única, se ignorará la actualización de la versión mayor.

Agregar clave secreta GALAXY_API_KEY

  • Autentícate con tu cuenta de GitHub en https://galaxy.ansible.com/.
  • Obtén la clave API de galaxy de Preferencias -> Clave API
  • Abre tu repositorio de rol de GitHub
  • Configuraciones -> Secretos y variables -> Acciones -> Nuevo secreto de repositorio
  • Usa "GALAXY_API_KEY" como clave y la clave API de galaxy copiada como valor

Licencia

MIT

Información del Autor

© Andre Lohmann (y otros) 2024

https://github.com/andrelohmann

Contacto del Mantenedor

  • Andre Lohmann <lohmann.andre (en) gmail (punto) com>
Acerca del proyecto

ansible galaxy role to deploy users and public keys

Instalar
ansible-galaxy install andrelohmann.accounts
Licencia
mit
Descargas
581
Propietario