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 strives to push the boundaries of the software industry through quality, pragmatic custom solutions that bring the visions of our clients to life.