stackbuilders.sb-debian-base

Advertencia: Esta biblioteca ha sido desaprobada y ya no se mantiene. No recibirá más parches de seguridad, funciones o correcciones de errores y se conserva aquí en GitHub con fines de archivo. Si deseas utilizarla, te sugerimos hacer un fork del repositorio y auditar el código antes de usarla. Para más información, contáctanos en info@stackbuilders.com.

Roles Recomendados:

Stack Builders - Base de Debian

Estado de la Construcción Ansible Galaxy

Imagen genérica de Debian para servidores. Esta Galaxy requiere Ansible 2.7.0

Plataformas Soportadas

  • Debian

    • 10 (buster)
    • 9 (stretch)
  • Ubuntu

    • 18.04 (bionic)
    • 16.04 (xenial)

CAMBIOS IMPORTANTES:

  • Las tareas de Haskell se eliminaron de este rol, por lo que las variables install_haskell_stack y install_haskell_dependencies para llamar a las tareas de instalación de Haskell ya no se utilizan.

Cómo usar este rol

La versión actual utiliza el control de flujo de Ansible (when: foo está definido) para ejecutar tareas para las diferentes etapas, pero mantiene algunas etiquetas útiles como establecer el nombre del host o crear el directorio de despliegue.

Primero asegúrate de crear el archivo requirements.yml y agregar la referencia a este repositorio, de la siguiente manera:

---
- src: [email protected]:stackbuilders/sb-debian-base.git
  version: <tag, commit o branch>
  path: external-roles

Después de eso, necesitas ejecutar el siguiente comando:

ansible-galaxy install -r requirements.yml

Crear un playbook

Crea un archivo de playbook y en la sección de roles establece el grupo de tareas que necesitas ejecutar. Como ejemplo, puedes usar tests/site.yml o el siguiente:

# site.yml
- hosts: all
  remote_user: foo
  vars:
    sb_debian_base_admin_user_authorized_keys:
      - ssh-rsa AAAAB3NzaC1yc1E ADMIN_USER_1
      - ssh-rsa AAAAB3Nzac2Yc2e ADMIN_USER_2
    sb_debian_base_deploy_user_authorized_keys:
      - ssh-rsa AAAAB3NzaC1yc1E DEPLOY_USER_1
      - ssh-rsa AAAAB3Nzac2Yc2e DEPLOY_USER_2
  roles:
    - role: sb-debian-base
      prebootstrap: yes
    - role: sb-debian-base
      bootstrap: yes
      add_remove_keys: yes
      vars:
        sb_debian_base_deploy_user: deployer
        sb_debian_base_supplementary_packages: [ "pkg-config", "traceroute" ]
        sb_debian_base_environment_variables:
          ONE: "uno"
          TWO: "dos"

También puedes ejecutar tareas ad-hoc, aunque no es la forma recomendada:

ansible-playbook -l local -i hosts site.yml -k -u root -e "prebootstrap: yes"

Ejecuta el playbook de esta manera:

# Imagen básica
ansible-playbook -l local -i hosts site.yml -k -u root

# Cuenta de Administrador
ansible-playbook -l local -i hosts site.yml -u administrator

Los siguientes grupos de tareas están disponibles:

Prebootstrap (prebootstrap)

Esta etiqueta contiene tareas de configuración básica, tales como:

  • Agregar usuario administrador
    • El valor predeterminado es admin en Debian, ubuntu en Ubuntu. Puedes definir la variable {{ sb_debian_base_admin_user }}
  • Actualizar caché de paquetes
  • Instalar el paquete sudo
  • Usar sudo sin contraseña para el grupo sudo
  • Configurar claves SSH autorizadas para usuarios administradores
    • Necesitas definir {{ sb_debian_base_admin_user_authorized_keys }}

Bootstrap (bootstrap)

Esta etiqueta contiene tareas de configuración más avanzadas, tales como:

  • Deshabilitar la autenticación por contraseña para sesiones SSH
  • Deshabilitar el acceso SSH para el usuario root
  • Establecer el nombre del host
    • Puedes definir {{ hostname }}
  • Establecer la zona horaria
    • Puedes definir {{ sb_debian_base_ntp_timezone }}
  • Habilitar NTP usando systemd-timesyncd
  • Asegurarte de almacenar los datos de journald de manera persistente
  • Actualizar todos los paquetes
  • Instalar paquetes básicos
    • por ejemplo: vim, tmux, htop, atop, tree, ufw, emacs, git, curl
  • Instalar paquetes suplementarios - no solo sb_debian_base_extra_packages
  • Habilitar el firewall usando UFW
    • Abrir puertos generales (por ejemplo, puerto SSH, puerto HTTP; por defecto SSH)
      • Puedes definir {{ ports }}
    • Abrir puertos específicos para IPs específicas
      • Puedes definir {{ port_ips }}
    • Puedes deshabilitar UFW con sb_debian_base_firewall: no
  • Establecer y actualizar variables de entorno
    • Necesitas definir {{ sb_debian_base_environment_variables }}
  • Crear usuario y grupo Unix para el usuario desplegador
    • Necesitas definir la variable {{ sb_debian_base_deploy_user }} (por ejemplo, deployer)
    • Opcionalmente define la variable {{ sb_debian_base_deploy_user_group }} (por ejemplo, deployer), de lo contrario, será la misma que {{ sb_debian_base_deploy_user }}
  • Crear directorio de despliegue de la aplicación
  • Agregar claves SSH para las «Claves de Despliegue» de GitHub
  • Configurar claves SSH autorizadas para el usuario desplegador
    • Necesitas definir {{ sb_debian_base_deploy_user_authorized_keys }}
  • Asegurarte de que github.com sea un host conocido
    • Necesitas definir {{ sb_debian_base_deploy_user }}
    • Esta variable agrega por defecto a GitHub como un host conocido, pero es posible cambiarlo sobrescribiendo {{ sb_debian_base_known_hosts }}
  • Establecer la configuración global de historial de bash en el formato siguiente: 285 Thu 08 Aug 2019 01:43:40 PM UTC algún comando Consulta a continuación las variables disponibles.

Establecer nombre del host (set-hostname)

  • Establecer el nombre del host a la variable específica del host
    • Necesitas definir {{ hostname }}

Configuración del historial de bash:

  • Habilitar/deshabilitar la configuración del historial sb_debian_base_bash_history: true

  • Bajo sb_debian_base_bash_history_config:

    • Establecer la cantidad de líneas a mantener en el buffer de historial histsize: '5000'
    • Establecer la cantidad de líneas a mantener en el archivo de historial histfilesize: '3000'
    • Establecer el formato de tiempo a agregar antes de cada comando de historial (ver man history para opciones completas) histtimeformat: '%c%t'

Crear directorio de la aplicación (create-app-directory)

  • Crear el directorio de despliegue de la aplicación
    • Cuando {{ sb_debian_base_deploy_user }} está definido

Dependencias externas (Galaxias) incluidas en este grupo de tareas de bootstrap

  • kamaln7.swapfile (Configurar el archivo de intercambio)
    • Puedes definir la variable {{ sb_debian_base_swap_file_size }} (por ejemplo, 2048MB)
  • Instalar unattended-upgrades para parches de seguridad solamente
    • Puedes definir la variable {{ sb_debian_base_uu_email_alerts }} (por ejemplo, example@example.com)

Actualizar claves SSH autorizadas (add-remove-keys)

  • Actualiza las claves autorizadas SSH:

    • Necesitas definir la siguiente lista de variables que contienen las claves públicas SSH para ambos, usuarios administradores y desplegadores respectivamente:
{{ sb_debian_base_admin_user_authorized_keys }}
{{ sb_debian_base_deploy_user_authorized_keys }}

Licencia

MIT, consulta el archivo LICENSE en este repositorio.

Información del Autor

Justin Leitgeb, Stack Builders Inc.

Acerca del proyecto

Base image and common roles

Instalar
ansible-galaxy install stackbuilders.sb-debian-base
Licencia
mit
Descargas
14k
Propietario
Our team pushes the boundaries of the software industry through quality, pragmatic custom solutions that bring the visions of our clients to life.