Gestión de Servicios Cloud PDF
Document Details
Uploaded by Deleted User
Universidad de Murcia
2024
Tags
Summary
Este documento presenta un resumen de los temas abordados en el curso 2024/2025 sobre Gestión de Servicios Cloud e infraestructura para computación de altas prestaciones. Se incluyen detalles sobre las etapas de Operar con la infraestructura, Automatización y orquestación en la nube, herramientas de aprovisionamiento y diferencias en las herramientas de automatización. Además se explora la orquestación en la nube y cómo combinarla con aprovisionamiento y gestión de configuración.
Full Transcript
Tema 2.2 Gestión de Servicios Cloud Infraestructura para la Computación de Altas Prestaciones Curso 2024/2025 Tema 3: Virtualización y Contenedores 1 Índice Índice 1. Operar con la infraestructura 1.1 Cloud APIs para computación 1.2...
Tema 2.2 Gestión de Servicios Cloud Infraestructura para la Computación de Altas Prestaciones Curso 2024/2025 Tema 3: Virtualización y Contenedores 1 Índice Índice 1. Operar con la infraestructura 1.1 Cloud APIs para computación 1.2 EC2 Amazon 2. Automatización y orquestación en la nube 2.1 Automatización de la configuración 2.2 Chef 2.3 Ansible 2.4 Automatización del aprovisionamiento 2.5 Herramientas de aprovisionamiento 2.6 AWS CloudFormation 2.7 Terraform 2.8 Diferencias en herramientas de automatización 2.9 Orquestación en la nube Tema 3: Virtualización y Contenedores 2 Operar con la infraestructura Vías para operar con la infraestructura Panel de Control (dashboard o consola) Interfaz web que facilita toda la información y guía las operaciones sobre la infraestructura Evita el conocimiento concreto de comandos o funciones para operar, pero no evita conocer la lógica operacional Línea de comandos (CLI) Operar mediante herramientas que se ejecutan en la línea de comandos del sistema operativo Estas herramientas se comunican con cada módulo/componente de la infraestructura Operar con IaaS Dashboard CLI SDK API Tema 3: Virtualización y Contenedores 3 Operar con la infraestructura Vías para operar con la infraestructura Kit de desarrollo (SDK) Operar mediante software usando SDKs mantenido y creados por los proveedores de la infraestructura Los SDKs pueden proporcionarse para diferentes lenguajes (Python, Java, Javascript, etc.) Servicios web RESTFul Operar mediante llamadas a una API HTTP bien definida Cada módulo/componente ofrece una API Posibilidad de crear programas remotos para operar Operar con IaaS Dashboard CLI SDK API Tema 3: Virtualización y Contenedores 4 Operar con la infraestructura REST (REpresentational State Transfer) REST es un tipo de arquitectura de desarrollo web que se apoya totalmente en el estándar HTTP Hablamos de servicios web restful si cumplen la arquitectura REST La base de REST son los Recursos, accesibles por identificadores (URIs) Tema 3: Virtualización y Contenedores 5 Operar con la infraestructura REST (REpresentational State Transfer) Servicio REST no tiene estado (stateless): entre dos llamadas cualesquiera, el servicio pierde todos sus datos Si quiero que un servicio REST recuerde un estado, debo pasarle la información en cada llamada HTTP methods tienen el siguiente uso en REST: HTTP CRUD Description Method Operation POST CREATE Create a new resource GET READ Get a specific resourse or search for resources PUT UPDATE Update an existing resource DELETE DELETE Delete an existing resource Tema 3: Virtualización y Contenedores 6 Operar con la infraestructura REST (REpresentational State Transfer) Ejemplo de llamadas REST GET http://www.somewebsite.com/api/v3/client/1/name { name: “Walter White” } Tema 3: Virtualización y Contenedores 7 Cloud APIs para computación Problema: demasiados interfaces cloud Cada proveedor proporciona su interfaz Una cloud híbrida necesita un único interfaz Existe la necesidad de un interfaz estándar y abierto OCCI: Open Cloud Computing Interface Conjunto de especificaciones por Open Grid Forum (OGF) Protocolo y API RESTful El foco es IaaS pero es extensible para PaaS y SaaS Sus objetivos: Interoperabilidad entre proveedores Portabilidad entre proveedores Integración de diferentes infraestructuras Extensibilidad con nuevas características Define OCCI Core, OCCI HTTP renderings, y OCCI Infraestructure Tema 3: Virtualización y Contenedores 8 Cloud APIs para computación OCCI: Open Cloud Computing Interface Es el servicio “front-end” del proveedor cloud. Define una API Rest para interactuar El cliente OCCI puede conectarse a la implementación OCCI y, en tiempo de ejecución, descubrir y entender los tipos de recursos disponibles Existen implementaciones para OpenStack y OpenNebula Tema 3: Virtualización y Contenedores 9 Cloud APIs para computación OCCI instancias y tipos: La instanciación (cloud provision) se realiza sobre un modelo bien definido de entidades (Entity) Cada entidad es de un tipo (Kind) Cada tipo es definido por atributos (Attribute) Los tipos son organizados en una jerarquía (sub-kind) Sobre las entidades se asocian acciones (Action) según su tipo Las instancias de las entidades pueden tener capacidades adicionales (Mixin) Las dos principales entidades son: Resource y Link Tema 3: Virtualización y Contenedores 10 Cloud APIs para computación OCCI instancias y tipos: Resources: Compute, Network y Storage Links: Network y Storage Tema 3: Virtualización y Contenedores 11 Cloud APIs para computación Ejemplo de instancia de un Compute en JSON: { ”kind”:”http://schemas.ogf.org/occi/infrastructure#compute”, ”attributes”:{ ”occi.compute.speed”:2, ”occi.compute.memory”:4, ”occi.compute.cores”:2, }, ”actions”:[ ”http://schemas.ogf.org/occi/infrastructure/compute/action#start” ], ”id”:”urn:uuid:996ad860−2a9a−504f−8861−aeafd0b2ae29”, ”links”:[ { ”kind”:”http://schemas.ogf.org/occi/infrastructure#networkinterface”, ”attributes”:{ ”occi.infrastructure.networkinterface.interface”:”eth0”, ”occi.infrastructure.networkinterface.address”:”192.168.0.100”, ”occi.infrastructure.networkinterface.gateway”:”192.168.0.1” }, ”actions”:[ ”http://schemas.ogf.org/occi/infrastructure/networkinterface/action#up”, ”http://schemas.ogf.org/occi/infrastructure/networkinterface/action#down” ], ”id”:”urn:uuid:22fe83ae−a20f−54fc−b436−cec85c94c5e8” } ] } Tema 3: Virtualización y Contenedores 12 Cloud APIs para computación OCCI API: Las operaciones REST son usadas para manipular las entidades Ejemplo de instanciación de una máquina virtual: > POST /compute HTTP/1.1 > Host: mycloud.com > Content-type: text/occi > Category: compute; scheme="http://schemas.ogf.org/occi/infrastructure" > X-OCCI-Attribute: occi.compute.cores=2 > Link: ; rel="http://schemas.ogf.org/occi/infrastructure#network"; category="http://schemas.ogf.org/occi/infrastructure#networkinterface"; occi.networkinterface.interface="eth0"; occi.networkinterface.mac="00:11:22:33:44:55" > < HTTP/1.1 201 OK < Content-Type: text/plain; charset=UTF-8 < Location: http://mycloud.com/vms/vm1 < Tema 3: Virtualización y Contenedores 13 Cloud APIs para computación OCCI API: Sobre las instancias se les puede aplicar acciones Ejemplo de acciones sobre una máquina virtual > POST /vms/vm1 HTTP/1.1 > Host: mycloud.com > Content-type: text/occi > Category: stop; scheme="http://schemas.ogf.org/occi/infrastructure/compute/action" > X-OCCI-Attribute: method=“poweroff” > < HTTP/1.1 201 OK < Tema 3: Virtualización y Contenedores 14 Cloud APIs para computación EC2 Amazon: Elastic Compute Cloud Solución de Amazon para la instanciación de máquinas virtuales Pasos para lanzar una instancia Step 1: Elige una Amazon Machine Image (AMI) Step 2: Elige un tipo de instancia Step 3: Configura los detalles de la instancia Step 4: Añade almacenamiento Step 5: Añade etiquetas Step 6: Configura grupo de seguridad Step 7: Selecciona key-pair y revisa el lanzamiento Tema 3: Virtualización y Contenedores 15 Cloud APIs para computación EC2 Amazon: Elastic Compute Cloud Una Amazon Machine Image (AMI) contiene la configuración software (sistema operativo, sistema de ficheros y aplicaciones) que puede instanciarse con Amazon AMIs disponibles en Amazon de todo tipo de sistemas operativos: Amazon Linux Windows Server CentOS 6.5 Debian 7.4 Tema 3: Virtualización y Contenedores 16 Cloud APIs para computación EC2 Amazon: Elastic Compute Cloud EC2 proporciona un conjunto de tipos de instancia (flavors) Determina el hardware usado por la instancia Capacidades de cómputo, memoria y almacenamiento El tipo de instancia requerido depende de las necesidades de la aplicación a ejecutar en la instancia Familias de instancias De propósito general Optimizadas para cómputo Optimizadas para almacenamiento Optimizadas para memoria Optimizadas para computación acelerada https://aws.amazon.com/es/ec2/instance-types/ Tema 3: Virtualización y Contenedores 17 Cloud APIs para computación EC2 Amazon: Elastic Compute Cloud Interacción con EC2 Amazon puede realizarse por CLI: https://docs.aws.amazon.com/cli/latest/userguide/cli-services-ec2.html EC2 Console: https://docs.aws.amazon.com/quickstarts/latest/vmlaunch/welcome.html SDK: https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html API HTTP: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Welcome.html Ejemplo CLI, lanza 5 instancias de c6g.medium: $ aws ec2 run-instances \ Command --image-id ami-c229c0a2 AMI identifier --instance-type c6g.medium Flavor --count 5 Instances count --security-group-ids sg-9d5c2dfa Security group --subnet-id subnet-608ebb14 Network conf --key-name ec2-masterclass Access key-pair Tema 3: Virtualización y Contenedores 18 Cloud APIs para computación EC2 Amazon: Elastic Compute Cloud Uso de la consola para lanzar una instancia Paso 1. Elegir AMI Paso 2. Elegir tipo de instancia Siguientes pasos. Configurar instancia, añadir disco, configurar grupo de seguridad y claves de seguridad Tema 3: Virtualización y Contenedores 19 Cloud APIs para computación EC2 Amazon: Elastic Compute Cloud Uso de Boto3 para instanciar en EC2 (Python): import boto3 response = boto3.client.run_instances( Command ImageId='ami-abc12345', AMI identifier InstanceType='t2.micro', Flavor KeyName='my-key-pair', Access key-pair MaxCount=1, Instances count MinCount=1, SecurityGroupIds=['sg-1a2b3c4d'], Security group SubnetId='subnet-6e7f829e’) Network conf Tema 3: Virtualización y Contenedores 20 Cloud APIs para computación EC2 Amazon: Elastic Compute Cloud Uso de la API HTTP para instanciar en EC2: https://ec2.amazonaws.com/?Action=RunInstances Command &ImageId=ami-31814f58 AMI identifier &InstanceType=m1.small Flavor &MaxCount=1 Instances count &MinCount=1 &KeyName=my-key-pair Access key-pair &SubnetId=subnet-b2a249da Network conf &AUTHPARAMS Tema 3: Virtualización y Contenedores 21 Cloud APIs para computación EC2 Amazon: Elastic Compute Cloud Lanzamiento de instancias de manera simplificada (1) Lanzar una instancia desde el Marketplace (2) Lanzar una instancia usando los parámetros de otra instancia (3) Usar plantillas de lanzamiento y versiones de estas Ejemplo: plantilla con tres versiones, donde la versión 2 es la usada por defecto para la plantilla. Tema 3: Virtualización y Contenedores 22 Cloud APIs para computación EC2 Amazon: Elastic Compute Cloud Instancias de propósito general: Balance entre capacidad de cómputo, memoria y recursos de red Pensadas para aplicaciones web, microservicios y desarrollo de código Instancias T2, T3, T3a, T4g, entre otras Ejemplo T3: Procesador: 3.1 GHz Intel Xeon Scalable Almacenamiento: EBS (Elastic Block Store) proporciona volúmenes de almacenamiento de bloques persistente Memory Network Instance vCPU Storage (GiB) (Gbps) t3.medium 2 4 EBS-only Up to 5 t3.large 2 8 EBS-only Up to 5 t3.xlarge 4 16 EBS-only Up to 5 t3.2xlarge 8 32 EBS-only Up to 5 Tema 3: Virtualización y Contenedores 23 Cloud APIs para computación EC2 Amazon: Elastic Compute Cloud Instancias optimizadas para cómputo: Centradas en proporcionar gran rendimiento de computación Pensadas para servidores web de alto rendimiento, computación de alto rendimiento (HPC) y servidores de gaming Instancias C4, C5, C5a, C5n, C6a, entre otras Ejemplo: C5 Procesador: 3.6 GHz Intel Xeon Scalable Almacenamiento: EBS (Elastic Block Store) con altas velocidades de acceso a memoria Memory Network Instance vCPU Storage (GiB) (Gbps) c5.large 2 4 EBS-only Up to 10 c5.xlarge 4 8 EBS-only Up to 10 c5.4xlarge 16 32 EBS-only Up to 10 48 núcleos de CPU c5.24xlarge 96 192 EBS-only 25 Tema 3: Virtualización y Contenedores 24 Cloud APIs para computación EC2 Amazon: Elastic Compute Cloud Instancias optimizadas para memoria: Centradas en proporcionar gran rendimiento para bases de datos Pensadas para bases de datos relacionales (MySQL) y NoSQL (MongoDB, Cassandra) y aplicaciones que trabajen con volúmenes de datos masivos (Big Data) Instancias R5, R5a, R5b, R5n, R6a, entre otras Ejemplo: R5 Procesador: 3.1 GHz Intel Xeon Platinum Almacenamiento: EBS (Elastic Block Store) con altas velocidades de acceso a memoria Memory Network Instance vCPU Storage (GiB) (Gbps) r5.large 2 16 EBS-only Up to 10 r5.xlarge 4 32 EBS-only Up to 10 r5.4xlarge 16 128 EBS-only Up to 10 r5.24xlarge 96 768 EBS-only 25 Tema 3: Virtualización y Contenedores 25 Cloud APIs para computación EC2 Amazon: Elastic Compute Cloud Instancias optimizadas para computación acelerada: Incluyen aceleradores hardware como Graphics Processing Units (GPUs) y Field Programmable Gate Arrays (FPGAs) Diseñadas para procesamiento paralelo, visualizaciones 3D, procesamiento intensivo de gráficos y vídeo Instancias G2, G3, P2, P3, P4, entre otras Ejemplo: G3 Procesador: 2.7 GHz Intel Xeon GPU NVIDIA Tesla M60 Memory GPU Mem Network Instance GPUs vCPU (GiB) (GiB) (Gbps) g3.xlarge 1 4 30.5 8 Up to 10 g3.4xlarge 1 16 122 8 Up to 10 g3.8xlarge 2 32 244 16 10 d3.16xlarge 4 64 488 32 25 Tema 3: Virtualización y Contenedores 26 Cloud APIs para computación EC2 Amazon: Elastic Compute Cloud Instancias optimizadas para almacenamiento: Centradas en proporcionar gran rendimiento para acceso rápido y secuencial a grandes conjuntos de datos en almacenamiento local Pensadas para gestores de sistemas de ficheros distribuidos y con datos de gran tamaño (Hadoop) Instancias D2, D3, D3en, I3, I4i, entre otras Ejemplo: D3 Procesador: 3.1 GHz Intel Xeon Scalable Hasta 48 TB de almacenamiento en HDD Memory Storage Network Instance vCPU (GiB) (TB) (Gbps) d3.xlarge 2 32 3 x 2 HDD Up to 15 d3.2xlarge 8 64 6 x 2 HDD Up to 15 d3.4xlarge 16 128 12 x 2 HDD Up to 15 d3.8xlarge 32 256 24 x 2 HDD 25 Tema 3: Virtualización y Contenedores 27 Cloud APIs para computación EC2 Amazon: Elastic Compute Cloud Ciclo de vida de una instancia Comandos/Acciones: RunInstances, StartInstances, StopInstances, TerminateInstances, RebootInstances Tema 3: Virtualización y Contenedores 28 Cloud APIs para computación EC2 Amazon: Elastic Compute Cloud Clasificación de las instancias por opciones de pago: On-demand: instancias que son lanzadas bajo demanda y se pagan por segundos en ejecución Reservadas: instancias que se contratan por 1 o 3 años y que suponen un menor coste comparativamente con las instancias on- demand Dedicadas: instancias que se ejecutan sobre un hardware dedicado y no compartido (single-tenant) con un pago por horas Spot: instancias de bajo coste que Amazon tiene libres para su ejecución pero implican flexibilidad Se envía una solicitud de instancia Spot con la capacidad requerida Con la capacidad sobrante, AWS va ofertando instancias Spot Cuando hay un match entre la capacidad requerida y la sobrante, se inicializa la instancia Pueden requerir cierto tiempo en lanzarse y pueden ser interrumpidas en cualquier momento Son ideales para tareas opcionales, gran % de descuento. Tema 3: Virtualización y Contenedores 29 Estimación del coste Estimar el coste de EC2 con la calculadora online https://docs.aws.amazon.com/es_es/pricing- calculator/latest/userguide/ec2-estimates.html 1 instancias c5.2xlarge (8 vCPUs, 16GB) con Linux Zona: Alemania Opciones de pago: Reservadas 3 años, coste: 218,27$/mes – 164,98$/mes On-demand, 8 horas/día, coste: 127,51$/mes Tema 3: Virtualización y Contenedores 30 Cloud APIs para computación EC2 Amazon: Elastic Compute Cloud Lanzamiento de flotas (o grupos) de instancias (fleet) Permite definir la capacidad deseada y la cantidad máxima que está dispuesto a pagar por hora Especifica el número de instancias deseadas (capacidad) y su tipo de capacidad (on-demand o spot) El número de vCPUs que las instancias deseadas deberían tener (weighted capacity) AWS creará la flota en base a los precios de cada tipo de instancia. El precio disponible más bajo determina el tipo. Tema 3: Virtualización y Contenedores 31 Índice Índice 1. Operar con la infraestructura 1.1 Cloud APIs para computación 1.2 EC2 Amazon 2. Automatización y orquestación en la nube 2.1 Automatización de la configuración 2.2 Chef 2.3 Ansible 2.4 Automatización del aprovisionamiento 2.5 Herramientas de aprovisionamiento 2.6 AWS CloudFormation 2.7 Terraform 2.8 Diferencias en herramientas de automatización 2.9 Orquestación en la nube Tema 3: Virtualización y Contenedores 32 Automatización en la nube ¿Por qué es necesaria la automatización en la configuración y el despliegue de recursos en la nube? Implementar un número pequeño de instancias puede gestionarse manualmente, pero cientos de instancias es una tarea compleja que requiere automatización Los cambios y actualizaciones manuales pueden llevar a un estado inestable y erróneo de la configuración, se necesitan herramientas que permitan volver a estados estables de manera automática Automatización en la nube Conjunto de procesos y herramientas utilizados para reemplazar las tareas manuales por las automatizadas dentro de un entorno de nube Tareas como el escalado, la configuración de recursos y la supervisión del rendimiento La automatización en la nube forma parte de la metodología DevOps en la creación de un Continuous Deployment (CD) Tema 3: Virtualización y Contenedores 33 Automatización en la nube Infraestructura como código (IAC) Consiste en la automatización de las operaciones (build, deploy y manage) y el ciclo de vida de los recursos cloud mediante código, en lugar de utilizar un proceso manual No es sólo escribir scripts, deben considerarse buenas prácticas en su implementación: control de versiones, testing, uso de patrones, estructura, etc. La infraestructura como código a veces se denomina infraestructura programable Ventajas: Velocidad. El despliegue será mucho más rápido al realizar la configuración de la infraestructura con la ejecución de scripts Ahorro de costes. Facilita recrear la infraestructura ante cualquier situación (entrega continua, recuperación, replicación, …) Reducción del riesgo. Permite realizar los tests necesarios antes del despliegue que minimizan los posibles errores en el despliegue y proporcionan una estructura más estable Tema 3: Virtualización y Contenedores 34 Orquestación en la nube Orquestación de los recursos de la nube Coordinación de tareas automatizadas para racionalizar los flujos de trabajo en grandes entornos virtualizados Facilitada por herramientas y módulos integrados en las soluciones de los proveedores Cloud Herramientas IAC para la orquestación Amazon CloudFormation OpenStack Heat Terraform La solución Cloud debe proporcionar herramientas a nivel IaaS que permita al usuario la automatización y orquestación Tema 3: Virtualización y Contenedores 35 Automatización de la configuración Automatización y gestión de la configuración La automatización de la configuración es un concepto más amplio que hace referencia a la configuración de cualquier tipo de sistema (servidor, infraestructura, componente, etc.) Las herramientas para la automatización de la configuración pueden usarse en la automatización en la nube Herramientas IAC para la automatización Chef Puppet SaltStack Ansible Configuration Management & Automation Tema 3: Virtualización y Contenedores 36 Automatización de la configuración Clasificación de las herramientas: Por tipo de lenguaje Declarativo (funcional): describe qué configuración debe estar implementada (el estado final) Imperativo (procedimental): describe cómo implementar la configuración (paso a paso) Por tipo de método Pull: el nodo cloud obtiene bajo solicitud su configuración Push: el nodo cloud recibe su configuración sin solicitud previa Configuration Tool Method Approach Language Chef Pull Declarative & Imperative DSL (Ruby) Puppet Pull Declarative & Imperative DSL (PuppetDSL) SaltStack Pull & Push Declarative & Imperative YAML Ansible Push Declarative & Imperative YAML Tema 3: Virtualización y Contenedores 37 Automatización de la configuración Chef Soporta múltiples plataformas (Ubuntu, Microsoft, OS X, FreeBSD, …) Puede ser integrado en prácticamente todas las plataformas basadas en Cloud (Amazon EC2, Google Cloud, Azure, OpenStack, …) Usado como herramienta de automatización de manera extendida por gran número de empresas Se puede utilizar para crear partes de una infraestructura como servicio (IaaS) Define un lenguaje específico del dominio (Domain Specific Language – DSL) basado en Ruby Usado para: Configuración de infraestructura Despliegue de aplicaciones Configuraciones de aplicaciones/servicios Tema 3: Virtualización y Contenedores 38 Automatización de la configuración Chef Receta: describe el estado deseado de tu infraestructura (se organizan en libros de cocina, cookbooks) Tiene una arquitectura Maestro-Esclavo Workstation: donde las configuraciones (Recipes) se gestionan mediante una herramienta llamada Knife Chef Server: almacena las configuraciones (Cookbooks) y proporciona un dashboard Chef Client: está en los nodos y mediante un procedimiento Pull que obtiene la configuración que corresponda (Recipe) Tema 3: Virtualización y Contenedores 39 Automatización de la configuración Tema 3: Virtualización y Contenedores 40 Automatización de la configuración Chef Ejemplo de una receta creada en la Workstation execute "apt-get update" do Run a command command "apt-get update" end apt_package "apache2" do Install a package action :install end service "apache2" do Enable and start apache2 action [ :enable, :start ] end template '/var/www/html/index.html’ do Using a template, create a file source “myindex.erb” variables({ :mytext => “Welcome to Murcia” }) action :create end Tema 3: Virtualización y Contenedores 41 Automatización de la configuración Ansible No requiere software o módulos cliente en los nodos a gestionar, al contrario de Chef Puede ser usado con cualquier plataforma basada en Cloud (Amazon EC2, Google Cloud, Azure, OpenStack, …) Herramienta de automatización de simple uso y mínimos requerimientos Utiliza YAML como lenguaje de especificación de configuraciones Ansible Tower extiende la funcionalidad (dashboard, scheduling, notificaciones, …) Usado para: Configuración de infraestructura Despliegue de aplicaciones Configuraciones de aplicaciones/servicios Tema 3: Virtualización y Contenedores 42 Automatización de la configuración Ansible Tiene una arquitectura compuesta de: Modules: piezas de código para construir los playbooks Inventory: lista de hosts gestionados (clientes Ansible) Playbooks: manuales de instrucciones (YAML file) que describe las Tareas a ser ejecutadas Plugins: módulos especiales con funcionalidad adicional Tema 3: Virtualización y Contenedores 43 Automatización de la configuración Ansible Nodos gestionados y nodos de control El nodo de control conecta vía SSH con los nodos gestionados No dispone de un interfaz interactivo Tema 3: Virtualización y Contenedores 44 Automatización de la configuración Ansible (ejemplo de Playbook) --- - hosts: webservers Managed Hosts vars: http_port: 80 max_clients: 200 remote_user: root SSH remote user tasks: - name: ensure apache is at the latest version yum: name=httpd state=latest Install lastest version - name: write the apache config file template: src=/srv/httpd.j2 dest=/etc/httpd.conf Using a template, create a file notify: - restart apache Callback function to handler - name: ensure apache is running (and enable it at boot) service: name=httpd state=started enabled=yes Check state handlers: - name: restart apache Handler function service: name=httpd state=restarted Tema 3: Virtualización y Contenedores 45 Automatización de aprovisionamiento Chef y Ansible están destinadas instalar y gestionar SW en servidores existentes Aunque pueden hacer “algo” de aprovisionamiento como desplegar un servidor AWS CloudFormation y Terraform (o Heat, Pulumi) Aprovisonan infraestructura cloud de forma automatizada Aunque pueden hacer “algo” de configuración como ejecutar scripts de configuración Tema 3: Virtualización y Contenedores 46 Herramientas de aprovisionamiento AWS CloudFormation AWS CloudFormation nos facilita la interacción automatizada con la infraestructura de AWS AWS CloudFormation solución pionera creada en 2011 Permite describir una infraestructura en forma de plantillas (templates) que al crearse generan pilas (stacks) Utiliza una sintaxis YAML, también permite JSON Proporciona una interfaz gráfica que facilita el uso Web: https://aws.amazon.com/es/cloudformation/ Tema 3: Virtualización y Contenedores 47 Herramientas de aprovisionamiento AWS CloudFormation Resources:... WebServer: Type: AWS::EC2::Instance EC2 instaces Properties: ImageId: “ami-7a11e213” AMI InstanceType: Type of instance Ref: InstanceType KeyName: Key pair Ref: KeyName SecurityGroups: Security groups - Ref: WebServerSecurityGroup UserData: Software configuration Fn::Base64: !Sub | #!/bin/bash -xe yum update -y aws-cfn-bootstrap /opt/aws/bin/cfn-init -v --stack ${AWS::StackId} --resource WebServer --configsets wordpress_install /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackId} --resource WebServer Tema 3: Virtualización y Contenedores 48 Herramientas de aprovisionamiento AWS CloudFormation - Se pueden utilizar múltiples plantillas, una para cada capa del entorno - Automáticamente gestiona dependencias y determina la secuencia correcta de ordenes - El usuario puede definir atributos dependsOn, condiciones wait y pilas anidadas Tema 3: Virtualización y Contenedores 49 Herramientas de aprovisionamiento AWS CloudFormation - Antes de ejecutar la plantilla, los cambios son visualizados - Si algún error ocurre, un proceso de rollback devuelve el entorno a su estado previo Tema 3: Virtualización y Contenedores 50 Herramientas de aprovisionamiento Terraform Muy similar a CloudFormation en funcionalidad Opensource. Se integra con proveedores cloud más conocidos: AWS, Azure y Google Cloud Navaja suiza de la IaaC: Lenguaje de configuración de HarshiCorp (HCL) Mismo lenguaje, diferente vocabulario Terraform proporciona funcionalidades más flexibles: Importación de variables en ficheros dentro de la plantilla Importación automática de recursos externos como recursos de la plantilla Se divide en dos partes: Terraform Core y Terraform Plugins Web: https://www.terraform.io/ Tema 3: Virtualización y Contenedores 51 Herramientas de aprovisionamiento Terraform Terraform Core es el responsable de las configuraciones Dado un fichero de configuración y un fichero del estado actual de la infraestructura, calcula el plan de lo que hay que hacer Usa llamadas de procedimiento remoto (RPC) para comunicarse con los Terraform Plugins Terraform plugins exponen una implementación para un servicio específico son responsables de las llamadas a la API de los proveedores Tema 3: Virtualización y Contenedores 52 Herramientas de aprovisionamiento Terraform (HCL) con AWS provider "aws” { access_key = "B5KG6Fe5GUKIATUF5UD" secret_key = "R4gb65y56GBF6765ejYSJA4YtaZ T6GY7H" region = "us-west-2" } resource "aws_instance" "custom-ec2-1" { EC2 instaces ami = "ami-02354e95b39ca8dec" AMI instance_type = "t2.micro" Type of instance key_name = aws_key_pair.custom-kp1.key_name Key pair subnet_id = aws_subnet.custom-1.id security_groups = [aws_security_group.custom.id] Security groups } Tema 3: Virtualización y Contenedores 53 Diferencias en herramientas de automatización Infraestructura mutable (Chef y Ansible) Ejecuta cambios en la misma máquina que necesita ser cambiada Cada máquina desarrolla su historial de cambios Errores son difíciles de diagnosticar, tracear y reproducir E.g., una actualización podría funcionar bien en un servidor de testing y fallar en un servidor de producción debido al historial de actualizaciones previas del último Infraestructura inmutable (CloudFormation/Terra.) Cambios implican el despliegue de nueva infraestructura E.g., el depliegue de una nueva versión de OpenSSL: configurar una nueva imagen con esta versión desplegar nuevas máquinas con esta imagen Eliminar las máquinas anteriores Facilita saber que SW está ejecutando cada servidor El paso a producción es inmediato, sin errores Tema 3: Virtualización y Contenedores 54 Diferencias en herramientas de automatización Chef y Ansible: enfoque procedimental Los pasos son los que llegan al estado final AWS CloudFormation/Terraform: enfoque declarativo Sólo se declara el estado final Ansible: Terraform: ¿Qué pasa si después necesitamos tener 15 servidores en vez de 10? Tema 3: Virtualización y Contenedores 55 Diferencias en herramientas de automatización Chef y Ansible: enfoque procedimental Los pasos son los que llegan al estado final AWS CloudFormation/Terraform: enfoque declarativo Sólo se declara el estado final Ansible: Terraform: Tema 3: Virtualización y Contenedores 56 Diferencias en herramientas de automatización Chef y Ansible: enfoque procedimental Los pasos son los que llegan al estado final AWS CloudFormation/Terraform: enfoque declarativo Sólo se declara el estado final Ansible: Terraform: ¿Y si ahora necesito actualizar la imagen de los 15 servidores desplegados? Tema 3: Virtualización y Contenedores 57 Diferencias en herramientas de automatización Chef y Ansible: enfoque procedimental Los pasos son los que llegan al estado final AWS CloudFormation/Terraform: enfoque declarativo Sólo se declara el estado final Ansible: Terraform: Qué servidores? Actualizar cada uno Comprobar errores Tema 3: Virtualización y Contenedores 58 Diferencias en herramientas de automatización AWS CloudFormation / Terraform El código siempre representa el último estado de la infraestructura Evita el problema de tener en cuenta el historial de cambios en el tiempo Excelente reutilización de código El motor de ejecución se encarga de cómo pasar de un estado a otro Bases de código más pequeñas Tema 3: Virtualización y Contenedores 59 Orquestación en la nube Generalmente se necesitan varios tipos de herramientas para desplegar IaaC Combinación de automatización de configuración y aprovisionamiento Combinación en ambos sentidos: (1)Aprovisionamiento + gestión de configuración Es la herramienta de aprovisionamiento quien lanza la configuración Ejemplo: Terraform despliega una instancia EC2 y lanza un script Ansible para la configuración de la instancia (2)Gestión de configuración + aprovisionamiento Es la herramienta de configuración la que lanza el aprovisionamiento Ejemplo: Ansible despliega una instancia EC2 mediante CloudFormation Tema 3: Virtualización y Contenedores 60 Orquestación en la nube Ejemplo: Terraform despliega una instancia EC2 y lanza un script Ansible para la configuración de la instancia Terraform dispone de Provisioner local-exec y remote-exec resource “aws_instance” “web” {... provisioner “local-exec” { Run Ansible script command = “ansible-playbook -u ubuntu -i ‘${aws_instance.web.public_dns},’ main.yml” } } Tema 3: Virtualización y Contenedores 61 Orquestación en la nube Ejemplo: Ansible despliega una instancia EC2 mediante CloudFormation Ansible dispone de módulos para configurar AWS --- - hosts: controller tasks: - name: run my cloudformation stack cloudformation: Ansible module stack_name: “MyEC2Stack” template: “EC2Instance.template” Using a template, create a file …. ….. Tema 3: Virtualización y Contenedores 62 Orquestación en la nube Aprovisionamiento + plantillas de servidores + orquestación Packer permite crear MV para múltiples plataformas de forma sencilla MV llevan Docker y Kubernetes instalados Actualizaciones en contenedores son ligeras y con kubernetes, diferentes despliegues, auto-scaling, etc. Infraestructura se mantiene inmutable Tema 3: Virtualización y Contenedores 63 Tema 2.2 Gestión de Servicios Cloud Infraestructura para la Computación de Altas Prestaciones Curso 2024/2025 Tema 3: Virtualización y Contenedores 64