Edición local del manifiesto del catálogo
El archivo de manifiesto del catálogo especifica la información sobre su solución incorporada que desea compartir con los usuarios a través de un catálogo. Puede facilitar información sobre licencias y conformidad, realizar ajustes específicos y proporcionar descripciones sobre la finalidad prevista de su producto.
¿Prefiere utilizar la consola para editar los detalles de su catálogo? Puede realizar las selecciones siguiendo el asistente proporcionado y, a continuación, exportar el archivo de manifiesto para añadirlo a su repositorio de fuentes. Si estás apilando arquitecturas desplegables en un proyecto, el manifiesto del catálogo se crea para ti cuando añades tus arquitecturas a un catálogo privado desde tu proyecto.
Asignación de detalles del catálogo al archivo de manifiesto
Para ayudar a visualizar cómo se muestra a los usuarios el contenido añadido al archivo de manifiesto, vea los siguientes ejemplos que muestran la relación entre ibm_catalog.json y la página de detalles del catálogo.
Veamos cómo se definen el nombre, la descripción, las características y las variaciones de la arquitectura desplegable en el archivo de manifiesto del catálogo y cómo ve el usuario la información en la página de detalles del catálogo.
Veamos cómo se utiliza la lista de características de la variación para ayudar a los usuarios a comparar variaciones en función de cómo se define en el archivo de manifiesto del catálogo.
Veamos dónde se especifican los permisos y los detalles del diagrama de arquitectura en el archivo de manifiesto del catálogo y cómo se muestran en la página de detalles del catálogo.
Y, si su arquitectura cumple un nivel específico de conformidad que se verifica con resultados de inventario mediante Workload Protection, puede reclamar esa conformidad por variación. En el archivo ibm_catalog.json se define cómo
la arquitectura cumple un determinado nivel de conformidad especificando la política Workload Protection. También debe desplegar los recursos que crea su arquitectura, ya que Workload Protection utiliza esos recursos desplegados para verificar
la conformidad. Para obtener más información, consulte Gestión de la información de cumplimiento para su arquitectura desplegable.
Vea en el siguiente ejemplo cómo se muestra a los usuarios la información de cumplimiento definida en el archivo de manifiesto.
Editar el manifiesto
Para editar tu manifiesto localmente, puedes seguir los siguientes pasos.
- Copie el siguiente archivo de manifiesto de ejemplo en un editor local.
- Nombra el archivo
ibm_catalog.json. - Añada sus configuraciones preferidas en el archivo utilizando el manifiesto de ejemplo como guía. Para obtener más información sobre cada valor, consulte los valores disponibles.
- Añada el archivo a la carpeta raíz de su repositorio de código fuente.
- Añada su arquitectura desplegable a su catálogo.
Si su arquitectura desplegable ya está incorporada a un catálogo privado, puede descargar el manifiesto desde la consola.
Ejemplo de archivo de manifiesto
El siguiente fragmento de código puede utilizarse como plantilla.
{
"products": [
{
"name": "",
"label": "",
"product_kind": "",
"tags": [
"tag 1",
"tag 2"
],
"keywords": [
"keyword 1",
"keyword 2",
"keyword 3"
],
"short_description": "Short description of your product.",
"long_description": "A longer description of your product.",
"offering_docs_url": "URL",
"offering_icon_url": "URL or emebbed image",
"provider_name": "Community",
"module_info": {
"works_with": [
{
"catalog_id": "",
"name": "module name",
"kind": "terraform",
"version": "0.1.0",
"flavor": "Variation name"
}
]
},
"support_details": "Explanation of support.",
"features": [
{
"title": "Feature 1 title"
"description": "Feature 1 description"
},
{
"title": "Feature 2 title"
"description": "Feature 2 description"
}
],
"flavors": [
{
"label": "Display name",
"name": "Programatic name",
"index": 1,
"install_type": "Install type",
"working_directory": "Directory path",
"usage_template": "template",
"scripts": [
{
"type": "ansible",
"short_description": "Short description of what your script is intended to do.",
"path": "Path to script location.",
"stage": "The stage. For example, pre.",
"action": "The action. For example, validate."
}
],
"change_notices": {
"breaking": [
{
"title": "Title of breaking change",
"description": "Description of the change."
}
],
"new": [
{
"title": "Title of new feature",
"description": "Description of the new feature or capability."
}
],
"update": [
{
"title": "Title of general update",
"description": "Description of the general update."
}
]
},
"compliance": {
"authority": "scc-v3",
"controls": [
{
"profile": {
"name": "Security and Compliance Center profile name",
"version": "Profile version"
},
"names": [
"Control name 1 e.g. AC-2(a)",
"Control name 2",
"Control name 3"
]
}
]
},
"configuration": [
{
"key": "key type e.g. ssh_key",
"required": true
},
{
"key": "Key type e.g. ibmcloud_api_key",
"required": true,
"type": "The data type"
}
],
"outputs": [
{
"description": "Output description",
"key": "key"
},
{
"description": "Output description",
"key": "key"
}
],
"dependencies": [
{
"catalog_id": "ID",
"id": "ID",
"name": "Product programmatic name",
"kind": "Format kind",
"version": "Versions or range of versions",
"flavors": [
"Variation name 1",
"Variation name 2",
"Variation name 3"
],
"install_type": "fullstack or extension",
}
],
"iam_permissions" [
{
"role_crns": [
"CRN 1 e.g. crn:v1:bluemix:public:iam::::serviceRole:Manager",
"CRN 2 e.g. crn:v1:bluemix:public:iam::::role:Administrator"
],
"service_name": "Programatic service name e.g. is.vpc"
}
],
"licenses": [
{
"name": "License name",
"smref": "Link to the license"
}
],
"schematics_env_values": {
"value": "value",
"smref": " "
},
"architecture": {
"descriptions": " ",
"features": [
{
"title": "Feature 1 title",
"description": "Feature 1 description"
},
{
"title": "Feature 1 title",
"description": "Feature 1 description"
}
],
"diagram": {
"caption": "Diagram caption",
"url": "Link to diagram or embedded image",
"metadata": []
},
"description": "Description of the diagram"
}
}
]
}
]
}
Valores disponibles
Las siguientes secciones incluyen información sobre cada valor al que se puede hacer referencia en su archivo de manifiesto.
Productos
El valor products indica un array de productos de tamaño uno o más. Si existe un archivo de manifiesto de catálogo en la raíz de su repositorio, sólo se podrán importar los productos que contenga el archivo. Los productos se importan de uno
en uno. Los siguientes valores pueden incluirse en el nivel products:
label
El nombre del producto. Este valor debe coincidir con el nombre para mostrar que proporcionó durante la incorporación.
name
El nombre programático del producto.
version
La versión del producto en formato SemVer, incluida la versión principal, la versión secundaria y la revisión, por ejemplo, 1.0.0. Este valor también puede especificarse cuando el producto se incorpora a un catálogo.
product_kind
El tipo de producto que estás incorporando. Los valores válidos son software, módulo o solución. Una solución se conoce también como arquitectura desplegable.
keywords
Conjunto de palabras o frases específicas que un usuario podría intentar buscar.
short_description
Un resumen conciso de lo que es su producto y su valor.
long_description
Una descripción detallada de su producto que explique el valor y las ventajas del producto para los usuarios.
provider_name
Los usuarios pueden filtrar el catálogo por el proveedor de un producto. Cuando se incorpora un producto a un catálogo privado, el nombre del proveedor se establece por defecto en Community. Sin embargo, puede personalizar este
campo para que muestre el nombre de su empresa u organización. IBM es un valor reservado y sólo puede utilizarse para los productos de construcción IBM.
offering_docs_url
Un enlace a la documentación sobre el producto a la que pueden acceder los usuarios.
offering_icon_url
Un enlace a URL donde se encuentra el icono que desea que aparezca en la página de entrada del catálogo del producto.
support_details
Información de soporte en formato markdown que puede incluir contactos de soporte, ubicaciones de soporte y métodos de soporte.
features
Encabezado de sección dentro de products para detalles que destacan los procesos, capacidades y resultados del producto. Estas características a nivel de producto se enumeran en la página de entrada de su catálogo con la descripción
de su producto. Por ejemplo, las características pueden incluir requisitos de CPU, funciones de seguridad, etc. Cada entrada se define como una matriz, tal y como se muestra en el ejemplo de manifiesto de la sección anterior. Los siguientes
valores pueden incluirse en la sección features:
features[].title- El nombre de la función.
features[].description- Una descripción concisa de la característica.
Módulos
El valor module_info indica información sobre otros productos con los que la arquitectura desplegable es compatible. Los siguientes valores pueden incluirse en la sección module_info:
works_with
Cabecera de sección para obtener información sobre un producto singular compatible con la arquitectura desplegable. Los siguientes valores pueden incluirse en la sección works_with:
works_with[].catalog_id(opcional)- ID del catálogo que alberga el producto. Si no se especifica, el catálogo IBM Cloud es el predeterminado.
works_with[].id(opcional)- ID del producto. El ID no es necesario si se establece el valor
name. works_with[].name(opcional)- Nombre programático del producto que funciona con la arquitectura desplegable.
works_with[].kind- El formato del módulo que funciona con su arquitectura desplegable. La mayoría de las veces se trata de
terraform. works_with[].version- Versión o gama de versiones del producto que funcionan con la arquitectura desplegable en formato SemVer.
works_with[].flavors[](opcional)- Los nombres programáticos de las variaciones compatibles. Las variaciones se incorporan individualmente a un catálogo y reciben un número de versión. Un ejemplo de nombre de variación podría ser
standardoadvanced.
Variantes
Cabecera de sección para obtener información sobre las variaciones de la arquitectura desplegable. Los sabores se conocen ahora como variaciones de la consola. Los siguientes valores pueden incluirse en el nivel flavors:
label
Nombre de visualización de la variación.
name
Variación nombre programático.
short_description
Una breve descripción de esta versión de la variación.
index
El orden en que aparecen las variaciones en el listado del catálogo.
working_directory
Para un directorio de trabajo que está en el nivel raíz de su repositorio, no necesita especificar el directorio de trabajo. Si no está en la raíz, entonces liste la ruta desde la raíz de su repositorio. Por ejemplo, ./examples/.
usage
Información sobre cómo integrar la arquitectura o ejecutarla localmente a través de Terraform.
usage_template
Similar a usage. Con una plantilla puede utilizar variables como un marcador de posición donde los valores pueden ser sustituidos. La cadena se almacena en la propiedad usage.
| Variable de plantilla | Valor de sustitución |
|---|---|
| ${{version}} | La cadena de versiones de esta variación o sabor. |
| ${{flavor}} | El nombre programático de la variación o sabor. |
| ${{kind}} | El tipo de aplicación. I.e. terraform. |
| ${{id}} | El ID de la oferta o del producto. |
| ${{name}} | El nombre programático de la oferta o del producto. |
| ${{catalogID}} | El identificador del catálogo en el que se encuentra la oferta o el producto. |
| ${{workingDirectory}} | El directorio de trabajo del sabor o variación. |
licenses
Encabezado de sección dentro de la sección flavors que proporciona información sobre los acuerdos de licencia de usuario final que los usuarios deben aceptar al instalar el producto. Los acuerdos de licencia se añaden al Acuerdo
de servicios de IBM Cloud.
{
"id": "string, license id",
"name": "string, license display name",
"type": "string, type of license, e.g. Apache xxx",
"url": "string, URL for the license text",
"description": "string, license description"
}
Los siguientes valores pueden incluirse en la sección licenses:
licenses[].id- La identificación de la licencia.
licenses[].name- El nombre de la licencia.
licenses[].type- Tipo de licencia. Por ejemplo, Apache.
licenses[].url- A URL donde el usuario puede acceder al acuerdo de licencia.
licenses[].description- Descripción de la licencia.
compliance
Encabezado de sección dentro de la sección flavors que indica qué controles de conformidad satisface la arquitectura con la configuración de instalación predeterminada. La evaluación y validación de las alegaciones presentadas
se completa en Workload Protection.
El siguiente ejemplo muestra la estructura JSON para la sección compliance:
"flavors": [{
"compliance": {
"authority": "scc-wp-v1",
"profiles": [{
"profile_name": "",
"profile_version": ""
}],
"controls": [{
"profile": {
"name": "",
"version": ""
},
"names": []
}]
}
}]
Puede enumerar varias políticas en su archivo JSON de manifiesto de catálogo, pero sólo la primera política se añade a su información de cumplimiento en un catálogo privado.
Los siguientes valores pueden incluirse en la sección compliance:
compliance.authority- Workload Protection v1 es la única autoridad aceptada. Esto se escribe programáticamente como
scc-wp-v1. compliance.profiles[]- Conjunto de políticas que contienen los controles reclamados. Puedes consultar las políticas predefinidas en Workload Protection.
compliance.profiles[].profile_name- El nombre de la política. Por ejemplo,
NIST. Encontrará el nombre de la póliza en Workload Protection. compliance.profiles[].profile_version- La versión de la política. Por ejemplo,
1.0.0. Encontrará la versión de la política en Workload Protection. compliance.controls[]- Conjunto de controles reclamados en esta variación. El manifiesto del catálogo acepta una matriz de controles que puede reclamar especificando el nombre del perfil de un control, la versión del perfil y el nombre del control.
compliance.controls[].profile- Objeto que indica que está añadiendo controles de una política específica.
compliance.controls[].profile.name- El nombre de la política del control reclamado. Por ejemplo,
NIST. Encontrará el nombre de la póliza en Workload Protection. compliance.controls[].profile.version- La versión de la política. Por ejemplo,
1.0.0. Encontrará la versión de la política en Workload Protection. compliance.controls[].names[]- Matriz de nombres de controles reclamados. Por ejemplo:
["CM-7(b)", "AC-2(a)"].
Si ha incluido controles en el archivo "Léame" y en el archivo de manifiesto del catálogo, tendrá prioridad el archivo de manifiesto. La mejor práctica consiste en asegurarse de que los controles que figuran en el archivo de manifiesto del catálogo coinciden con los controles del archivo Léame.
change_notices (opcional)
Una lista de los tres tipos de cambios de los que puede querer alertar a sus usuarios cuando publique una nueva versión de su arquitectura desplegable. Puede especificar breaking changes, new features y general updates.
Los cambios que rompen son aquellas actualizaciones que rompen la funcionalidad que estaba disponible a través de una versión anterior. Las nuevas características destacan cualquier nueva funcionalidad que un usuario pueda encontrar con
la nueva versión. Las actualizaciones abarcan cualquier cambio que desee destacar a un usuario, como un comportamiento modificado que no rompa necesariamente la funcionalidad existente o cambios que faciliten el uso de la arquitectura
desplegable.
"change_notices": {
"breaking": [
{
"title": "",
"description": ""
}
],
"new_features": [
{
"title": "",
"description": ""
}
],
"updates": [
{
"title": "",
"description": ""
}
]
}
iam_permissions (opcional)
Para obtener una lista de todos los permisos de IAM necesarios para que un usuario trabaje con su versión de arquitectura desplegable. La información de permisos de IAM incluye el nombre programático del servicio que se requiere y una lista de CRN para los roles que se necesitan. Si crea su archivo de manifiesto de catálogo desde la interfaz de usuario, los CRN ya están incluidos.
El siguiente ejemplo muestra la estructura JSON para la sección iam_permissions:
"flavors": [{
"iam_permissions": [{
"service_name": "IAM defined service name",
"notes": "Optional notes about this permission",
"role_crns": ["crn:v1:..."],
"resources": [{
"name": "resource name",
"description": "resource description",
"role_crns": ["crn:v1:..."]
}]
}]
}]
Los siguientes valores pueden incluirse en la sección iam_permissions:
iam_permissions[].service_name- Nombre programático del servicio al que deben tener acceso los usuarios.
iam_permissions[].notes(opcional)- Proporciona más información a los usuarios sobre este rol o por qué está incluido. Por ejemplo,
This role is only required if you are using IBM Key Protect for encryption. iam_permissions[].role_crns[]- Cabecera de sección para indicar una lista de roles de acceso.
iam_permissions[].resources[]- Conjunto de recursos para un permiso.
iam_permissions[].resources[].name- El nombre del recurso.
iam_permissions[].resources[].description- Descripción del recurso.
iam_permissions[].resources[].role_crns[]- Cabecera de sección para incidir en una lista de roles de acceso.
architecture
Cabecera de sección dentro de la sección flavors que especifica información de alto nivel sobre la versión de arquitectura desplegable que incluye una descripción, características y un diagrama. Pueden proporcionarse múltiples
diagramas, con subtítulos.
El siguiente ejemplo muestra la estructura JSON para la sección architecture:
"flavors": [{
"architecture": {
"features": [{
"title": "",
"description": ""
}],
"diagrams": [{
"diagram": {
"caption": "",
"url": "",
"type": "image/svg+xml",
"thumbnail_url": ""
},
"description": ""
}]
}
}]
Los siguientes valores pueden incluirse en la sección architecture:
architecture.features[]- Conjunto de datos que destaca los procesos, las capacidades y los resultados de la versión o, en su caso, de la variante de arquitectura. Cuando se realiza el onboarding mediante la consola, estos detalles se denominan destacados. Estos detalles aparecen en el cuadro de selección de variaciones dentro de su entrada de catálogo. Si tu producto cuenta con varias variantes de arquitectura, los usuarios pueden comparar las características de cada variante para decidir cuál se adapta mejor a sus necesidades.
architecture.features[].title- Nombre de la función.
architecture.features[].description- Descripción de la función.
architecture.diagrams[]- Conjunto de diagramas de arquitectura que incluye la leyenda del diagrama, la dirección URL para incrustar el SVG del diagrama, los metadatos del diagrama, como el ID del elemento y la descripción del elemento, y la descripción de la arquitectura de referencia.
architecture.diagrams[].diagram- Objeto que contiene información sobre un diagrama de arquitectura singular.
architecture.diagrams[].diagram.url- El URL al SVG del diagrama. También puede incrustar un SVG.
architecture.diagrams[].diagram.api_url- La API de gestión de catálogos URL al diagrama.
architecture.diagrams[].diagram.url_proxy- Objeto que contiene información sobre una imagen proxy.
architecture.diagrams[].diagram.url_proxy.url- El
URLde la imagen a la que se hace referencia. architecture.diagrams[].diagram.url_proxy.sha- El identificador
shade la imagen. architecture.diagrams[].diagram.caption- Una etiqueta corta para el diagrama de arquitectura.
architecture.diagrams[].diagram.type- El tipo de soporte.
architecture.diagrams[].diagram.thumbnail_url- Un enlace a una miniatura del diagrama.
architecture.diagrams[].description- Información sobre el diagrama de arquitectura en su conjunto, incluido el esquema del sistema y las relaciones, restricciones y límites entre los componentes de la arquitectura desplegable.
dependencies
Cabecera de sección dentro de la sección flavors para obtener una lista de productos compatibles con la arquitectura desplegable. Las dependencias pueden ser obligatorias u opcionales. Una dependencia incluida aquí no puede
añadirse también a la sección swappable_dependencies. La información incluye el nombre programático del producto y las versiones del producto. Opcionalmente, puede incluir el ID del catálogo y una lista de variaciones dependientes.
El siguiente ejemplo muestra la estructura JSON para la sección dependencies:
"flavors": [{
"dependencies": [{
"catalog_id": "catalog ID",
"id": "offering ID",
"name": "offering name",
"kind": "terraform",
"version": "SemVer version e.g. 3.1.2",
"flavors": ["flavor name"],
"install_type": "fullstack or extension",
"optional": true,
"description": "Description of optional dependency",
"on_by_default": false,
"input_mapping": [{
"dependency_output": "kms_instance_crn",
"version_input": "existing_kms_instance_crn"
}]
}]
}]
Puede proporcionar información sobre las arquitecturas necesarias que cumplen una dependencia y las arquitecturas opcionales que funcionan con las suyas al incorporar su arquitectura desplegable a un catálogo. Para obtener más información, consulte Ampliación de una arquitectura desplegable durante la incorporación.
Los siguientes valores pueden incluirse en la sección dependencies:
dependencies[].catalog_id(opcional)- ID del catálogo que alberga el producto. Si no se especifica, el catálogo IBM Cloud es el predeterminado.
dependencies[].id(opcional)- El ID del producto. El ID no es necesario si se establece el valor
name. dependencies[].name(opcional)- Nombre programático del producto.
dependencies[].kind- El tipo de formato de la dependencia. Utilice
stackpara una arquitectura desplegable formada por arquitecturas desplegables agrupadas en las que exista un archivo de configuración de pila. Utiliceterraformpara arquitecturas desplegables compuestas únicamente por uno o varios módulos. dependencies[].version- Una versión o rango de versiones a incluir como dependencias en formato SemVer.
dependencies[].flavors[](opcional)- Matriz de nombres de variaciones con las que la arquitectura es compatible.
dependencies[].default_flavor(opcional)- Especifica una variación por defecto que se selecciona para sus usuarios cuando múltiples variaciones son compatibles o necesarias para desplegar su arquitectura. Sus usuarios pueden seleccionar una variación diferente si está incluida
en la propiedad
flavors. El valor es elnamede la variación. Para utilizar esta propiedad, también debe establecerdependency_version_2entrue. Si no se establece, no se proporciona una variación por defecto a los usuarios. dependencies[].optional- Especifica si la relación es necesaria o no. El valor predeterminado es
false. Para utilizar esta propiedad, también debe establecerdependency_version_2entrue. dependencies[].description(opcional)- Proporcione una descripción de una arquitectura opcional que sea compatible con la suya, para que los usuarios puedan entender cómo funciona la arquitectura dentro de la solución más amplia y por qué podrían querer incluirla. Para utilizar
esta propiedad, también debe establecer
dependency_version_2entrue. dependencies[].on_by_default- Especifica si se selecciona una dependencia opcional para los usuarios cuando añaden su arquitectura desplegable a un proyecto desde un catálogo. Los usuarios pueden anular la selección de la arquitectura si no la desean. El valor predeterminado
es
false. Para utilizar esta propiedad, también debe establecerdependency_version_2yoptionalentrue. dependencies[].input_mapping[](opcional)- Matriz que especifica los valores a los que se hace referencia entre la arquitectura compatible y la arquitectura que se está incorporando. Para utilizar esta propiedad, también debe establecer
dependency_version_2entrue. dependencies[].input_mapping[].dependency_outputodependencies[].input_mapping[].dependency_input(opcional)- Especifica la variable de la dependencia a la que hace referencia la arquitectura que está incorporando. El valor es el nombre de la variable de la relación. Sólo debe proporcionarse una de estas dos propiedades. Si
reference_versionse establece entrue, entonces esta variable hace referencia a la variableversion_inputde la arquitectura que está incorporando. dependencies[].input_mapping[].version_input(opcional)- Especifica el nombre de la variable de entrada en la arquitectura que está incorporando que hace referencia al valor
dependency_outputodependency_input. Sireference_versionse establece entrue, entonces la variabledependency_inputhace referencia a la variableversion_inputde la arquitectura que está incorporando. dependencies[].input_mapping[].value(opcional)- Especifica el valor preestablecido para una entrada de la arquitectura que está incorporando (
version_input) o su dependencia (dependency_input). El valor que se especifica aquí sólo se utiliza si se proporciona unversion_inputodependency_input, y no se proporcionadependency_output. Si se proporcionaversion_input, cuando un usuario añada la arquitectura y su dependencia a un proyecto, la arquitecturaversion_inputse preajustará al valor especificado aquí. Si se proporcionadependency_input, cuando un usuario añada la arquitectura y su dependencia a un proyecto, la dependenciadependency_inputse preajustará al valor especificado aquí. dependencies[].input_mapping[].reference_version(opcional)- Indica el flujo de referencias entre la arquitectura que estás incorporando y su dependencia. El valor predeterminado es
false. El comportamiento por defecto es que la entrada de la arquitectura (version_input) haga referencia a una entrada o salida de la dependencia (dependency_inputodependency_output). Cuando este indicador está entrue,dependency_inputhace referencia a un valor deversion_input.
dependency_version_2 (opcional)
Igual que en la sección dependencies, dependency_version_2 Especifica que la gestión de dependencias actualizada se utiliza con esta arquitectura desplegable. Si utiliza la propiedad optional o las
secciones input_mapping dentro de la sección dependencies, establezca este valor en true. Si no es así, configúralo en false. Si esta propiedad se establece en true, todas
las dependencias que tienen la propiedad optional establecida en false son necesarias para desplegar la arquitectura que está incorporando.
swappable_dependencies (opcional)
Cabecera de sección para obtener una lista de productos compatibles con la arquitectura desplegable. A diferencia de la matriz dependencies, los productos de esta sección son intercambiables. El usuario puede elegir qué producto
desea utilizar para satisfacer la dependencia. Las dependencias intercambiables pueden ser obligatorias u opcionales. Una dependencia incluida aquí no puede añadirse también a la matriz dependencies. La información incluye
el nombre programático del producto y las versiones del producto. Opcionalmente, puede incluir el ID del catálogo y una lista de variaciones dependientes. Para utilizar esta propiedad, también debe establecer dependency_version_2 en true.
{
"optional": "true or false",
"name": "Name for this group of swappable dependencies",
"default_dependency": "the name of the dependency that is selected by default",
"dependencies": [
{
"name": "offering name",
"id": "offering ID",
"kind": "terraform",
"version": "SemVer version e.g. 3.1.2",
"flavors": [
"flavor name"
],
"install_type": "fullstack or extension",
"catalog_id": "catalog ID",
"input_mapping": [
{
"dependency_output": "kms_instance_crn",
"version_input": "existing_kms_instance_crn"
}
]
},
{
"name": "offering name",
"id": "offering ID",
"kind": "terraform",
"version": "SemVer version e.g. 3.1.2",
"flavors": [
"flavor name"
],
"install_type": "fullstack or extension",
"catalog_id": "catalog ID",
"input_mapping": [
{
"dependency_output": "kms_instance_crn",
"version_input": "existing_kms_instance_crn"
}
]
}
]
}
Los siguientes valores pueden incluirse en la sección swappable_dependencies:
swappable_dependencies[].name(opcional)- Se utiliza cuando la arquitectura se incorpora a un catálogo para ayudarle a identificar el grupo específico de
swappable_dependencies. swappable_dependencies[].default_dependency(opcional)- La dirección
namede una de las dependencias del grupo que se selecciona por defecto para los usuarios. swappable_dependencies[].dependencies- Matriz de dependencias que son intercambiables dentro de este grupo. Los valores de esta matriz son los mismos que los documentados en la sección
dependenciessección
release_notes_url
URL a las notas de publicación de la arquitectura.
configuration
Cabecera de sección dentro de la sección flavors que especifica la configuración de las variables de despliegue para una variación específica. Los tipos de datos de catálogo se utilizan para ampliar los tipos nativos y facilitar
una mejor experiencia de usuario cuando se trabaja en la consola IBM Cloud. Si está ejecutando su código en una máquina local o en otro entorno, las variables no se utilizan. Un ejemplo podría ser un tipo de catálogo de password que se utiliza para ampliar las capacidades de una variable Terraform definida con un tipo de string para que sea tratada como sensible en la interfaz de usuario.
El siguiente ejemplo muestra la estructura JSON para la sección de configuración:
"flavors": [{
"configuration": [{
"key": "deployment_variable_name",
"type": "string",
"default_value": "default value",
"description": "Description shown to users",
"display_name": "Display Name",
"required": true,
"hidden": false,
"options": ["option1", "option2"],
"custom_config": {
"type": "widget_id",
"grouping": "Target",
"grouping_index": 1
},
"value_constraints": [{
"type": "regex",
"value": "^.{12,30}$",
"description": "Must be between 12 and 30 characters"
}]
}]
}]
Los siguientes valores pueden incluirse en la sección configuration:
configuration[].key-
La clave de configuración. El valor debe coincidir con el nombre de una variable de despliegue.
configuration[].type-
Tipo de entrada que un cliente puede definir o seleccionar. El tipo de datos debe ser compatible con el servicio de gestión de catálogos. Los tipos nativos de Terraform se asignan a algunos de los tipos soportados. Por ejemplo, el tipo de Terraform
mapequivale aobject. El tipo de Terraformlistequivale aarray. Un tipo de Terraformstringcon un atributo sensible equivale apassword. Los clientes que consumen su arquitectura desplegable deben proporcionar valores para el tipo de entrada que usted define en el manifiesto del catálogo.Tipos predefinidos admitidos:
booleanrequiere que los usuarios introduzcan una cadenatrueofalse.floatrequiere un punto decimal de los usuarios.intrequiere la introducción de un número entero por parte de los usuarios.numberrequiere un valor numérico. El tiponumberpuede representar tanto números enteros como valores fraccionarios como4.56.passwordrequiere la introducción de una cadena por parte de los usuarios. La cadena se redacta en la consola y los registros.stringrequiere una secuencia de caracteres Unicode que representen texto. Puede incluir opcionalmente una cadena aleatoria para añadirla como sufijo, lo que ayuda a evitar colisiones de nombres para cadenas que se utilizan como prefijos o como nombres base. También puede especificar la longitud de esta cadena aleatoria. La cadena generada se escribe en minúsculas, de a a z, sin caracteres especiales y precedida de un guión, por ejemplo,myString-wx. Si también se indica un valor por defecto, se añade el sufijo. Si no se indica ningún valor por defecto, el valor será el sufijo sin el guión. Por ejemplo:
"random_string": { "length": 2 }objectrequiere que los usuarios introduzcan un objeto Terraform. Para obtener más información, consultemap.
Los tipos predefinidos requieren la introducción manual de datos por parte de los usuarios.
Tipos personalizados admitidos:
arrayrequiere una lista de valores separados por una coma.regionrequiere que el usuario seleccione de una lista desplegable una región para desplegar la arquitectura desplegable. Puede filtrar las regiones disponibles para los usuarios finales. Por ejemplo, puede especificarcountry_id:us,ca,jpen el filtro Región para limitar las regiones disponibles a esos países. Para más información, véase Sintaxis de filtrado.textarearequiere que los usuarios introduzcan texto que puede dividirse en varias líneas. Por ejemplo, una descripción.vpcrequiere que los usuarios seleccionen una VPC por su nombre en una lista desplegable. La salida es el nombre o ID de la VPC que requiere su plantilla.vpc ssh keyrequiere que los usuarios seleccionen una clave SSH VPC para autenticarse en una máquina virtual.clusterrequiere que los usuarios seleccionen un clúster Kubernetes Service o Red Hat OpenShift. El resultado es el ID del clúster.power iaasrequiere que los usuarios seleccionen una instancia de Power Virtual Server.resource grouprequiere que los usuarios seleccionen un grupo de recursos. La salida es el ID, nombre o CRN del grupo de recursos.multi-line secure valuerequiere que los usuarios introduzcan texto que puede dividirse en varias líneas, que se redacta en la consola y los registros. Por ejemplo, si se requiere una clave larga, el valor se oculta en los espacios de trabajo.schematics workspacerequiere que los usuarios seleccionen un espacio de trabajo específico de una lista desplegable. Esta lista se filtra dinámicamente en función de las dependencias definidas en la arquitectura desplegable. Por ejemplo, si su arquitectura desplegable,example-da-1, depende de otra arquitectura desplegable,example-da-2, la lista desplegable de entrada paraexample-da-1sólo muestra los espacios de trabajo asociados aexample-da-2. A continuación, los usuarios seleccionan la instancia adecuada del espacio de trabajo deexample-da-2al configurarexample-da-1.json editorofrece a los usuarios un espacio para especificar entradas JSON más grandes o archivos de texto sin formato.code editorpermite a los usuarios elegir entre entradas con formato JSON o HCL, lo que resulta útil para las entradas basadas en Terraform.Platform resourcerequiere que los usuarios seleccionen un recurso de instancia de una lista para el tipo de recurso que usted especifique. El tipo de recurso puede serVPC Subnet,VPC Image,VPC Floating IPs,Cloud Logs,Sysdig,Cloud Object Storage,Key ProtectoSecrets Manager. Puede especificar el ID, el nombre o el CRN como los valores entre los que los usuarios pueden elegir y permitir selecciones únicas o múltiples. La salida es el nombre o ID que su código Terraform requiere.secret_grouprequiere que los usuarios seleccionen un grupo secreto por su nombre en una instancia específica de Secrets Manager. La salida es el ID o nombre del grupo secreto. Para listar grupos de una instancia específica de Secrets Manager, este tipo debe estar asociado con el tipo personalizadoplatform resource, con el tipo de recursoSecrets Manager, y con una salida de tipo de valorcrn.secretrequiere que los usuarios seleccionen un secreto por su nombre en una instancia específica de Secrets Manager. La salida es el ID, nombre o CRN del secreto. Para listar secretos de una instancia específica de Secrets Manager, este tipo debe estar asociado al menos con el tipo personalizadoplatform resource, con el tipo de recursoSecrets Manager, y con una salida de tipo valorcrn. Puede asociarlo opcionalmente al tiposecret_grouptambién con una salida de tipo de valoridpara listar secretos de un grupo secreto específico en esa instancia Secrets Manager.kms_keyrequiere que los usuarios seleccionen una clave de una instancia específica de Key Protect. La salida es el ID, nombre o CRN de la clave. Para listar claves de una instancia específica de Key Protect, este tipo debe estar asociado con el tipo personalizadoplatform resource, con el tipo de recursoKey Protect, y con una salida de tipo de valorcrn.
configuration[].default_value-
El valor que se establecerá por defecto.
configuration[].virtual(opcional)-
Bandera que especifica si se debe pasar una entrada al servicio Schematics. Si se establece en
true, la entrada no se pasa a Schematics. Establezca este indicador entruepara cualquier entrada de su arquitectura desplegable a la que se haga referencia en arquitecturas compatibles pero que no se utilice en la arquitectura desplegable que está incorporando. Añada referencias eninput_mappingdentro dedependenciesoswappable_dependenciesdel manifiesto del catálogo. configuration[].description-
Una descripción de la variable que desea mostrar en la interfaz de usuario a los usuarios de su arquitectura desplegable.
configuration[].display_name-
El nombre que se muestra para el tipo de configuración.
configuration[].required-
Un booleano que indica si los usuarios deben especificar el parámetro durante la instalación.
configuration[].hidden-
Un booleano que indica si el parámetro debe ocultarse a los usuarios durante la instalación.
configuration[].options[]-
Conjunto de opciones que los usuarios pueden elegir para un parámetro.
configuration[].custom_config-
Objeto para indicar que se puede utilizar una configuración personalizada.
configuration[].custom_config.type-
El ID del tipo de widget utilizado para la configuración.
configuration[].custom_config.grouping-
Dónde debe aparecer el tipo de configuración en el catálogo. Los valores válidos son
Target,Resource, yDeployment. configuration[].custom_config.original_grouping-
Donde aparecía originalmente el tipo de configuración. Los valores válidos son
Target,Resource, yDeployment. configuration[].custom_config.grouping_index-
El orden de este elemento de configuración cuando hay varios.
configuration[].custom_config.config_constraints-
Mapa de parámetros de restricción que se dan al widget personalizado.
configuration[].custom_config.associations-
Objeto para los parámetros asociados a la configuración.
configuration[].configuration_group-
El nombre de un grupo de configuración asociado.
configuration[].value_constraints[]-
Conjunto de restricciones de valor, donde cada restricción define reglas de validación.
configuration[].value_constraints[].type-
Tipo de restricción. Por el momento, solo es compatible con
regex. configuration[].value_constraints[].value-
Una expresión regular de JavaScript.
configuration[].value_constraints[].description-
Un mensaje para mostrar si el valor proporcionado no coincide con la expresión regular especificada.
schematics_env_values
Dentro de la sección flavors, schematics_env_values especifica una lista de valores y nombres de variables que deben pasarse al servicio Schematics para que se utilicen como variables de entorno durante la ejecución
de Terraform. Esto podría ser un valor seguro, un ajuste del registro de Terraform o algo más. Puede optar por especificar una cadena o crear una referencia a Secrets Manager. Si se especifican ambas, se utiliza la referencia Secrets Manager.
El siguiente ejemplo muestra la estructura JSON para la sección schematics_env_values:
"flavors": [{
"schematics_env_values": {
"value": "[{\"name\": \"TF_LOG\",\"value\": \"TRACE\",\"secure\": true,\"hidden\": true}]",
"sm_ref": "cmsm_v1:{...}"
}
}]
Los siguientes valores pueden incluirse en la sección schematics_env_values:
schematics_env_values.value- Una cadena JSON que incluye una matriz de variables de entorno y sus valores.
schematics_env_values.value[].name- Especifica el nombre de la variable de entorno.
schematics_env_values.value[].value- Especifica el valor de la variable de entorno.
schematics_env_values.value[].secure- Especifica si se muestra o no el valor de la variable de entorno en texto claro en el registro de ejecución. Los valores posibles son
trueofalse. schematics_env_values.value[].hidden- Especifica si se incluye o no esta variable en el registro de ejecución. Los valores posibles son
trueofalse. schematics_env_values.sm_ref- Una referencia a una instancia de Secrets Manager que contiene sus variables de entorno guardadas como secreto. El secreto debe ser una cadena JSON que incluya una matriz de variables de entorno y sus valores.
La siguiente cadena JSON de ejemplo incluye dos variables, TF_LOG y TF_IGNORE, y sus valores que se añaden como variables de entorno durante la ejecución de Terraform:
"schematics_env_values": {
"value": "[{\"name\": \"TF_LOG\",\"value\": \"TRACE\",\"secure\": true,\"hidden\": true},{\"name\": \"TF_IGNORE\",\"value\": \"TRACE\",\"secure\": false,\"hidden\": false}]"
}
Utilice caracteres de escape para las comillas dentro de la lista.
El siguiente ejemplo utiliza una referencia a un secreto en Secrets Manager:
"schematics_env_values": {
"sm_ref": "cmsm_v1:{\"name\": \"envVarSecret\",\"id\":\"1234567890\",\"service_id\":\"crn:v1:bluemix:public:secrets-manager:eu-gb:a/1234567890:1234567890::\",\"service_name\":\"My SM instance\",\"group_id\":\"1234567890\",\"group_name\":\"My SM group\",\"resource_group_id\":\"1234567890\",\"region\":\"eu-gb\",\"type\":\"arbitrary\"}"
}
minimum_compatible_version (opcional)
Un valor semver que indica la versión más antigua compatible con la versión actual. Si no hay versiones anteriores compatibles con la versión actual, especifique el valor de la versión actual en este campo. Por defecto, la versión actual es compatible con todas las versiones anteriores.
ignore_readme
Si se establece en true, el archivo readme no se utiliza al embarcar esta versión, y el campo long_description está vacío. Si el campo long_description está vacío, no aparecerá un enlace al archivo
Léame en el menú Enlaces relacionados del listado del catálogo de la versión.
terraform_version
La versión del tiempo de ejecución de Terraform de Hashicorp que se necesita para validar e instalar la versión. Al establecer este valor en el manifiesto se anula lo especificado en el código fuente.
outputs
Cabecera de sección para obtener información sobre los valores de salida de Terraform.
{
"key": "name of the output value as defined in the Terraform",
"description": "The description of the key"
}
Los siguientes valores pueden incluirse en la sección outputs:
outputs[].key- Especifica el valor de salida.
outputs[].description- Un breve resumen del valor de salida.
install_type
Especifica si una arquitectura desplegable es fullstack o extension. Las arquitecturas enumeradas como extensiones requieren requisitos previos. La matriz dependencies también debe completarse si establece
este valor en extension. Esta propiedad se ignora si dependency_version_2 está configurada como true.
scripts
Una lista de scripts contenidos en el mismo repositorio que pueden ser ejecutados por un proyecto durante una etapa particular de una acción especificada. Cada clave del mapa debe coincidir con el formato action y stage de la entrada. Stage debe ser pre o post. Action debe ser validate, deploy o undeploy.
{
"short_description": "description for the script",
"type": "type of script. i.e. ansible",
"path": "the path to the script in the repo. Must begin with scripts/...",
"stage": "pre or post",
"action": "The action that executes the script. Options include validate, deploy, or undeploy."
}