DevOps y SysAdmins a mi ! Automatización de despliegues/recursos IT!

RubaPowa

Amigos sysadmins y devopers , me gustaría saber de que manera automatizáis los procesos y despliegues , si es que lo haceis/conoceis , como por ejemplo el despliegue de VMs

Actualmente trabajo en una cloud privada, tenemos un portal web de provisiones , similar a lo que la mayoria conocemos de Azure o AWS donde los usuarios/servicios pueden solicitar la creación/modificación/borrado de cualquier tipo de recurso IT, desde VMs , volumenes nfs , gestion de roles , balanceos , reglas de firewall interno/externo, cualquier cosa... se genera un json y junto a una cantidad ingente de horas creando jobs en jenkins hemos conseguido tener una provision totalmente automatizada sin que tengamos que invertir una sola hora desplegando manualmente, siempre que salga bien claro.

Básicamente cualquier provisión es una cadena bastante grande de jobs encadenados en jenkins que realizan X funcion o transformación de datos y una vez completado pasa el testigo al siguiente, para que os hagáis una idea el despliegue de una vm tiene unos 30 pasos , desde la reserva de IP , despliegue de un template en vmware, hasta la configuracion del backup o configuracion de los interfaces que hayan elegido dentro del sistema.

Claro el problemita/pega que tenemos actualmente es que de la manera que esta diseñado jenkins , que realmente no es para esto , en el momento que nos falla uno de los fallos el proceso se nos va al carajo toda la cadena, es decir no tenemos forma de "solucionar" lo que este fallando y reanudar la automatización .

Utilizáis o conocéis algo parecido en vuestro trabajo? O alguna comunidad donde se traten esto temas? No conozco a nadie de mi entorno que tenga esta necesidad o bien tienen recursos dedicados al despliegue manual de lo que piden sus usuarios...

GaN2

Vaya por delante que soy SysAdmin y no me dedico a la rama del DevOps al 100%, hago mis scripts y automatizo procesos pero no me dedico a construir los pipes para temas de CD/CI y demas. Nosotros usamos una combinacion de Ansible + Terraform + Puppet para crear VMs en Azure y vSphere hasta donde se. Para la parte Cloud todo se hace a traves de un portal web donde el usuario mete los datos de lo que va a desplegar (para que se va a usar la instancia, sizing, grupo propietario, etc) que hace que al final se lance el playbook en Ansible Tower que luego llama a Terraform y al resto del codigo, desplegando el recurso en Azure con json como dices. Tenemos exactamente el mismo problema, si falla un paso tienes que volver a empezar y por eso hay ciertos elementos que tienen que estar creados previamente antes de poder comenzar con el formulario de despliegue (como los resource groups o los usuarios a nivel de dominio que usaremos en Linux).

Con Ansible puedes meter error handling y condiciones en el playbook incluso puedes reanudar la el playbook en una tarea en particular (http://docs.ansible.com/playbooks_startnstep.html)

ansible-playbook playbook.yml --start-at-task="install packages"

En la parte OnPrem creo que hacen lo mismo aunque nosotros no tenemos visibilidad al portal que usan los equipos para crear maquinas OnPrem en vSphere. Luego el tema de puppet, se usa tanto en OnPrem como Cloud para configurar la VM siguiendo ciertos estandares que afectan al tipo de VM (para que se va a usar) o a todas las maquinas de un pais, region, etc. Por ejemplo, el /etc/fstab se mantiene con Puppet para todas las maquinas de un tipo que requieran los mismos compartidos y nadie puede tocar mano porque Puppet 'resetea' los ajustes a lo que tiene configurado su rol.

En general todo o casi todo lo que estamos construyendo a nivel de DevOps y automatizacion va sobre Ansible Tower o en su defecto algun otro tipo de herramienta que llama a la torre para que se ejecute. Por ejemplo, cuando entre a trabajar aqui mi equipo parcheaba RHEL/SLES a mano (paramos aplicacion/BBDD, le pasamos la pelota al equipo de Linux, parchean, levantamos aplicacion/BBDD, etc), smoke testing, etc. lo cual era una mierda. Ahora se hace practicamente todo con una herramienta propietaria del software que mi equipo administra (SAP) que acaba por llamar a Ansible Tower y parchear las maquinas de manera masiva, ya no necesitamos a nadie salvo que haya algun problema. Estamos hablando que parcheamos casi 900 host con aplicaciones de su padre y de su madre cada 4 meses, segun terminamos con el ciclo de parcheo estamos comenzando con otro ciclo asi que los dichosos playbook nos han ahorrado bastante tiempo. En el futuro la idea es hacer lo mismo con todo lo que podamos siempore teniendo en cuenta que SAP apesta a la hora de aplicar DevOps...

Como comunidades te diria que pruebes con DevOps en Reddit, hay una comunidad bastante grande y suelen postear cosas interesantes.

1
DiSKuN

Así muy resumido y desde el móvil: Terraform + Salt Stack, y si hablamos de clústers de kubernetes: Terraform + SaltStack + Helm

Terraform es muy buena herramienta para gestionar infra pero claro, si soporta el proveedor de infra que utilizas.
Salt Stack es un gestor de configuració como Ansibld , chef o puppet para dejar las máquinas configuradas
Helm és una herramienta para hacer deploys y administrar pods en un clúster de kubertenes

Y si, también usamos jenkins (lo odio), pero pinta a que en brrves cambiaremos a github actions.

Y si peta el proceso, estamos en las mismas. Revisar que ha pasado y relanzar, aunque con Terraform los errores de creación de infra se reducen bastante

Usuarios habituales

  • DiSKuN
  • GaN2
  • RubaPowa