¿Relación entre Vagrant, Docker, Chef y OpenStack (o productos similares)?

¿Relación entre Vagrant, Docker, Chef y OpenStack (o productos similares)?

Soy desarrollador web, pero también me interesan algunas tareas administrativas. Por lo tanto, el nuevo paso de la administración pura a las operaciones de desarrollo me resulta útil.

De todos modos, tengo algunos problemas para poner algunas cosas en una relación. Quizás no haya ninguno, así que quería pedir ayuda para aclararlo.

Básicamente, lo que quiero poner en relación son cuatro tipos de software (según tengo entendido). Los productos exactos no importan, puedes colocar cualquier software similar como alternativa:

  • Vagrant: Según tengo entendido, es automatizar la creación y gestión de máquinas virtuales: configurarlas, iniciarlas y detenerlas. Esto se puede hacer utilizando una máquina virtual local o remota, por ejemplo, en una plataforma en la nube.
  • Docker: una "VM liviana", basada en algunos conceptos del kernel de Linux, que puede usarse para ejecutar procesos de forma aislada, por ejemplo, en un entorno de alojamiento web compartido.
  • Chef: una herramienta para instalar y configurar un sistema operativo, por ejemplo, dentro de una VM.
  • OpenStack: una herramienta que le permite crear su propia nube privada, por lo tanto comparable a algo como AWS.

Pregunta #1: ¿Son correctas mis explicaciones o me equivoco en algunos (o todos) de estos consumos?

Pregunta #2: ¿Cómo podría combinar todas esas herramientas? ¿Tendría eso algún sentido?

En mi imaginación y desde mi punto de vista, podrías ir y

  • use OpenStack para construir su propia nube,
  • use Vagrant para administrar las máquinas virtuales que se ejecutan en la nube,
  • use Chef para configurar estas máquinas virtuales
  • y finalmente usar Docker para ejecutar procesos dentro de las VM.

¿Es esto correcto? Y si es así, ¿podrías darme algún consejo sobre cómo empezar a utilizar todo esto (es bastante a la vez y aún no sé por dónde empezar)?

Respuesta1

Utilicemos sus respectivas páginas web para saber de qué se tratan todos estos proyectos. Sin embargo, cambiaré el orden en el que enumeraste:

  • Cocinero: Chef es una plataforma de automatización que transforma la infraestructura en código.

    Esto es unsoftware de gestión de configuración. La mayoría de ellos utilizan el mismo paradigma: permiten definir elestadodesea que sea una máquina, con respecto a archivos de configuración, software instalado, usuarios, grupos y muchos otros tipos de recursos. La mayoría de ellos también proporcionan funcionalidad para impulsar cambios en máquinas específicas, un proceso generalmente llamadoorquestación.

  • Vagabundo: cree y configure entornos de desarrollo livianos, reproducibles y portátiles.

    Proporciona unreproducibleforma de generarmáquinas totalmente virtualizadasutilizando la tecnología VirtualBox o VMWare de Oracle comoproveedores. Vagrant puede coordinarse con un software de gestión de configuración para continuar el proceso de instalación donde finaliza el instalador del sistema operativo. Esto se conoce comoaprovisionamiento.

  • Estibador: Un proyecto de código abierto para empaquetar, enviar y ejecutar cualquier aplicación como un contenedor liviano

    La funcionalidad de este software se superpone en cierto modo con la de Vagrant, en el que proporciona los medios para definir las instalaciones de los sistemas operativos, pero difiere mucho en la tecnología utilizada para este propósito. Usos de DockerContenedores de Linux, que no son máquinas virtuales per se, sino procesos aislados que se ejecutan en sistemas de archivos aislados. Docker también puede usar unsistema de gestión de configuraciónpara aprovisionar los contenedores.

  • pila abierta: Software de código abierto para construir nubes públicas y privadas.

    Si bien es cierto que OpenStackse puede implementar en una sola máquina, dicha implementación es puramente una prueba de concepto, probablemente no muy funcional debido a limitaciones de recursos.

    El objetivo principal de las instalaciones de OpenStack son los entornos de múltiples nodos, donde eldiferentes componentesSe puede utilizar en hardware dedicado para lograr mejores resultados.

    Una funcionalidad clave de OpenStack es su soporte para muchas tecnologías de virtualización, desde totalmente virtualizadas (VirtualBox, VMWare) hasta paravirtualizadas (KVM/Qemu) y también contenedores (LXC) e inclusoModo de usuario Linux (UML).

Intenté presentar estos productos como componentes de una arquitectura específica. Desde mi punto de vista, tiene sentido primero poder definir tus necesidades con respecto al entorno que necesitas (Chef, Puppet, Ansible, ...), luego poder implementarlo de forma controlada (Vagrant, Docker). , ...) y finalmente escalarlo a tamaño global si es necesario.

La cantidad de toda esta funcionalidad que necesita debe definirse en el alcance de su proyecto.

También tenga en cuenta que he simplificado demasiado la mayoría de las explicaciones técnicas. Utilice los enlaces referenciados para obtener información detallada.

Respuesta2

Creo que tener experiencia como desarrollador hará que convertirse en 'devops' sea realmente más complicado. Su pregunta tiene casi 3 años, por lo que sería interesante saber cómo está encontrando el viaje. Le daré una respuesta desde el punto de vista de el administrador del sistema sobre las aplicaciones que mencionó anteriormente y, con suerte, arrojará algo de luz o brindará una perspectiva no técnica que explicará de alguna manera por qué una persona (administrador o desarrollador) comenzaría a considerar exactamente lo que usted le ha pedido, por ejemplo, a los desarrolladores. perspectiva ¿cuál es la relación entre x, y, z? ¿Son estas herramientas mayores que la suma de sus partes?

De hecho, creo que los administradores de sistemas tienen la ventaja aquí, la mayoría de las aplicaciones que menciona en su pregunta resuelven los 'problemas' de administración y, al hacerlo, brindan un entorno de centro de datos más abstracto y esto, a su vez, es más programable para los desarrolladores y los nuevos ' estrategia de devops (léase estrategia/equipo, devops no es una persona). Entonces, ¿cuál es la relación con las aplicaciones que mencionas? ¿Cómo proporciona esto un enfoque holístico al servicio de TI?

OpenStack: una herramienta que le permite crear su propia nube privada, por lo tanto comparable a algo como AWS

Eso es lo que es, pero ¿qué hace? - el sistema operativo con el nombre más acertado era DOS - operaba su disco abstrayendo el BIOS, OpenStack opera su centro de datos y abstrae su infraestructura (IaaS - es la jerga para sistema operativo de centro de datos). Ahora que su centro de datos tiene una API, una sintaxis de comando y una GUI, OpenStack puede controlar hipervisores, conmutadores, enrutadores, firewalls, redes de área de almacenamiento, balanceadores de carga, hosts acoplables, etc. Openstack utiliza el 'complemento' de su fabricante de hardware.ola función particular puede existir únicamente en el software como se define en el softwarealgoo virtualización de funciones de red. Además de esto, OpenStack, y todas las demás nubes, pueden orquestar su propia infraestructura leyendo scripts que usted lanza al motor de orquestación o que se activan según reglas (aumentar, reducir, etc.). Entonces, OpenStack es una capa gigante de abstracción, por ejemplo, no me importa qué conmutador tenga, dame una red conestecomando, o constrúyame una carga equilibrada complicada, HA, disponible públicamente, escalado automático, nombre de dominio registrado, almacenamiento adjuntocosita-con este script que encontré en internet.

Docker: una "VM liviana", basada en algunos conceptos del kernel de Linux, que puede usarse para ejecutar procesos de forma aislada, por ejemplo, en un entorno de alojamiento web compartido.

Docker es otra capa de abstracción y, al igual que la nube es una tecnología disruptiva, está cambiando la industria porque resuelve muchos "problemas" operativos como dependencias de software, actualizaciones, aislamiento de datos y pura portabilidad. Java se hizo popular debido a la portabilidad del código fuente en la que los desarrolladores no tenían que pensar; una JVM en ejecución significaba que su código debería ejecutarse en la máquina de café siempre que fuera compatible con Java. Docker resuelve un problema similar, para ejecutar mi aplicación necesitas un host Docker,no, necesitas esta versión de Python, este kernel, esta distribución de Linux, etc., la aplicación todavía tiene esas dependencias, por supuesto, pero al host subyacente no le importa y al administrador no le importa lo que haces dentro de un contenedor aislado ( a un punto). Docker está cambiando el paradigma de desarrollo y operaciones, tratando un sistema operativo completo y sus servicios como un binario.podemos obtenerlos de un repositorio, versionarlos, modificarlos, ejecutarlos con parámetros, etc.

Chef: una herramienta para instalar y configurar un sistema operativo, por ejemplo, dentro de una VM.

Sí, y no tan disruptivo como los dos primeros, Chef, Puppet, Ansible, Salt, System Center Operations Manager y una gran cantidad de otras aplicaciones en este espacio brindan una manera para que los desarrolladores y administradores modelen implementaciones, actualizaciones y otras acciones (configuración). cambios), no parece haber ningún organismo de estándares que supervise estos esfuerzos comohay para la nube. Pero no estamos tratando con algo tan definitivo como la infraestructura, por lo que es más doloroso aprenderlos y no hay mucho que sea transferible de uno a otro.

Vagrant: Según tengo entendido, es automatizar la creación y gestión de máquinas virtuales: configurarlas, iniciarlas y detenerlas. Esto se puede hacer utilizando una máquina virtual local o remota, por ejemplo, en una plataforma en la nube.

Esta es la extraña en la lista de aplicaciones que mencionas, Vagrant es una herramienta para desarrolladores y un juguete para administradores, puedes crear rápidamente un entorno de desarrollo con vagrant, por ejemplo, quiero desarrollar una aplicación para Android, tomar un IDE de Vagabundo, creo que Docker lo superará pronto.

¿Puedes darme un consejo sobre cómo empezar a utilizar todo esto (es bastante al mismo tiempo y todavía no sé por dónde empezar)?

Es por eso que creo que los administradores tienen la ventaja, hemos tenido que hacer la mayor parte de esto manualmente y saber qué puede salir mal, los manifiestos de marionetas, la computación en la nube y la orquestación de Docker nos resultarán más fáciles, los desarrolladores se encontrarán tomando muchas tangentes, así que mi El consejo para cualquier desarrollador potencial es ser administrador primero.

Respuesta3

Acabo de terminar un proyecto de implementación de OpenStack que utiliza un servidor Chef dentro de una instancia de Vagrant:https://github.com/bluechiptek/bluechipstack/blob/master/README.md

El principal problema al hacerlo de esta manera es que la instancia de Vagrant tenga la misma IP cada vez que desee administrar los nodos. Si realiza direccionamiento estático, funciona bien. Hacerlo a través de una VPN no es lo ideal.

Respuesta4

Por mi parte, estoy usando una combinación de Vagrant y Docker únicamente.

Utilizo vagrant para aprovisionar las máquinas (hayproveedores de nube adicionalespero estoy usando el VirtualBox integrado. Debido a que estoy usando este enfoque, la red externa y el almacenamiento son prácticamente manuales, pero si usas algo comovagabundoscomplemento, puede indicarle a AWS que le proporcione las piezas necesarias.

El script de aprovisionamiento que utilizo apunta a una ubicación segura que contiene el certificado de CA y las claves utilizadas para firmar CSR junto con los docker swarm jointokens. Además instalo docker-engine y lo configuro para unirme al enjambre (inicializarlo si no hay ninguno).

Una vez que eso está resuelto, simplemente hago una operación docker stack deploydesde mi máquina local o desde mi caja de compilación para implementar la pila con todo lo que necesito.

En mi caso simplemente caícocineroa favor de simplemente usar scripts simples posteriores a la instalación que funcionen yumcomo apt-getmis scripts de aprovisionamiento.

Yo también uso eldesencadenantes vagabundoscomplemento para agregar secuencias de comandos adicionales antes de destruir (en mi caso, para abandonar el enjambre).

Lo bueno de centralizar con Vagrant es que puedes replicar el entorno en otro sistema o en una sola computadora para el desarrollo, solo tienes que agregar o cambiar la providersección. Eso sí, no he configurado OpenStack en una sola computadora para administrar VirtualBox.

información relacionada