BOSH (software)


De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

BOSH es un proyecto de software de código abierto que ofrece una cadena de herramientas para la ingeniería de versiones , la implementación de software y la gestión del ciclo de vida de las aplicaciones de servicios distribuidos a gran escala . La cadena de herramientas se compone de un servidor (BOSH Director) y una herramienta de línea de comandos. BOSH se utiliza normalmente para empaquetar , implementar y administrar software en la nube . Si bien BOSH fue desarrollado inicialmente por VMware en 2010 para implementar Cloud Foundry PaaS , se puede usar para implementar otro software (como Hadoop , RabbitMQ o MySQL, por ejemplo). BOSH está diseñado para gestionar todo el ciclo de vida de grandes sistemas distribuidos.

Desde marzo de 2016, BOSH puede administrar implementaciones tanto en servidores Microsoft Windows [3] como Linux .

Un director de BOSH se comunica con un único proveedor de infraestructura como servicio (IaaS) para administrar la red subyacente y las máquinas virtuales (VM) (o contenedores ). Se admiten varios proveedores de IaaS: Amazon Web Services EC2, Apache CloudStack , Google Compute Engine , Microsoft Azure , OpenStack y VMware vSphere .

Para ayudar a admitir más proveedores de IaaS subyacentes, BOSH utiliza el concepto de una interfaz de proveedor de nube (CPI). Existe una implementación del CPI para cada uno de los proveedores de IaaS enumerados anteriormente. Normalmente, el CPI se usa para implementar máquinas virtuales, pero también se puede usar para implementar contenedores .

Existen pocos CPI para implementar contenedores con BOSH y solo uno cuenta con soporte activo. Para este, BOSH usa un CPI que implementa los contenedores Garden de Pivotal Software (Garden es muy similar a Docker ) en una sola máquina virtual, ejecutada por VirtualBox o VMware Workstation . En teoría, se podría apoyar cualquier otro motor de contenedores, si se desarrollaran los IPC necesarios.

Debido a que BOSH admite de manera indiferente implementaciones en máquinas virtuales o contenedores, BOSH usa el término genérico "instancias" para designarlas. Depende del CPI elegir si una "instancia" de BOSH es en realidad una máquina virtual o un contenedor.

Flujo de trabajo

Una vez instalado, un servidor BOSH acepta cargar sistemas de archivos raíz (llamados "células madre") y paquetes (llamados "lanzamientos"). Cuando un servidor BOSH tiene los bits necesarios para implementar un sistema de software determinado, se le puede indicar que proceda, como se describe en un manifiesto de implementación de YAML . Luego, BOSH implementa progresivamente "instancias" (VM o contenedores), utilizando canarios para evitar la implementación de configuraciones fallidas.

Una vez que se implementa un sistema de software, BOSH monitorea sus instancias continuamente para permitir detectar instancias fallidas y resucitar las que faltan.

Cuando se cambia un manifiesto de implementación de BOSH, BOSH acepta implementar las modificaciones implícitas procediendo progresivamente, instancia por instancia. Esto significa que BOSH puede actualizar clústeres en vivo posiblemente sin tiempo de inactividad.

Conceptos

Liberación

Una versión de BOSH puede ser un archivo de almacenamiento o un repositorio de git . En ambos casos, describe un sistema de software que se puede implementar con BOSH. Para ello, empaqueta todos los activos binarios relacionados, código fuente, scripts de compilación, propiedades configurables, scripts de inicio y plantillas para archivos de configuración.

Las versiones de BOSH se componen de "paquetes" y "trabajos". A grandes rasgos, los paquetes BOSH proporcionan algo que se puede ejecutar, y los trabajos BOSH describen cómo se configuran y ejecutan estas cosas .

Un paquete BOSH detalla el código fuente necesario, los activos binarios (llamados "blobs") y los scripts de compilación para crear un componente de software determinado. Hay dos formas de proporcionar "blobs" binarios. En una versión de BOSH que se proporciona como un archivo de almacenamiento, los blobs se incluyen directamente. Pero con las versiones de BOSH que se proporcionan como repositorios de git, hacer lo mismo tiende a ser problemático cuando los blobs aumentan de tamaño. Es por eso que una versión de BOSH proporciona un concepto de "almacén de blobs", desde donde se pueden obtener los blobs referenciados. La mayoría de las versiones de BOSH utilizan almacenes de blobs respaldados por buckets públicos de Amazon S3, pero hay otras formas de hacer referencia a un "almacén de blobs" privado o local en una versión de BOSH.

Los paquetes BOSH siempre están sujetos a una fase de compilación, incluso si esto solo extrae archivos de un archivo y los copia en el directorio de destino adecuado. Para compilar un paquete determinado, BOSH genera una instancia de compilación efímera (VM o contenedor) que solo incluye los paquetes y blobs necesarios, según lo declarado por la especificación del paquete. En esta instancia dedicada, BOSH ejecuta el script de compilación y sella el resultado de la compilación en su base de datos, de modo que pueda usarse de manera segura para implementaciones reproducibles.

Los trabajos de BOSH, por otro lado, proporcionan propiedades de configuración (que posiblemente se puedan documentar), plantillas para archivos de configuración y scripts de inicio. Los trabajos de BOSH se refieren a uno o varios paquetes como dependencias. Los trabajos también se sellan en la base de datos BOSH, pero las plantillas para los archivos de configuración se representan en el momento de la implementación, donde se resuelven todas las propiedades de configuración. Estas propiedades de configuración suelen ser direcciones IP, números de puerto, nombres de usuario, contraseñas, nombres de dominio, etc.

Célula madre

Una célula madre BOSH empaqueta los conceptos básicos para crear una nueva instancia (VM o contenedor). Es decir, una célula madre BOSH envía una imagen del sistema operativo junto con un agente BOSH y una copia de monit , que se usa para administrar los servicios (llamados "trabajos") que serán alojados por la instancia. El agente BOSH ayuda a BOSH a comunicarse con la instancia durante todo su ciclo de vida.

El concepto de células madre en BOSH es similar a las imágenes de máquinas virtuales como las AMI de Amazon , pero las células madre BOSH no están diseñadas para especializarse para ningún uso en particular. En cambio, BOSH solo proporciona diferentes células madre para admitir diferentes sistemas operativos (CentOS, Ubuntu o Windows), o diferentes proveedores de IaaS subyacentes (AWS u OpenStack).

El nombre "célula madre" se originó a partir del término biológico "células madre", que se refiere a las células indiferenciadas que pueden crecer en diversos tipos de células posteriormente. De manera similar, las instancias creadas por una célula madre BOSH son idénticas al principio.

Después del inicio, las instancias se configuran con diferentes CPU / memoria / almacenamiento / red y se instalan con diferentes paquetes de software. Por lo tanto, las instancias creadas a partir de la misma célula madre BOSH pueden comportarse de manera diferente.

Agente BOSH

El agente BOSH es un servicio que se ejecuta en todas las máquinas virtuales implementadas por BOSH. Hace lo siguiente:

  • configura la máquina virtual, por ejemplo, configura discos locales, configura y formatea discos adjuntos (secundarios), configura redes
  • acepta solicitudes del director, por ejemplo, pings, solicitudes de gestión de trabajos
  • gestiona trabajos: iniciando, deteniendo y supervisando el estado

Despliegue

Una implementación de BOSH es básicamente un manifiesto de implementación de YAML, donde el usuario describe las versiones de BOSH y las células madre de BOSH que debe usar, y cómo configurar y componer trabajos en grupos de instancias idénticas (históricamente mal llamadas "trabajos" y luego renombradas como "grupos de instancias") . Dentro de estos "grupos de instancias", BOSH puede abarcar instancias idénticas (VM o contenedores) en diferentes zonas de disponibilidad, con el fin de minimizar el riesgo de que todas las instancias caigan al mismo tiempo. Esto es particularmente útil cuando se implementan bases de datos o aplicaciones de alta disponibilidad .

En la mayoría de los casos, los usuarios no trabajan con el manifiesto de implementación como un archivo YAML grande. En cambio, el manifiesto de implementación se divide en archivos más pequeños que son más fáciles de mantener. Estos archivos separados se combinan con herramientas como spiff o spruce, justo antes de que se carguen en el servidor BOSH y se implementen.

En un manifiesto de implementación, todas las propiedades de configuración, declaradas por trabajos de todas las versiones referenciadas, se pueden personalizar. Diferentes trabajos pueden referirse a propiedades de configuración con el mismo nombre, para compartir configuraciones comunes.

Principios fundamentales

BOSH se construyó a propósito para abordar los cuatro principios de la ingeniería de liberación moderna de las siguientes maneras:

Identificabilidad

Ser capaz de identificar todas las fuentes, las herramientas, el entorno y otros componentes que componen una versión en particular. En su concepto de "liberación", BOSH empaqueta todo el código fuente relacionado, los activos binarios, las propiedades configurables, los scripts de compilación y los scripts de inicio. Esto permite a los usuarios rastrear fácilmente lo que realmente se implementa y cómo se ejecuta. Además, BOSH proporciona una forma de capturar los sistemas de archivos raíz que serán la base de las instancias implementadas (VM o contenedores), como imágenes únicas llamadas "células madre". Las emisiones de BOSH y las células madre de BOSH se identifican mediante UUID y se sellan mediante sumas de comprobación SHA-1 .

Reproducibilidad

La capacidad de integrar la fuente, los componentes de terceros, los datos y los externos de implementación de un sistema de software para garantizar la estabilidad operativa. La cadena de herramientas BOSH proporciona un servidor centralizado para operar los sistemas implementados. Este servidor contiene "versiones" de software, imágenes del sistema operativo (llamadas "células madre"), datos persistentes y configuración del sistema. Por lo tanto, se garantiza que una implementación determinada reproducirá un resultado idéntico.

Consistencia

La misión de proporcionar un marco estable para el desarrollo, la implementación, la auditoría y la responsabilidad de los componentes de software. BOSH logra tal consistencia con sus “lanzamientos” de software, que brindan un marco consistente para desarrollar e implementar los sistemas de software. Además, la auditoría y la rendición de cuentas son proporcionadas por el servidor BOSH, que permite a los usuarios ver y realizar un seguimiento de los cambios realizados en los sistemas implementados.

Agilidad

La investigación en curso sobre cuáles son las repercusiones de las prácticas modernas de ingeniería de software en la productividad en el ciclo del software, es decir, la Integración Continua . La cadena de herramientas BOSH se integra bien con las mejores prácticas actuales de ingeniería de software (incluida la entrega continua ) al proporcionar formas de crear fácilmente versiones de software de forma automatizada y actualizar sistemas implementados complejos con comandos simples.

Historia

Diseñado para abordar las deficiencias encontradas en las herramientas disponibles para administrar Cloud Foundry . Chef se usó originalmente, pero estaba limitado en su capacidad para empaquetar, activar / desactivar servidores, limitado en capacidades de monitoreo y autogestión. Originalmente desarrollado para las propias necesidades de Cloud Foundry, pero ahora el proyecto ha crecido hasta ser completamente genérico y puede usarse para la orquestación de otro software como Hadoop , RabbitMQ , MySQL y una plataforma o software de aplicación similar.

Arquitectura

Una instalación de BOSH está formada por varios componentes separados que posiblemente se pueden dividir en diferentes VM o contenedores:

  • Un Director que es el "cerebro" del servidor
  • La base de datos del director , compuesta por una instancia de PostgreSQL , una instancia de Redis y un Blobstore para almacenar paquetes y trabajos compilados.
  • Un monitor de estado que realiza un seguimiento del estado de las instancias (máquinas virtuales o contenedores)
  • Muchos agentes BOSH , uno en cada instancia implementada
  • Un bus de mensajes NATS para conectar el Director, el Health Monitor y todos los agentes BOSH implementados
  • Una CPI (interfaz de proveedor de nube), que es solo un binario ejecutable que se ajusta a alguna API específica

Un entorno administrado por BOSH generalmente se centra en el Director implementado en una VM.

Arquitectura BOSH [4]

Compatibilidad con la nube / plataforma / sistema operativo

BOSH se conecta a la capa de IaaS subyacente a través de una abstracción llamada CPI (interfaz de proveedor de nube). Hay CPI disponibles para Amazon Web Services , ciertas versiones de OpenStack , vSphere , vCloud . Existen algunos CPI mantenidos por la comunidad para Google Compute Engine , Microsoft Azure y CloudStack .

Despliegue

BOSH se puede implementar como una versión de BOSH, lo que puede crear una sorpresa de "huevo o gallina" para los recién llegados.

Un servidor BOSH no es el único software que puede implementar versiones de BOSH. Existe un proyecto de aprovisionamiento de BOSH que puede implementar BOSH en una máquina virtual, un contenedor de Docker o un servidor completo. Este componente lo utiliza el aprovisionador de paquetes BOSH, que crea una caja Vagrant que ejecuta BOSH-lite, que es en lo que la mayoría de los usuarios confían cuando aprenden BOSH.

Gobernancia

Una vez que fue un subcomponente de Cloud Foundry , BOSH ahora es un proyecto de código abierto separado, que tiene como objetivo implementar cualquier software distribuido. BOSH es administrado por Cloud Foundry Foundation . Casi todas las contribuciones a BOSH las realiza Pivotal.

Usuarios

Pivotal utiliza BOSH para organizar Cloud Foundry dentro de Pivotal Cloud Foundry (PCF), así como todos los servicios de datos de Pivotal para Cloud Foundry. Los usuarios públicos anunciados de BOSH y PCF incluyen a Axel Springer, Corelogic, IBM, Monsanto, Philips, SAP y Swisscom.

Distribuciones

BOSH no se distribuye comercialmente como un producto independiente. Se incluye como parte de Pivotal Cloud Foundry , IBM Bluemix y HP Helion Developer Platform , y también es utilizado y respaldado comercialmente por Cloud Credo , Stark & ​​Wayne , Gstack y otros.

Referencias

  1. ^ "Lanzamientos - cloudfoundry / bosh" . Consultado el 3 de agosto de 2020 , a través de GitHub .
  2. ^ "Archivo de LICENCIA" . Consultado el 5 de noviembre de 2019 , a través de GitHub .
  3. ^ "Anuncio de [cf-dev]: BOSH para Windows - cf-dev - Archivos de lista de correo" . listas.cloudfoundry.org . Archivado desde el original el 25 de abril de 2016 . Consultado el 31 de marzo de 2016 .
  4. ^ Fuente de la imagen

enlaces externos

  • Página web oficial
Obtenido de " https://en.wikipedia.org/w/index.php?title=BOSH_(software)&oldid=1044545651 "