BOSH es un proyecto de software de código abierto que ofrece un conjunto de herramientas para la ingeniería de versiones , el despliegue de software y la gestión del ciclo de vida de aplicaciones en servicios distribuidos a gran escala . Este conjunto de herramientas se compone de un servidor (BOSH Director) y una herramienta de línea de comandos . BOSH se utiliza habitualmente para empaquetar , desplegar y gestionar software en la nube . Si bien VMware lo desarrolló inicialmente en 2010 para desplegar Cloud Foundry PaaS , también puede utilizarse para desplegar otro software (como Hadoop , RabbitMQ o MySQL , por ejemplo). BOSH está diseñado para gestionar el ciclo de vida completo de grandes sistemas distribuidos.
Desde marzo de 2016, BOSH puede gestionar implementaciones tanto en servidores Windows [ 3 ] como Linux .
Un director 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 brindar soporte a más proveedores de IaaS subyacentes, BOSH utiliza el concepto de Interfaz de Proveedor de Nube (CPI). Existe una implementación de la CPI para cada uno de los proveedores de IaaS mencionados anteriormente. Normalmente, la CPI se utiliza para implementar máquinas virtuales, pero también puede utilizarse para implementar contenedores .
Existen pocas CPI para desplegar contenedores con BOSH y solo una cuenta con soporte activo. Esta CPI utiliza los contenedores Garden de Pivotal Software (Garden es muy similar a Docker ) en una única máquina virtual, ejecutada por VirtualBox o VMware Workstation . En teoría, cualquier otro motor de contenedores podría ser compatible si se desarrollaran las CPI necesarias.
Debido a que BOSH admite indistintamente implementaciones en máquinas virtuales o contenedores, utiliza el término genérico "instancias" para designarlas. Corresponde al CPI decidir si una "instancia" de BOSH es realmente una máquina virtual o un contenedor.
Flujo de trabajo
Una vez instalado, un servidor BOSH acepta la carga de sistemas de archivos raíz (denominados "stemcells") y paquetes (denominados "releases"). Cuando un servidor BOSH dispone de los componentes necesarios para desplegar un sistema de software determinado, se le puede indicar que proceda, tal como se describe en un manifiesto de despliegue YAML . A continuación, BOSH despliega progresivamente las "instancias" (máquinas virtuales o contenedores), utilizando instancias de prueba para evitar el despliegue de configuraciones fallidas.
Una vez implementado un sistema de software, BOSH supervisa continuamente sus instancias para detectar las que fallan y recuperar las que falten.
Cuando se modifica un manifiesto de despliegue de BOSH, BOSH se encarga de implementar las modificaciones implícitas de forma progresiva, instancia por instancia. Esto significa que BOSH puede actualizar clústeres en funcionamiento prácticamente sin tiempo de inactividad.
Conceptos
Liberar
Una versión de BOSH puede ser un archivo comprimido o un repositorio Git . En ambos casos, describe un sistema de software que se puede implementar con BOSH. Para ello, incluye todos los recursos binarios, el código fuente, los scripts de compilación, las propiedades configurables, los scripts de inicio y las plantillas para los archivos de configuración.
Las versiones de BOSH se componen de "paquetes" y "trabajos". En términos generales, los paquetes de BOSH proporcionan algo que se puede ejecutar, y los trabajos de BOSH describen cómo se configuran y ejecutan estos elementos.
Un paquete BOSH detalla el código fuente necesario, los recursos binarios (llamados "blobs") y los scripts de compilación para construir un componente de software determinado. Hay dos maneras de proporcionar "blobs" binarios. En una versión BOSH que se proporciona como un archivo comprimido, los blobs se incluyen directamente. Pero en las versiones BOSH que se proporcionan como repositorios Git, hacer lo mismo suele ser problemático cuando los blobs son grandes. Por eso, una versión BOSH proporciona el concepto de "almacén de blobs", desde donde se pueden obtener los blobs referenciados. La mayoría de las versiones BOSH utilizan almacenes de blobs respaldados por buckets públicos de Amazon S3, pero hay otras maneras de hacer referencia a un "almacén de blobs" privado o local en una versión BOSH.
Los paquetes BOSH siempre pasan por una fase de compilación, incluso si esta solo extrae archivos de un archivo comprimido y los copia al directorio de destino correspondiente. Para compilar un paquete, BOSH crea una instancia de compilación efímera (máquina virtual o contenedor) que solo incluye los paquetes y blobs necesarios, según lo especificado en el paquete. En esta instancia dedicada, BOSH ejecuta el script de compilación y guarda el resultado en su base de datos, de modo que pueda utilizarse de forma segura para implementaciones reproducibles.
Por otro lado, los trabajos de BOSH proporcionan propiedades de configuración (que pueden documentarse), plantillas para archivos de configuración y scripts de inicio. Los trabajos de BOSH hacen referencia a uno o varios paquetes como dependencias. Los trabajos también se almacenan en la base de datos de BOSH, pero las plantillas para los archivos de configuración se generan en el momento del despliegue, 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
Un paquete BOSH stemcell incluye los elementos básicos para crear una nueva instancia (máquina virtual o contenedor). Concretamente, un paquete BOSH stemcell contiene una imagen del sistema operativo, un agente BOSH y una copia de monit , que se utiliza para gestionar los servicios (denominados "trabajos") que alojará la instancia. El agente BOSH permite que BOSH se comunique con la instancia durante todo su ciclo de vida.
El concepto de stemcell en BOSH es similar al de las imágenes de máquinas virtuales como las AMI de Amazon , pero las stemcells de BOSH no están diseñadas para un uso específico. En cambio, BOSH solo proporciona diferentes stemcells para admitir distintos sistemas operativos (CentOS, Ubuntu o Windows) o distintos proveedores de IaaS subyacentes (AWS u OpenStack).
El nombre «célula madre» proviene del término biológico «células madre», que se refiere a las células indiferenciadas capaces de desarrollarse posteriormente en diversos tipos celulares. De manera similar, las células creadas a partir de una célula madre BOSH son idénticas al principio.
Tras su creación, las instancias se configuran con diferentes recursos de CPU, memoria, almacenamiento y red, y se les instalan distintos paquetes de software. Por lo tanto, las instancias creadas a partir de la misma imagen base de BOSH pueden comportarse de forma diferente.
Agente BOSH
El agente BOSH es un servicio que se ejecuta en cada máquina virtual implementada con BOSH. Realiza lo siguiente:
- Configura la máquina virtual, por ejemplo, configura los discos locales, configura y formatea los discos conectados (secundarios), configura las redes.
- acepta solicitudes del director, por ejemplo, pings, solicitudes de gestión de trabajos
- gestiona trabajos: iniciar, detener y supervisar el estado
Despliegue
Un despliegue de BOSH es básicamente un manifiesto de despliegue YAML, donde el usuario describe las versiones y los archivos base de BOSH que se utilizarán, así como la forma de configurar y agrupar trabajos en conjuntos de instancias idénticas (anteriormente denominadas erróneamente "trabajos" y posteriormente renombradas como "grupos de instancias"). Dentro de estos "grupos de instancias", BOSH puede generar instancias idénticas (máquinas virtuales o contenedores) en diferentes zonas de disponibilidad, con el fin de minimizar el riesgo de que todas las instancias fallen simultáneamente. Esto resulta especialmente útil al desplegar bases de datos o aplicaciones de alta disponibilidad .
En la mayoría de los casos, los usuarios no trabajan con el manifiesto de despliegue como un único archivo YAML. En su lugar, lo dividen en archivos más pequeños que son más fáciles de mantener. Estos archivos separados se combinan mediante herramientas como spiff o spruce, justo antes de subirlos al servidor BOSH y desplegarlos.
En un manifiesto de despliegue, se pueden personalizar todas las propiedades de configuración declaradas por los trabajos de todas las versiones referenciadas. Diferentes trabajos pueden hacer referencia a propiedades de configuración con el mismo nombre para compartir ajustes comunes.
Principios clave
BOSH fue diseñado específicamente para abordar los cuatro principios de la ingeniería de versiones moderna de las siguientes maneras:
Identificabilidad
BOSH permite identificar todos los componentes, herramientas, entorno y demás elementos que conforman una versión específica. En su concepto de "versión", BOSH empaqueta todo el código fuente, los recursos binarios, las propiedades configurables, los scripts de compilación y los scripts de inicio relacionados. Esto permite a los usuarios realizar un seguimiento sencillo de lo que se implementa y cómo se ejecuta. Además, BOSH proporciona una forma de capturar los sistemas de archivos raíz que servirán de base para las instancias implementadas (máquinas virtuales o contenedores), como imágenes individuales denominadas "stemcells". Las versiones y stemcells de BOSH se identifican mediante UUID y se sellan con sumas de verificación SHA-1 .
Reproducibilidad
La capacidad de integrar código fuente, componentes de terceros, datos y elementos 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 almacena versiones de software, imágenes del sistema operativo (denominadas "stemcells"), datos persistentes y la configuración del sistema. Por lo tanto, se garantiza que una implementación determinada reproduzca un resultado idéntico.
Consistencia
La misión de BOSH es proporcionar un marco estable para el desarrollo, la implementación, la auditoría y la rendición de cuentas de los componentes de software. BOSH logra esta consistencia con sus versiones de software, que ofrecen un marco coherente para el desarrollo y la implementación de los sistemas de software. Además, el servidor de BOSH proporciona auditoría y rendición de cuentas, permitiendo a los usuarios visualizar y realizar un seguimiento de los cambios realizados en los sistemas implementados.
Agilidad
La investigación en curso sobre las repercusiones de las prácticas modernas de ingeniería de software en la productividad del ciclo de software, es decir, la integración continua . La cadena de herramientas BOSH se integra con las mejores prácticas actuales de ingeniería de software (incluida la entrega continua ) al proporcionar métodos automatizados para crear versiones de software y actualizar sistemas implementados mediante comandos.
Historia
Diseñado para solucionar las deficiencias de las herramientas disponibles para administrar Cloud Foundry . Originalmente se usaba Chef , pero tenía limitaciones para empaquetar, iniciar y detener servidores, así como para la monitorización y la autogestión. Desarrollado inicialmente para las necesidades de Cloud Foundry, el proyecto se ha convertido en una herramienta completamente genérica y puede utilizarse para la orquestación de otros programas como Hadoop , RabbitMQ , MySQL y plataformas o aplicaciones similares.
Arquitectura
Una instalación de BOSH se compone de varios componentes separados que pueden estar distribuidos en diferentes máquinas virtuales 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 desplegada.
- Un bus de mensajes NATS para conectar al Director, al Monitor de Salud y a todos los agentes BOSH desplegados.
- Una CPI (Interfaz de Proveedor de Nube) es simplemente un binario ejecutable que cumple con una API específica.
Un entorno gestionado por BOSH generalmente se centra en el Director desplegado en una máquina virtual.

Compatibilidad con la nube, la plataforma y el sistema operativo.
BOSH se conecta a la capa IaaS subyacente mediante una abstracción denominada CPI (Cloud Provider Interface). Existen CPI disponibles para Amazon Web Services , ciertas versiones de OpenStack , vSphere y vCloud . También existen CPI mantenidas 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 generar una sorpresa tipo "el huevo o la 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 permite implementar BOSH en una máquina virtual, un contenedor Docker o un servidor físico. Este componente lo utiliza el aprovisionador BOSH Packer, que crea una imagen Vagrant con BOSH-lite, la versión que la mayoría de los usuarios utiliza para aprender BOSH.
Gobernancia
BOSH, que en su día fue un subcomponente de Cloud Foundry , es ahora un proyecto de código abierto independiente cuyo objetivo es desplegar cualquier software distribuido. BOSH está gestionado por la Cloud Foundry Foundation . Casi todas las contribuciones a BOSH provienen de Pivotal.
Usuarios
Pivotal utiliza BOSH para orquestar Cloud Foundry dentro de Pivotal Cloud Foundry (PCF), así como todos los servicios de datos de Pivotal para Cloud Foundry. Entre los usuarios públicos anunciados de BOSH y PCF se incluyen Axel Springer, Corelogic, IBM, Monsanto, Philips, SAP y Swisscom.
Distribuciones
BOSH no se distribuye comercialmente como un producto independiente. Está incluido en Pivotal Cloud Foundry , IBM Bluemix y HP Helion Developer Platform , y también es utilizado y cuenta con soporte comercial por Cloud Credo , Stark & Wayne , Gstack y otros.
Referencias
- ↑ "Versión 283.1.3" . 1 de agosto de 2026. Consultado el 2 de agosto de 2026 .
- ↑ "Archivo LICENSE" . Recuperado el 5 de noviembre de 2019 – vía GitHub .
- ↑ " [ cf-dev ] Anuncio: BOSH para Windows - cf-dev - Archivos de la lista de correo" . lists.cloudfoundry.org . Archivado del original el 25-04-2016 . Recuperado el 31-03-2016 .
- ↑ Fuente de la imagen
Enlaces externos
- Servicios web
- Alojamiento web
- Alojamiento de archivos
- Sistemas de archivos de red
- Almacenamiento en la nube
- Plataformas en la nube
- Servicios de alojamiento en la nube de código abierto
- Software gratuito para computación en la nube.
- Software libre programado en Ruby
- VMware
- Software que utiliza la licencia Apache.