Las etiquetas que se agregan a proyectos y plantillas de nube funcionan como etiquetas de restricción cuando se utilizan para hacer coincidir las etiquetas de capacidad en los recursos de infraestructura, los perfiles y las zonas de nube. En el caso de las plantillas de nube, Automation Assembler utiliza esta funcionalidad de coincidencia para asignar recursos a las implementaciones.

Automation Assembler permite utilizar etiquetas de restricción de dos formas principales. La primera manera es cuando se configuran proyectos e imágenes. Puede utilizar etiquetas como restricciones para asociar recursos con el proyecto o la imagen. La segunda es en plantillas de nube en las que las etiquetas especificadas como restricciones se utilizan para seleccionar recursos para las implementaciones. Las restricciones que se aplican a estas dos formas se combinan en las plantillas de nube para formar un conjunto de requisitos de implementación que definen los recursos disponibles para una implementación.

Cómo funcionan las etiquetas de restricción en los proyectos

Al configurar recursos de Automation Assembler, los administradores de nube pueden aplicar etiquetas de restricción en los proyectos. De esta forma, los administradores pueden aplicar restricciones de gobierno directamente en el nivel de proyecto. Todas las restricciones agregadas a este nivel se aplican a todas las plantillas de nube solicitadas para el proyecto aplicable, y estas etiquetas de restricción prevalecen sobre otras etiquetas.

Si hay etiquetas de restricción del proyecto en conflicto con etiquetas de restricción de la plantilla de nube, las etiquetas del proyecto tienen prioridad, lo que permite que el administrador de nube aplique reglas de control. Por ejemplo, si los administradores de nube crean una etiqueta location:london en el proyecto, pero un desarrollador coloca una etiqueta location:boston en la plantilla de nube, la primera tendrá prioridad y el recurso se implementará en la infraestructura que contenga la etiqueta location:london.

Existen tres tipos de etiquetas de restricciones que los usuarios pueden aplicar a los proyectos: red, almacenamiento y extensibilidad. Puede aplicar tantas instancias de cada tipo de etiqueta como sea necesario. Las restricciones del proyecto pueden ser estrictas o flexibles. De forma predeterminada, son estrictas. Las restricciones estrictas permiten aplicar de forma rígida restricciones de implementación. Si no se cumplen una o más restricciones estrictas, se producirá un error en la implementación. Las restricciones flexibles ofrecen una forma de expresar preferencias que se seleccionarán si están disponibles, pero no se producirá un error en la implementación si no se cumplen las restricciones de este tipo.

Cómo funcionan las etiquetas de restricción en las plantillas de nube

En las plantillas de nube, se agregan etiquetas de restricción a los recursos como código de YAML para que coincidan con las etiquetas de capacidad adecuadas que el administrador de nube creó en los recursos, las zonas de nube y los perfiles de red y almacenamiento. Además, existen otras opciones más complejas para implementar etiquetas de restricción. Por ejemplo, puede utilizar una variable para rellenar una o varias etiquetas en una solicitud. Esto le permite especificar una o varias etiquetas en el momento de la solicitud.

Cree etiquetas de restricción mediante tag en un encabezado de restricción del código YAML de la plantilla de nube. Las etiquetas de restricción de los proyectos se agregan a las etiquetas de restricción creadas en las plantillas de nube.

Automation Assembler admite un formato de cadena simple para facilitar el uso de restricciones en los archivos de YAML:

[!]tag_key[:tag_value][:hard|:soft]

De forma predeterminada, Automation Assembler crea una restricción positiva de aplicación estricta. El valor de la etiqueta es opcional, aunque recomendable, como en el resto de la aplicación.

Nota: Solo los delimitadores estrictos o flexibles se admiten oficialmente como extensiones para el formato básico de etiqueta key:value. Si se intentan utilizar otros delimitadores, es probable que se produzcan errores.

El siguiente ejemplo de wordPressWithMySql muestra etiquetas de restricción de YAML que especifican información de ubicación para recursos informáticos.

name: "wordPressWithMySql"
components:
  mysql:
    type: "Compute"
    data:
      name: "mysql"
      # ... skipped lines ...
  wordpress:
    type: "Compute"
    data:
      name: "wordpress"
      instanceType: small
      imageType: "ubuntu-server-1604"
      constraints:
        - tag: "!location:eu:hard"
        - tag: "location:us:soft"
        - tag: "!pci"
      # ... skipped lines ...

Para obtener más información acerca de cómo trabajar con plantillas de nube, consulte Parte 3: Diseñar e implementar la plantilla de Automation Assembler de ejemplo.

Cómo funcionan las restricciones estrictas y flexibles en proyectos y plantillas de nube

Las restricciones en los proyectos y las plantillas de nube pueden ser estrictas o flexibles. El fragmento de código anterior muestra ejemplos de restricciones estrictas y flexibles. De forma predeterminada, todas las restricciones son estrictas. Las restricciones estrictas permiten aplicar de forma rígida restricciones de implementación. Si no se cumplen una o más restricciones estrictas, se producirá un error en la implementación. Las restricciones flexibles expresan preferencias que se aplican si están disponibles, pero no generan errores en la implementación si no se cumplen.

Si tiene una serie de restricciones estrictas y flexibles en un tipo de recurso específico, las restricciones flexibles también pueden servir para decidir. Es decir, si varios recursos cumplen una restricción fuerte, las restricciones flexibles se utilizan para seleccionar el recurso utilizado en la implementación.

Por ejemplo, supongamos que crea una restricción de almacenamiento estricta con una etiqueta de location:boston. Si ningún almacenamiento del proyecto cumple esta restricción, se producirá un error en cualquier implementación relacionada.

Nota: Las restricciones flexibles en las redes se pueden utilizar para seleccionar redes dentro de un perfil de red, pero no afectan a la selección del perfil de red en sí.