HanXHX.debian_bootstrap

Ansible Bootstrap para Debian/Devuan/Ubuntu/Raspbian

Ansible Galaxy Estado del flujo de trabajo de GitHub (con rama)

Este rol prepara los hosts de Debian/Devuan/Ubuntu/Raspbian:

  • Configura APT (sources.list)
  • Instala paquetes mínimos (vim, htop...)
  • Instala microcódigo de Intel/AMD si es necesario
  • Instala y configura el daemon NTP (OpenNTPd o NTP)
  • Agrega grupos, usuarios con clave SSH, sudoers
  • Despliega bashrc, vimrc para root
  • Actualiza algunas alternativas
  • Configura el sistema: nombre del host, zona horaria y configuración regional
  • Elimina y evita systemd si se desea
  • Ajustes de sysctl

Versiones soportadas

SO Funciona Estable (soporte activo)
Debian Stretch (9) No
Debian Buster (10)
Debian Bullseye (11)
Debian Bookworm (12)
Devuan Ascii (2) No
Raspbian Stretch (9) Experimental No
Raspbian Buster (10) Experimental No
Raspbian Bullseye (11) Experimental No
Ubuntu Bionic (18.04) No
Ubuntu Focal (20.04) Experimental No
Ubuntu Jammy (22.04) Experimental No

Requisitos

Variables del rol

Configuración de APT

Estas variables definen el nombre del host para configurar APT (repositorio normal y backports):

  • dbs_apt_default_host: host del repositorio. Puede reemplazar el anterior (instalado con este rol) por uno nuevo.
  • dbs_apt_use_src: instalar repositorios "deb-src" (por defecto: false).
  • dbs_apt_components: componentes usados en sources.list (por defecto: "main contrib non-free non-free-firmware").

Configuración del rol

  • dbs_set_hostname: si es true, cambia el nombre del host.
  • dbs_clean_hosts: si es true, gestiona el archivo /etc/hosts.
  • dbs_set_locale: si es true, configura las locales.
  • dbs_set_timezone: si es true, establece la zona horaria.
  • dbs_set_ntp: si es true, instala y configura OpenNTPd.
  • dbs_set_apt: si es true, configura el repositorio APT.

Configuración del sistema

  • dbs_hostname: nombre del host del sistema.
  • dbs_hostname_use_strategy: estrategia utilizada para establecer el nombre del host, ver "use" en módulo hostname. Debes actualizar esta variable solo si falla el nombre del host (en LXC, por ejemplo).
  • dbs_default_locale: locale por defecto del sistema.
  • dbs_locales: lista de locales instaladas.
  • dbs_timezone: zona horaria del sistema. Si necesitas una zona horaria "estándar" como UTC, debes usar el prefijo "Etc/" (ej: "Etc/UTC").
  • dbs_sysctl_config: hash de parámetros del kernel, ver: default/main.yml.
  • dbs_use_systemd: eliminar systemd si se establece en false (persistente).
  • dbs_use_dotfiles: sobrescribir los dotfiles de root (bashrc, screenrc, vimrc).
  • dbs_uninstall_packages: lista de paquetes a desinstalar.

Alternativas

  • dbs_alternative_editor
  • dbs_alternative_awk

NTPd

  • dbs_ntp_hosts: lista de nombres de servidores NTP.
  • dbs_ntp_pkg: paquete utilizado para proporcionar NTP: "openntpd" o "ntp".

Grupos

  • dbs_groups: lista de grupos.

Cada fila tiene algunas claves:

  • name: (M) nombre de usuario en el sistema.
  • system: (O) sí/no (por defecto: no).
  • state: (O) presente/ausente (por defecto: presente).

(M) Obligatorio
(O) Opcional

Usuario

  • dbs_users: lista de usuarios.

Cada fila tiene algunas claves:

  • name: (M) nombre de usuario en el sistema.
  • password: (O) contraseña con formato hash (ver documentación de ansible).
  • clear_password: (O) contraseña en formato claro (no recomendado).
  • update_password: (O) siempre / al_crear.
  • shell: (O) por defecto es /bin/bash.
  • comment: (O) por defecto es una cadena vacía.
  • sudo: (O) booleano (true = puede usar sudo).
  • group: (O) grupo principal (por defecto es name sin contraseña).
  • groups: (O) lista de grupos separados por coma.
  • createhome: (O) sí/no.
  • system: (O) sí/no (por defecto: no).
  • ssh_keys: (O) lista de claves públicas SSH.
  • state: (O) presente/ausente (por defecto: presente).

(M) Obligatorio
(O) Opcional

Notas:

  • si se especifica password, no se usa clear_password.
  • clear_password no es idempotente con update_password = siempre (por defecto).

Para más información, consulta documentación del módulo de usuario de ansible.

Variables de solo lectura

  • dbs_packages: lista de paquetes a instalar.
  • dbs_microcode_apt_distribution: ubicación del paquete para instalar microcódigo.
  • dbs_distro_packages: lista de paquetes específicos para instalar (relacionados con la versión del SO).
  • dbs_is_docker: booleano. Es true si el actual es un contenedor docker.

Dependencias

Ninguna.

Ejemplo de Playbook

- hosts: servers
  roles:
     - { role: HanXHX.debian_bootstrap }

Acerca de Docker

Debido a las limitaciones de Docker, estas características están deshabilitadas:

  • Eliminar systemd
  • Establecer el nombre del host
  • Configurar sysctl

Cómo desarrollar y probar este rol

Método Vagrant

Instala vagrant + virtualbox o docker

vagrant up debian-bullseye # con virtualbox
vagrant up docker-debian-bullseye # con docker

Método Molecule

Instala:

pip install molecule molecule[docker]

Ejecuta:

molecule -vv -c molecule/_shared/base.yml converge -s ubuntu-22.04

Licencia

GPLv2

Donaciones

Si este código te ayudó, o si lo has utilizado para tus proyectos, siéntete libre de invitarme unas :cervezas:

  • Bitcoin: 1BQwhBeszzWbUTyK4aUyq3SRg7rBSHcEQn
  • Ethereum: 0x63abe6b2648fd892816d87a31e3d9d4365a737b5
  • Litecoin: LeNDw34zQLX84VvhCGADNvHMEgb5QyFXyD
  • Monero: 45wbf7VdQAZS5EWUrPhen7Wo4hy7Pa7c7ZBdaWQSRowtd3CZ5vpVw5nTPphTuqVQrnYZC72FXDYyfP31uJmfSQ6qRXFy3bQ

¿No tienes criptomonedas? :estrella: ¡el proyecto también es una forma de agradecer! :sunglasses:

Información del autor

Acerca del proyecto

Normalize and prepare a Debian/Devuan/Ubuntu Linux server

Instalar
ansible-galaxy install HanXHX.debian_bootstrap
Licencia
gpl-2.0
Descargas
6.5k
Propietario
CEO/CTO/SRE triplestack.fr / daemonit.com