Diferències
Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
| Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia | ||
| info:cursos:openwebinars:intro-cloud-computing:iaac [26/06/2018 08:07] – [Lenguaje de programación más usados] mate | info:cursos:openwebinars:intro-cloud-computing:iaac [14/09/2018 02:41] (actual) – [Sistema de Control de Versiones] mate | ||
|---|---|---|---|
| Línia 52: | Línia 52: | ||
| * Testeadores (Q&A) | * Testeadores (Q&A) | ||
| * Operadores | * Operadores | ||
| - | {{ : | + | {{ : |
| - | {{ : | + | {{ : |
| ==== Entrega y despliegue continuo ==== | ==== Entrega y despliegue continuo ==== | ||
| Línia 209: | Línia 209: | ||
| < | < | ||
| - | ==== X ==== | + | Adoptar las buenas prácticas de los desarrolladores para sistemas |
| + | <image shape=" | ||
| + | |||
| + | ==== Sistemas de control de versiones ==== | ||
| + | * controla cada versión de los ficheros | ||
| + | * muy extendido en desarrollo de software | ||
| + | * esencial en el trabjo colaborativo | ||
| + | * gestiona código fuente, no binarios | ||
| + | * se utiliza también en documentación | ||
| + | * ¿en sistemas? ¡por supuesto! | ||
| + | |||
| + | ==== Implementaciones ==== | ||
| + | * CVS | ||
| + | * SVN | ||
| + | * Bazaar | ||
| + | * Mercurial | ||
| + | * Git | ||
| + | |||
| + | ==== Git ==== | ||
| + | * distribuido | ||
| + | * creado en 2005 por Linus Torvalds | ||
| + | * para el kernel Linux | ||
| + | * GPL2 | ||
| + | * terminología | ||
| + | * repo | ||
| + | * commit | ||
| + | * guardado de versión en local | ||
| + | * clone | ||
| + | * push | ||
| + | * envío a repositorio " | ||
| + | * branch | ||
| + | * checkout | ||
| + | * tag | ||
| + | * merge | ||
| + | |||
| + | ==== Github ==== | ||
| + | * forja para alojar proyectos | ||
| + | * sin límite en repositorios públicos | ||
| + | * promueve la promiscuidad | ||
| + | * no necesariamente al estar en GitHub implica soft libre -> licencias! | ||
| + | * interfaz web sencilla | ||
| + | * muy importante en software libre | ||
| + | * alojamiento de proyectos personales | ||
| + | * ¡Hazme un fork cariño! | ||
| + | * nuevo repositorio a partir de otro en un determinado momento | ||
| + | * Pull-requests | ||
| + | * desde el fork, se añade una funcionalidad que se pasa al repositorio original (y este puede o no aceptar) | ||
| + | * ansible (RedHat) | ||
| + | |||
| + | ==== GitLab ==== | ||
| + | * tuvieron un crash y mostraron en directo la recuperación | ||
| </ | </ | ||
| + | ===== Ejemplo de Git ===== | ||
| + | <button collapse=" | ||
| + | |||
| + | < | ||
| + | |||
| + | <code bash> | ||
| + | # añadimos nuestra clave privada para autenticarnos contra github | ||
| + | git clone git@github.com: | ||
| + | # descargamos el repositorio vía SSH | ||
| + | git status | ||
| + | git diff < | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | |||
| + | ===== Sistemas de aprovisionamiento ===== | ||
| + | <button collapse=" | ||
| + | |||
| + | < | ||
| + | |||
| + | ==== Aprovisionamiento de recursos ==== | ||
| + | * forma parte de un concepto más amplio: orquestación | ||
| + | * esencial en cloud computing | ||
| + | |||
| + | ==== Aprovionamiento fácil ==== | ||
| + | * creación de escenarios sencillos para demos: Vagrant | ||
| + | * Vagrant utiliza por defecto Virtualbox | ||
| + | * puede usar varios, incluso cloud | ||
| + | * plantillas sencillas | ||
| + | |||
| + | ==== Aprovisionamiento "para mayores" | ||
| + | * AWS Cloudformation | ||
| + | * específica y exclusiva para AWS | ||
| + | * plantillas en formato JSON | ||
| + | * OpenStack Heat | ||
| + | * desplegar plantillas | ||
| + | * reutiliza plantillas de Cloudformation | ||
| + | * formato .hot (YAML) | ||
| + | * Hashicorp Terraform | ||
| + | * 2 años | ||
| + | * hermano mayor de Vagrant | ||
| + | * plantilla independiente del proveedor: AWS, OpenStack, Azure (en general) | ||
| + | * formato HSL (formato propio) | ||
| + | * OASIS TOSCA | ||
| + | * desarrollo formato de documentos | ||
| + | * no ha conseguido extenderse | ||
| + | |||
| + | </ | ||
| + | |||
| + | ===== Ejemplo de Vagrant ===== | ||
| + | <button collapse=" | ||
| + | |||
| + | < | ||
| + | |||
| + | * fichero de plantilla en formato Ruby | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * descargables desde Hasicorp (Atlas imagenes de Vagrant) | ||
| + | * '' | ||
| + | * las versiones más viejas de imágenes de vagrant llevan incorporada una par de claves para acceder por SSH sin contraseñas | ||
| + | * las nuevas tienen una para cada máquina | ||
| + | |||
| + | </ | ||
| + | |||
| + | ===== Ejemplo de Terraform ===== | ||
| + | <button collapse=" | ||
| + | |||
| + | < | ||
| + | |||
| + | * terraform no está aún en distribución de paquetes (descarga directa) | ||
| + | * '' | ||
| + | * ficheros .tf en formato HLS | ||
| + | * '' | ||
| + | * EC2 Dashboard > instances | ||
| + | * '' | ||
| + | * '' | ||
| + | * herramienta de gestión de la configuración del despliegue: | ||
| + | * ansible | ||
| + | * puppet | ||
| + | * chef | ||
| + | |||
| + | </ | ||
| + | |||
| + | ===== Sistema de la gestión de la configuración ===== | ||
| + | <button collapse=" | ||
| + | |||
| + | < | ||
| + | |||
| + | ==== Aprovisionamiento de recursos ==== | ||
| + | * Configuration Management Software | ||
| + | * Base de la Infraestructura como código | ||
| + | * puede realizar aprovisionamiento, | ||
| + | |||
| + | ==== Aplicaciones más usadas ==== | ||
| + | * CFEngine | ||
| + | * Puppet (manifiestos - Manifests) | ||
| + | * agentes (aunque es posible trabajar de otra manera) | ||
| + | * gestión desde un nodo central. Comunicación bidereccional | ||
| + | * Chef (recetas - Recipes) | ||
| + | * agentes (aunque es posible trabajar de otra manera) | ||
| + | * gestión desde un nodo central. Comunicación bidereccional | ||
| + | * Ansible (Libros de jugadas - Playbooks) | ||
| + | * RedHat | ||
| + | * sin agentes, conexiones SSH | ||
| + | * sintaxis plantillas más sencilla | ||
| + | * Salt (estatos - States) | ||
| + | * sin agentes, sin SSH... cola de mensajes | ||
| + | * sintaxis plantillas más sencilla | ||
| + | * Juju (Encantamientos - Charms) | ||
| + | * Canonical | ||
| + | * utilizado campo específico (Ubuntu), no de uso general | ||
| + | |||
| + | </ | ||
| + | |||
| + | ===== Ejemplo Ansible ===== | ||
| + | <button collapse=" | ||
| + | |||
| + | < | ||
| + | |||
| + | <code bash> | ||
| + | ssh-add private.key | ||
| + | # añade la clave privada para no tener que mencionarla explicitamente | ||
| + | </ | ||
| + | |||
| + | ¿concepto entorno virtual? | ||
| + | |||
| + | ansible.cfg: | ||
| + | * indicamos el fichero con las direcciones de los servidores que queremos gestionar con Ansible (ansible_hosts) | ||
| + | * clave privada (si corresponde) | ||
| + | |||
| + | ansible_hosts: | ||
| + | * secciones con datos de servidor: | ||
| + | <sxh> | ||
| + | [back-end-servers] | ||
| + | database ansible_host=10.0.0.1 ansible_port=22 ansible_user=postgres | ||
| + | webserver ansible_host=10.0.0.2 ansible_port=22 ansible_user=root | ||
| + | |||
| + | [infrastructure] | ||
| + | ldap ansible_host=10.0.0.100 ansible_port=22 ansible_user=root | ||
| + | </ | ||
| + | |||
| + | Modo de funcionamiento de Ansible: | ||
| + | * linea de comando (simple) | ||
| + | * '' | ||
| + | * '' | ||
| + | * respuestas | ||
| + | * verdes : OK | ||
| + | * amarillas: cambios en la máquina (no necesariamente malo) | ||
| + | * rojas: errores | ||
| + | * Playbooks (recetas) | ||
| + | * idempotencia: | ||
| + | * le digo a que estado quiero llegar (quiero tener instalado apache) y Ansible realiza los pasos necesarios (si está instalado, responderá en verde que ya está, en amarillo si lo ha instalado, en rojo si no ha podido) | ||
| + | * formato YUML | ||
| + | * <code bash> | ||
| + | # -s de sudo</ | ||
| + | |||
| + | </ | ||