# data[].attributes.body
Beneficios de usar Terraform.

Realiza orquestación, no solo gestión de configuración

Admite múltiples proveedores como AWS, Azure, GCP, Digital Ocean y muchos más

Proporcionar una infraestructura inmutable donde la configuración cambia sin problemas

Utiliza un lenguaje fácil de entender, HCL (lenguaje de configuración de HashiCorp)

Fácilmente portátil a cualquier otro proveedor

Admite arquitectura de solo cliente, por lo que no es necesario administrar la configuración adicional en un servidor

# data[].attributes.body
Terraform es una infraestructura de código abierto como herramienta de código desarrollada por HashiCorp. Se utiliza para definir y aprovisionar la infraestructura completa utilizando un lenguaje declarativo fácil de aprender.

Es una herramienta de aprovisionamiento de infraestructura donde puede almacenar la configuración de su infraestructura en la nube como códigos. Es muy similar a herramientas como Formación de nubes, que usaría para automatizar su infraestructura de AWS, pero solo puede usarla en AWS. Con Terraform, puede usarlo en otros plataformas en la nube también.

# data[].attributes.body
AWS CloudFormation es la solución nativa de AWS para aprovisionar recursos en esta nube. En este caso se pueden definir templates en formato JSON o YAML. Se pueden utilizar para crear, actualizar y eliminar recursos las veces que sea necesario. Una ventaja de CloudFormation es que, al ser un servicio propio de Amazon, tiene una integración completa con los demás servicios de AWS, por lo que es nuestra mejor opción si solo utilizamos este proveedor de nube.

# data[].attributes.body
Ansible es un software muy fácil de instalar, para ello, solo se necesita un Ansible Controller ejecutando un sistema operativo basado en UNIX. También se pueden administrar equipos Windows, pero el Controller debe ser Linux/UNIX.
Para instalarlo en Windows, se debe ejecutar un subsystem de Linux, aunque no se suele recomendar. Otra opción para instalarlo y ejecutarlo es hacerlo a través de un contenedor Docker.

# data[].attributes.body
Además de saber qué es Ansible, es necesario que se conozcan una serie de términos y sus usos:

Inventarios

Ansible trabaja, generalmente, ejecutando tareas contra distintos equipos remotos, dispositivos de red o APIs. Los inventarios, que pueden fijarse en formato Ansible INI, JSON o YAML, permiten definir dichos equipos, agruparlos y especificar valores grupales o individuales de estos.

Vienen definidos, por defecto, en /etc/ansible/hosts, pero también se puede establecer una ruta personalizada con -i <path>. Además, se puede predefinir la ruta en un archivo de configuración de Ansible: ansible.cfg.

Ad-Hoc Commands

Un comando Ad-Hoc usa la herramienta de línea de comandos /usr/bin/ ansible para mecanizar una única tarea en uno o más nodos administrados. Estos comandos son rápidos y fáciles, pero no reutilizables. A pesar de ello, son los primeros en ser aprendidos porque demuestran la simplicidad y el poder de Ansible; ya que los conceptos que se aprendan se pasarán directamente al lenguaje de un playbook.

# data[].attributes.body
Playbooks
Estos son el lenguaje de configuración, implementación y orquestación de Ansible. Pueden describir la configuración que se desea que apliquen los equipos gestionados, o un conjuntos de fases en un proceso general de automatización.

En un nivel primario, los playbooks se pueden utilizar para guiar configuraciones e implementaciones en equipos remotos.

Módulos

Se llaman también task plugins o library plugins, y son unidades discretas de código que se pueden usar desde la línea de comandos o en una tarea de Playbook. Estos módulos son desarrollados en PowerShell para Windows y en Python para Linux.

Variables

Es posible que algunos sistemas necesiten una configuración distinta a otros. En ciertos casos, el estado de un sistema o comportamiento observado, puede influir en la manera que se configuran otros sistemas. Es por ello que Ansible utiliza variables, para ayudar a lidiar con desigualdades entre sistemas.

Condicionales

A menudo, el resultado de un playbook puede depender del valor de una variable, un fact o el resultado de una tarea previa. En algunos casos, los valores de las variables pueden depender de otras y se pueden crear grupos adicionales para administrar hosts en función de si estos coinciden con otros criterios.

Bucles

En ocasiones, se quiere repetir una tarea varias veces, para ello, los bucles de Ansible incluyen el cambio de propiedades en varios archivos y/o directorios con módulos (módulo file), la creación de múltiples usuarios (módulo de user) y la repetición de un paso de sondeo hasta que se alcance un cierto resultado.

Loop y with_ <lookup> son dos palabras que ofrece Ansible para poder crear bucles.

Roles

Son formas de cargar automáticamente una estructura de archivos/directorios, archivos no variables, tareas y controladores basados en una estructura de archivos conocida. Agrupar por roles permite compartir fácilmente estos con otros usuarios para así poder reutilizar códigos.

Los roles esperan que los archivos estén en ciertos directorios y deben incluir al menos uno de estos, aunque se puede eliminar cualquiera que no esté siendo utilizado.

Ansible Galaxy

Incluido en Ansible, es un sitio gratuito para buscar, descargar, calificar y revisar todo tipo de roles de Ansible desarrollados por la comunidad y puede que sea la forma perfecta para impulsar los proyectos de automatización.

Si además de saber que es Ansible, quieres llevar todos estos conocimientos al código, aquí te dejamos la práctica que hemos hecho en el webinar para descubrir el potencial de esta herramienta.

# data[].attributes.body
Ventajas de usar CloudFormation
Reducir el tiempo de reparación de entornos. Incrementar la confianza en los despliegues. Replicar entornos complejos, por ejemplo, tener entornos complejos para desarrollo, preproducción y producción, que sean iguales, o prácticamente iguales, simplemente escalando los recursos.

# data[].attributes.body
Google Cloud Deployment Manager es la herramienta IaC para la plataforma Google Cloud —lo mismo que CloudFormation es para AWS—. Con esta herramienta los usuarios de Google pueden administrar fácilmente mediante archivos de configuración YAML.

# data[].attributes.body
ARM es la herramienta nativa en Azure para implementar infraestructura como código, Azure Resource Manager (ARM Templates). Estas plantillas llevan una sintaxis declarativa en formato JSON, que nos permiten definir los recursos y las propiedades que conforman la infraestructura.

# data[].attributes.body
Google Cloud (Nube de Google) es una plataforma que ha reunido todas las aplicaciones de desarrollo web que Google estaba ofreciendo por separado. Es utilizada para crear ciertos tipos de soluciones a través de la tecnología almacenada en la nube y permite por ejemplo destacar la rapidez y la escalabilidad de su infraestructura en las aplicaciones del buscador. ¹​

Google Cloud se refiere al espacio virtual a través del cual se puede realizar una serie de tareas que antes requerían de hardware o software y que ahora utilizan la nube de Google como única forma de acceso, almacenamiento y gestión de datos.

Google ofrece una variedad de servicios basados en la nube. Google Cloud Print permite imprimir desde la web, el escritorio o dispositivo móvil sin la necesidad de un sistema operativo en particular o controladores. En su lugar, envías el documento a cualquier impresora conectada a la nube. Google también ofrece espacio en la nube para desarrolladores de bases de datos SQL para crear aplicaciones, así como para los usuarios de Microsoft Office que deseen editar colaborativamente documentos de Word, PowerPoint y Excel, sin necesidad de la utilización de un cliente local.²​

# data[].attributes.body
Ventajas de usar GPC

Virtualización.

Infraestructuras de red.

Almacenamiento en la nube.

Seguridad de la información.

Gestión de datos con BigQuery.

Precio de los servicios.

# data[].attributes.body
Azure Resource Manager es el servicio de implementación y administración para Azure. Proporciona una capa de administración que le permite crear, actualizar y eliminar recursos de la cuenta de Azure. Se usan las características de administración, como el control de acceso, la auditoría y las etiquetas, para proteger y organizar los recursos después de la implementación.

Para obtener más información sobre las plantillas de Azure Resource Manager (plantillas de ARM), consulte Información general sobre las plantillas de ARM. Para obtener más información sobre Bicep, consulte Introducción a Bicep.

# data[].attributes.body
Cuando un usuario envía una solicitud de cualquiera de las herramientas, las API o los SDK de Azure, Resource Manager recibe la solicitud. Autentica y autoriza la solicitud. Resource Manager envía la solicitud al servicio de Azure, que lleva a cabo la acción solicitada. Dado que todas las solicitudes se controlan mediante la misma API, verá resultados y funcionalidades coherentes en todas las distintas herramientas.