Aprovisionando servidores: lecciones aprendidas(?) de manera difícil

Eduardo Casarero Percona Sysarmy Por qué no puse un título más corto…. About me

Eduardo Casarero

- Sysadmin por casi 10 años. - Actualmente Sr Sysadmin en el team de Infraestructura Interna de Percona. - Charlas de: - Vagrant - Git - DNS - Organización de Sysarmy / Nerdearla - [email protected] / @jedux Que es Sysarmy?

- Comunidad - Networking - Nerdearla 2017 - Adminbirras - Meetarmy - IRC - /help - CABASE / ARNOG - ekoparty - flisol Super rápido historial de mi experiencia donde “aprendí” de infraestructura. monitoreo.com

- Racks en la oficina. - Super old technology: Modems - Redes novell productivas. - “Servidores” = PC’s buenas. - Grupo electrógeno de 60hz - 7.2 Consultora - Salud & Gobierno (2005)

- <3 Microsoft - <3 Sun - Oracle - FrameRelay 64kb - Cisco PIX con WRT Linksys - Racks en oficina. - Enterprise Hardware (HP, IBM) - Windows NT, Windows 2000, Windows XP, Windows 2003 Server. - Astaro Linux El carrier 2008

- SOC -> firewalls / IDS - Datacenter de verdad: - Artigas - Telepuerto - Enterprise servers algunos. - Servers de integrador nacional. - Monitoreo a gran escala. - Indicios de automatización de tareas. Hosting provider.

- Hosting tradicional, www, email, dns. - Cpanel? Nope. - Todo instalado from scratch. - Slackware 10.2 -> Ubuntu - Enterprise servers. - Poor man servers. - Cheap baremetals overseas. SaaS (2012-2014)

- Enterprise Servers - DC en oficina - DC distribuidos en US / EU - AWS - Nagios - Reinventando la rueda - Provisioning manual lento Percona

- Percona-server - Services - Remote DBA - Percona Care - Support - Mysql - MongoDB - Consultoria - Blog! - Opensource tools - Percona-toolkit - PMM - xtrabackup Percona

- DC in office “found that 61 - 2 DC in US - 40 Servers físicos percent of - 5 cuentas AWS business units - Varios casos de uso: - Building software bypass the IT - Internal services - External services - Public software repository function - Ownership issues - Cultural barriers completely.”* - SHADOW IT *http://www.cio.com/article/2379552/compliance/how-to-bring-shadow-it-under-control.html El caso de uso

- Comprar equipamiento - Configurar equipamiento - Hardening / Security de equipamiento - Mantener equipamiento - Delegar gestión y self-provisioning en otros teams. - Evitar que lo anterior rompa todo. - Deprecar equipamiento El caso de uso pero...

- Hacer todo lo anterior: - rápido, para ayer, - sin equivocarse, - sin gastar un peso. - documentando. - Sin morir en el intento. - Sin incrementar la deuda técnica.

Empezando desde cero

- Cableado eléctrico saludable - No colgar el circuito del DC de la térmica del baño. - UPS - Hacer bien la estimación de carga. - La ups generalmente trae un sensor ambiental. - PDU - Si el DC es remoto, es mandatorio tener una PDU administrable. Servidores

- Enterprise level (Supermicro, Dell, HP, etc.) - IPMI/iDRAC/KVM/iLO (Mucho muy importante). - Commodity hardware, solo si contemplo fallas desde el día 0. - HD (*): - RAID por software / hardware dependiendo del caso. RAID5 sino hay remedio. - SSD/SAS/SATA Enterprise - SATA WD Black - WD Green prohibidos. - Memoria: toda la que se pueda.

(*) https://www.backblaze.com/blog/hard-drive-failure-rates-q3-2016/ No construir sus propios chasis y configuraciones de servers. Remote rsync: ZFS + rsync Offsite backup box: Gigabyte Mother WD green disks (adivinen si se rompio?) Storage ‘económico’

- highly-available dual-controller storage array - - using open-source technologies. - shared storage to any NFS client.

Low-cost build manifest for a simple 12TB usable storage array (under $3.5k):

● 2 x HP ProLiant DL360 G7 rackmount servers (~$750 total) ● 2 x HP H221 SAS HBA ($240 total) ● 4 x SAS SFF-8088 external SAS cables ($100 total) ● 1 x HP StorageWorks D2600 12-bay SAS enclosure (~$600 total) ● 10 x HP 2TB dual-port SAS hard drives ($700 total) ● 1 x SAS SSD for L2ARC ($200) - 2.5" disks will need a 3.5" adapter ● 1 x Stec ZeusRAM SAS DRAM SSD for ZIL/SLOG ($600) https://github.com/ewwhite/zfs-ha/wiki Los servicios que necesitamos en el Datacenter para ser felices. Sistema Operativo / Hypervisor

- Elegir un OS estándar para todo (o casi todo) - Centos/RHEL - Ubuntu LTS

- Hypervisor: - KVM - XEN DNS

- Autoritativo y recursivo para las redes internas. Definir un naming scheme.

- No usar dns públicos.

- Todos los dispositivos de la red con registro directo y reverso.

- Posibilidad de popular servicios con SRV’s.

- Bind o Powerdns, sencillo para deployar en una pequeña VM. Servicio de correo electrónico saliente.

- Los servidores van a mandar emails. - Idealmente rutearlos a una casilla que no sea /dev/null [email protected] - Notificaciones a usuarios - Fallas de cronjobs - Fallas de RAIDS - Misc emails.

- VM con postfix bien configurado: - Dominio valido - Enmascarado - SPF Monitoreo

Nagios / Zabbix : cualquiera es mejor que nada. Ldap

- Para guardar usuarios, claves, ssh-keys y grupos. - Openldap - 389 Directory Server (http://directory.fedoraproject.org/) - SaaS como https://jumpcloud.com/

- Reducir el overhead de administrar usuarios/grupos/permisos. - Permite avanzar en soluciones SSO/SAML para otros servicios Syslog - ELK - SaaS

- Centralizar logs de servidores y dispositivos de red. - Monitoreo de actividad - Auth checks. - Detección de problemas.

- VM con rsyslog. - VM con ELK (Elasticsearch Logstash Kibana) - SaaS: Logz.io Free: 1 GB of data per day, 3-day data retention Git - gitlab github

- Software de control de versiones distribuído. - Todos los archivos de configuración deberían estar versionados.

- VM con Gitlab - Repos privados en: - Github (pagos) - Bitbucket (free) Documentación del datacenter

Ralph. http://ralph.allegro.tech/

- keep track of assets purchases and their life cycle - flexible flow system for assets life cycle - data center and back office support - dc visualization built-in Gestión de la configuración.

- Puppet / / SaltStack - administrar la configuración de sistemas de forma declarativa. - Se describen los recursos y estados del sistema en un lenguaje declarativo. - Esta información es almacenada en archivos denominados manifiestos/playbooks/etc. - Tools: - Puppet - Chef - Salt - Ansible Entonces:

Necesito encontrar un producto que me permita:

- Administrar servidores - Administrar configuraciones de servidores - Delegar accesos - Que me permita escalar - Y que encaje en la escala de un par de racks. - Que encaje con el modelo distribuido de 1 rack por aquí y otros racks por allí. - Que encaje en el modelo de nube híbrida, pública-privada. Las herramientas que no encajaron OpenCrawbar / Cobbler

- http://cobbler.github.io/ - http://opencrowbar.github.io/ - Centradas en el bare metal. - IMO de propósito particular - Sin todos los features de autoprovisioning necesarios. oVirt

- http://www.ovirt.org/ - Altamente acoplado a un storage. - Dificultad para conectarlo a la gestión de configuraciones. - WebUI pesada para usar over internet. OpenStack / CloudStack

- Barrera de entrada muy alta. - Curva de aprendizaje alta y larga en el tiempo. - Sería válido para casos de decenas servers físicos. Archipel

- Liviano - XMPP - Solo despliega VM’s, sin conectividad A la gestión de configuraciones. - Sería válido si solo tuviera que levantar vm’s y entregarlas a los usuarios. La solución que mejor encajó

Foreman

Foreman is a complete lifecycle management tool for physical and virtual servers. Foreman Foreman

- Open Source Project - Homepage: http://theforeman.org - Initial release: 10 September 2009 - Written in Ruby and Javascript - Lifecycle management for servers - Provisioning - Configuration - Orchestration - Monitoring - Web based GUI - Utilizes other tools via smart proxy Foreman

Web Interface + API + CLI Supported platforms: Server: RHEL/Fedora, /Ubuntu, (Linux) DB: PostgreSQL, MySQL, SQLite Provisioning:

- RHEL/Fedora, Debian/Ubuntu, Solaris, SuSE, CoreOS, FreeBSD, Juniper Junos, Cisco NX-OS, (Windows, MacOS) - Usermanagement: - Users and Groups - Internal / LDAP / Kerberos (via Apache Authentication) - Fine role based privileges Arquitectura Smart Proxy

- Autonomous web-based component - Restful API to connect to various systems from Foreman - Decentralisation of some Foreman features (templates) for isolated networks

- Supported Platforms: RHEL/Fedora, Debian/Ubuntu, (Linux, Windows) - Supported Subsystems: - DHCP - ISC DHCP, MS DHCP Servers, Libvirt - DNS - Bind, PowerDNS, Route53, MS DNS Server, Libvirt - BMC - IPMI - Puppet & Puppet CA / Salt / Chef - Realm - FreeIPA - TFTP Smart Proxy - TFTP

- Used to provide boot-images for PXE boot - Downloads the required files with wget - Creates and deletes PXE configuration based on MAC address - Automatically configured during installation Smart Proxy - Puppet / Puppet CA

- Puppet: - connects to Puppets API - allows to import puppet environments and classes - optionally triggers immediate Puppet runs - accepts facts and reports - uses Foreman as ENC - Puppet CA: - requires access to ssl directory, autosign configuration and puppet cert command - allows certificate management using the Web GUI - creates autosign entry for hosts during provisioning Compute Resource

- Plugin to create and manage virtual hosts - based on fog (ruby cloud service library) - Depending on virtualization provider - Unattended / Image-based installation - Console access - Power management - Changing virtual machine configuration - Compute Profiles - predefined template for virtual hardware Provisioning

Provision new machines or containers to (almost) anything

- Bare metal - oVirt, - libvirt, - VMware, - Docker, - Cloud providers: EC2, Rackspace, Digital Ocean, OpenStack, etc. If we don't support it today, we can via new plugins Provisioning types

- PXE - via PXELinux and kickstart, preseed, AutoYAST, etc - Image-based - cloning, configured over SSH or user data (cloudinit) For virtualization provider, we create the VM For everything we orchestrate related services through Smart Proxies - DNS - DHCP / TFTP - Configuration Management

Configuration

- Puppet - Via plugins: - Ansible - Chef - Saltstack - Catalogo de manifests. - Uno asigna roles on demand. - Cada 30’ puppet se ejecuta y envia un reporte que se visualiza en el dashboard. Distributed Architecture

- Smart Proxies located locally on Foreman itself or independent – (orchestration) - Large organizations and/or multi-tenancy: - Organizations (Divisions) - Locations - Strong RBAC model - Users / Groups - Permissions / Filters - LDAP / MS-AD integration Demo o Screenshots

¿Preguntas? Gracias! #sysarmy (freenode) @sysarmy meetup.com/sysarmy