Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

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] mateinfo: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
-{{ :info:cursos:openwebinars:intro-cloud-computing:pasted:20180625-153029.png }} +{{ :info:cursos:openwebinars:intro-cloud-computing:pasted:20180625-153029.png?500 }} 
-{{ :info:cursos:openwebinars:intro-cloud-computing:pasted:20180625-153047.png }}+{{ :info:cursos:openwebinars:intro-cloud-computing:pasted:20180625-153047.png?500 }}
  
 ==== Entrega y despliegue continuo ==== ==== Entrega y despliegue continuo ====
Línia 209: Línia 209:
 <collapse id="control-versiones" collapsed="true"> <collapse id="control-versiones" collapsed="true">
  
-==== X ====+Adoptar las buenas prácticas de los desarrolladores para sistemas
  
 +<image shape="thumbnail">{{ :info:cursos:openwebinars:intro-cloud-computing:pasted:20180626-080928.png?450 }}</image>
 +
 +==== 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 "principal"
 +    * 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
  
 </collapse> </collapse>
  
 +===== Ejemplo de Git =====
 +<button collapse="ejemplo-git" size="xs">ocultar/mostrar</button>
 +
 +<collapse id="ejemplo-git" collapsed="true">
 +
 +<code bash>ssh-add ~/.ssh/clave.privada
 +# añadimos nuestra clave privada para autenticarnos contra github
 +git clone git@github.com:albertomolina/openstack-ubuntu-ansible.git
 +# descargamos el repositorio vía SSH
 +git status
 +git diff <fichero>
 +</code>
 +
 +</collapse>
 +
 +===== Sistemas de aprovisionamiento =====
 +<button collapse="aprovisionamiento" size="xs">ocultar/mostrar</button>
 +
 +<collapse id="aprovisionamiento" collapsed="true">
 +
 +==== 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
 +
 +</collapse>
 +
 +===== Ejemplo de Vagrant =====
 +<button collapse="vagrant" size="xs">ocultar/mostrar</button>
 +
 +<collapse id="vagrant" collapsed="true">
 +
 +  * fichero de plantilla en formato Ruby
 +    * ''vagrant init'' -> crea fichero "base"
 +  * ''vagrant up'' -> crear escenario
 +  * ''vagrant box list''
 +    * descargables desde Hasicorp (Atlas imagenes de Vagrant)
 +  * ''vagrant ssh''
 +    * 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
 +
 +</collapse>
 +
 +===== Ejemplo de Terraform =====
 +<button collapse="terraform" size="xs">ocultar/mostrar</button>
 +
 +<collapse id="terraform" collapsed="true">
 +
 +  * terraform no está aún en distribución de paquetes (descarga directa)
 +  * ''terraform --version''
 +  * ficheros .tf en formato HLS
 +  * ''terraform plan''
 +  * EC2 Dashboard > instances
 +  * ''terraform apply''
 +  * ''terraform show''
 +  * herramienta de gestión de la configuración del despliegue:
 +    * ansible
 +    * puppet
 +    * chef
 +
 +</collapse>
 +
 +===== Sistema de la gestión de la configuración =====
 +<button collapse="gestion-configuracion" size="xs">ocultar/mostrar</button>
 +
 +<collapse id="gestion-configuracion" collapsed="true">
 +
 +==== Aprovisionamiento de recursos ====
 +  * Configuration Management Software
 +  * Base de la Infraestructura como código
 +  * puede realizar aprovisionamiento, pero se especializa en la configuración
 +
 +==== 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
 +
 +</collapse>
 +
 +===== Ejemplo Ansible =====
 +<button collapse="ejemplo-ansible" size="xs">ocultar/mostrar</button>
 +
 +<collapse id="ejemplo-ansible" collapsed="true">
 +
 +<code bash>
 +ssh-add private.key
 +# añade la clave privada para no tener que mencionarla explicitamente
 +</code>
 +
 +¿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
 +</sxh>
 +
 +Modo de funcionamiento de Ansible:
 +  * linea de comando (simple)
 +    * ''ansible all -m ping'' : usa el módulo ping para ver si todos los servidores están ON
 +    * ''ansible all -m apt -a update_cache=yes --sudo (o -s)'' : ejecuta los procesos solicitados
 +    * respuestas
 +      * verdes : OK
 +      * amarillas: cambios en la máquina (no necesariamente malo)
 +      * rojas: errores
 +  * Playbooks (recetas)
 +    * idempotencia: propiedad matemática que al aplicar una función sobre un objeto para que siempre le de lo mismo
 +    * 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>ansible-playbook <fichero_playbook.yml> -s
 +# -s de sudo</code>
 +
 +</collapse>
  
  • info/cursos/openwebinars/intro-cloud-computing/iaac.1530025627.txt.gz
  • Darrera modificació: 26/06/2018 08:07
  • per mate