Personalización de instalaciones de software

Completado

Las plantillas de Azure CycleCloud facilitan la configuración de clústeres de HPC mediante la abstracción de detalles de implementación de la infraestructura subyacente, lo que le permite centrarse en la administración de cargas de trabajo. Pero esa carga de trabajo suele tener varias dependencias relacionadas con el software que requieren pasos de personalización adicionales. Afortunadamente, Azure CycleCloud también proporciona un marco para implementar estos pasos gracias a su compatibilidad con tareas de aprovisionamiento y administración de configuración que se aplican directamente a los nodos de clúster.

Los objetivos incluye la necesidad de implementar imágenes personalizadas y usar scripts de configuración desarrollados en local que se han estado usando en el entorno de HPC local. Quiere determinar cómo puede usar las capacidades de Azure CycleCloud para lograr estos objetivos.

Implementación de la administración de configuración con Azure CycleCloud

Azure CycleCloud ofrece tres métodos principales que se pueden combinar de forma arbitraria para personalizar el sistema operativo y el software en los nodos de clúster según los requisitos o preferencias propios:

  • Imágenes personalizadas
  • Proyectos
  • Cloud-Init

Empleo de imágenes personalizadas con Azure CycleCloud

Azure CycleCloud admite los nodos de clúster que ejecutan las distribuciones más comunes de Linux y, en función del programador, Windows Server. Las plantillas integradas están preconfiguradas con los valores predeterminados recomendados, aunque puede elegir imágenes de Azure Marketplace o aprovisionar nodos basados en imágenes personalizadas. Esta última opción sería preferible si quiere minimizar el retraso asociado a la configuración posterior a la implementación del sistema operativo y las dependencias adicionales de las cargas de trabajo de HPC. También podría ser necesario para satisfacer las necesidades empresariales, de seguridad o de cumplimiento.

Las imágenes personalizadas permiten tener un control total sobre el software preinstalado y la configuración inicial del sistema operativo. Su principal desventaja es la sobrecarga asociada al mantenimiento de varias imágenes para dar cabida a diferentes combinaciones de aplicaciones y sus versiones, especialmente en escenarios de desarrollo.

Empleo de proyectos de Azure CycleCloud para la instalación de software

Un proyecto de Azure CycleCloud es una colección de archivos a los que se hace referencia al definir configuraciones de nodos de clúster mediante plantillas. Los proyectos tienen la estructura de directorios siguiente:

\project
      |- project.ini
      |- blobs
      |- templates
      |- specs
      |      | 
      |    default
      |      |- cluster-init
      |            |- scripts
      |            |- files
      |            |- tests
      |      | - chef
      |            |- site-cookbooks
      |            |- data_bag
      |            |- roles

El archivo project.ini contiene los metadatos del proyecto, incluidos su nombre, etiqueta, versión y tipo. Los tipos admitidos incluyen el programador y la aplicación. La primera se usa para instalar e inicializar demonios de programador en nodos principales y nodos de ejecución, mientras que el segundo define cargas de trabajo de clúster.

El directorio blobs contiene blobs de proyecto, como archivos binarios de un proyecto de código abierto que se pueden redistribuir libremente, y blobs de usuario, que deben excluirse de la redistribución del proyecto por las restricciones de licencia.

El directorio templates contiene plantillas, mientras que el directorio specs hospeda especificaciones que definen las configuraciones que se van a aplicar a los nodos de clúster de destino.

Nota:

Por ejemplo, un proyecto de Slurm contiene, como mínimo, dos directorios specs: uno para los nodos principales del programador y otro para los nodos de ejecución.

Dentro del directorio specs, hay dos subdirectorios de nombre cluster-init y custom Chef. Cluster-init contiene scripts que se ejecutan automáticamente en el nodo de destino. Archivos de datos sin procesar que se copian en el nodo de destino y pruebas que se ejecutarán cuando se inicie un clúster en el modo de prueba. El subdirectorio custom Chef contiene archivos específicos de Chef, incluidos los archivos cookbook-, data bag- y role-definition. Puede usar cookbooks y recetas de Chef para configurar nodos. Las especificaciones de cluster-init se asignan a los roles y las guías paso a paso de Chef.

Nota:

Azure CycleCloud usa Chef como herramienta de administración de configuración para preparar y configurar cada nodo. CycleCloud usa Chef en un modo independiente que no depende de un servidor de Chef centralizado. En su lugar, todas las guías paso a paso destinadas a los nodos de clúster administrados se descargan del almacén durante la fase de arranque del sistema operativo. En ese momento, Chef procesa la lista de recetas definidas en las especificaciones de cluster-init del nodo, con lo que convierte de hecho la máquina virtual subyacente en un nodo de HPC activo.

Para aprovisionar un clúster basado en un proyecto, debe cargar el contenido del proyecto en un almacén de Azure CycleCloud. Luego, cada vez que se inicia el nodo de destino, descarga automáticamente los archivos de proyecto necesarios del almacén y procesa las especificaciones necesarias.

Empleo de cloud-init con Azure CycleCloud

Azure CycleCloud admite cloud-init como una manera de configurar nodos de clúster durante la fase de arranque, antes de que se apliquen las especificaciones relacionadas con el proyecto. Esto proporciona un método cómodo para enfrentarse a cualquier dependencia relacionada con la infraestructura o el software, como la configuración de la red o la aplicación de actualizaciones de paquetes del sistema operativo.

Aunque se puede definir la configuración de cloud-init mediante una plantilla, puede hacerlo directamente desde la interfaz gráfica de Azure CycleCloud. Al crear o editar un clúster, va a encontrar la configuración pertinente en la pestaña con la etiqueta Cloud-Init, donde puede especificar los scripts de cada tipo de nodo.

Nota:

Puesto que cloud-init se ejecuta antes que cualquier especificación de proyecto de CycleCloud, el programador y la configuración que Azure CycleCloud aplica a un nodo pueden sobrescribir los cambios realizados mediante cloud-init. Si necesita asegurarse de que los comandos se ejecuten una vez instalado el programador, debe usar las especificaciones del proyecto de Azure CycleCloud en su lugar.