Es un método de aprovisionamiento y gestión de infraestructura IT y servicios a través del uso de código fuente, sustituyendo el procedimiento estándar de operación. Básicamente consiste en tratar los elementos de la infraestructura como si fuesen software.
Permite a las instancias gestionarse de manera programada, consiguiendo una infraestructura escalable y replicable y facilita que las definiciones de la infraestructura puedan estar en un sistema de control de versiones. Adicionalmente, facilita una construcción de la infraestructura más consistente y de mayor calidad, teniendo mejores capacidades de administración. Es la base de DevOps, combina pruebas automatizadas, validación e implementación, maximizando la eficiencia y evitando el error humano.
Como contra se puede indicar que un modelo de IaC implica cambios importantes puesto que resulta imposible realizar esta transición sin tener una comprensión profunda de los conceptos de arquitectura en la nube y conocimientos en lenguajes de programación, así como de manejo de las API.
Las dos partes fundamentales de la Infraestructura como código son aprovisionamiento y configuración. En ellas se definen el contenido de los servidores, qué configuración deben tener, qué aplicaciones deben ser instaladas, cómo deben ser instaladas,…
Ansible modela la infraestructura al describir cómo se relacionan todos los sistemas, en lugar de administrar un solo sistema a la vez.
Ansible utiliza YAML, en forma de Ansible Playbooks.
Algunas de las características son:
Los elementos que componen Ansible son:
[dbservers]
postgresqldb01.qa.mydomain.net
[api]
api01.qa.mydomain.net
[webapp]
app01.qa.mydomain
app02.qa.mydomain
[proxyservers]
proxy01.qa.domain
proxy02.qa.domain
---
# Play 1
- host: dbservers
task:
- name: Install PostgreSQL
package:
name: {{ item }}
state: present
with_items:
- postgresql
- postgresql-contrib
- libpq - dev
- name: Verificar que el servicio de PostgreSQL este corriendo
service:
name: postgresql
state: started
enbaled: yes
Este playbook de ejemplo instala la base de datos Postgresql en los Host correspondientes.
Es una solución de gestión de la configuración para administrar la infraestructura en máquinas físicas o virtuales, pudiendo reproducir las configuraciones tantas veces como sean necesarias. Estas configuraciones para todo el software y servidores se almacenan de manera centralizada.
Como características principales destacan:
Permite describir y gestionar la infraestructura en forma de código. Está pensado para conocer mediante código nuestra infraestructura y poder recrearla, reconfigurarla o replicarla. Chef configura y despliega aplicaciones y configuraciones, orquestando la configuración de ambientes compuestos por más de un nodo.
Es una herramienta escrita en Ruby que automatiza el procedimiento de aprovisionamiento. Trabaja con un modelo Maestro – Cliente en el que se requiere un equipo independiente desde el que controlar el nodo maestro.
Se integra perfectamente con plataformas en nube (Amazon, GoogleCloud, Azure, OpenStack)
No es agent-less. Requiere de la instalación de un agente en cada nodo gestionado. Los agentes pueden ser instalados desde el cliente usando knife que usa SSH para desplegar. Una vez hecho eso, todos los nodos gestionados se comunican con el servidor principal a través del uso de certificados y reciben el despliegue.
Es una plataforma de infraestructura como código para automatizar y estandarizar la creación de máquinas virtuales en vario formatos.
Se configurará en un plantilla con formato JSON las características de la VM, como por ejemplo:
El proceso básico parar Packer incluye tomar una plantilla antigua o una imagen de máquina, aplicarle nuevos parches o software y crear una plantilla o AMI a partir de los resultados de esas dos acciones:
Los ficheros JSON se dividen en tres secciones:
Es un software de código libre que permite a partir de un lenguaje de alto nivel crear el plan de construcción de una infraestructura compleja. Permite a través de ficheros JSON definir, configurar y versionar infraestructura. La infraestructura se puede codificar atendiendo a las necesidades de nuestro servicio y ofrece un amplio abanico de proveedores donde desembarcar nuestra infraestructura.
Los archivos de configuración (.tf) describen en Terraform los componentes necesarios para ejecutar una sola aplicación o el centro de datos completo. Terraform genera un plan de ejecución que describe lo que hará para alcanzar el estado deseado y luego ejecuta para construir la infraestructura descrita.
Una vez codificada la infraestructura con el comando terraform apply se realizará el despliegue de la misma.
Estos servicios y productos complementan a otros servicios de implantación y administración como puede ser el Administrador de Recursos de Azure (ARM) que veremos en el próximo artículo.