Existen dos tipos de herramientas para esto, las centradas en definir la infraestructura y las encargadas de configurar el servidor ya montado.
Dentro de las herramientas para definir infraestructura existen:
Terraform
Cloud Formation: Únicamente para AWS
Open Stack Heat: Únicamente para Open Stack
Estas herramientas especifican que elementos y recursos vamos a crear y cómo deben configurarse.
Permite especificar qué recursos de infraestructura desean crear y cómo deben configurarse.
Lo más básico de la infraestructura, máquinas virtuales,interfaces de red, discos duros, plataforma como servicio.
Los archivos de definición de configuraciones escribimos la infraestructura que necesitamos crear.
Todas las herramientas tienen su propio archivo de definición en su propio formato útiles para el formato de automatización
Ansible, Chef y Puppet son herramientas para configuración de servidores que nos permiten darle el estado deseado a nuestra infraestructura.
Instalar ciertos paquetes o dependencias, directorios, permisos, todo lo que va en la capa de plataforma-
Aprovisionamiento
Es el proceso que permite que un elemento esté listo para usar
Tener todas las dependencias de una aplicación ya lista, únicamente para el despliegue de la aplicación.
Diferentes enfoques para la gestión de servidores
Configuración de servidores: Nos permite manejar las configuraciones de los servidores desde un archivo de definición
Empaquetar plantillas de servidores: En máquinas virtuales, es una herramienta que nos permite tomar un snapshot de estas mv para generar plantillas
Ejecutar comandos en los servidores: Herramientas que nos permiten esto
Configuración desde un registro central: Tener las configuraciones centralizadas y las máquinas se conectan y así obtienen sus configuraciones.
Al momento de elegir una herramienta debemos tomar en cuenta:
Modo desatendido para herramientas de líneas de comandos: Que puedo ejecutar un comando sin que me pida confirmación humana, es importante que la herramienta nos permite esto, para poder automatizar.
Idempotencia: Cuando ejecutamos un script podamos ejecutar n veces sin problema. Que lo ejecutamos, la crea y es success, y lo volvemos a ejecutar, ya no debería hacer nada pero también debería hacer success.
Parametrizable: Para que podamos reutilizar las definiciones que creamos
Objetivos de la gestión automatizada de servidores
Un servidor puede ser aprovisionado a demanda: Un nuevo servidor pueda ser aprovisionado bajo demanda cuando sea necesario
Un nuevo servidor puede ser aprovisionado sin intervención humana
Cada cambio puede ser aplicado a un conjunto de servidores
Cuando implementamos una app necesitamos cierta capa de infraestructura , dependencias y la aplicación
En primer lugar, tenemos la capa de infraestructura es la capa más básica
Luego tenemos la capa de configuraciones o dependencias
por último, tenemos la capa de aplicación y datos.
El concepto de infraestructuras como código nos permite manejar dependencias e infraestructura como código. Vamos a ver los beneficios de algunas prácticas y principios de utilizar infraestructura como cobijo.
Uno de los principios de la infraestructura Como código dice que tenemos que utilizar
archivos de configuración.
Tener archivos de configuración nos permite tener estos archivos versionados. Tenemos un archivo definición, tenemos los archivos versionados. Estos dos nos permite tener trazabilidad de los cambios que tenemos a través del control de versiones
Nos permite integrarlo con un server de CI para automatizar el despliegue de infraestructura
Un archivo de definición nos permite Generar insfra de forma repetible, puedo generar n cantidad de servidores
Podemos desplegar infra repetible, con un mismo archivo desplegar la infra que yo necesite,
Que sea parametrizable para con el mismo archivo poder , mandar parametros, poder generar diferentes tipos de infraestructura
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?