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.

Título de la arquitectura desplegable, descripción, asignación de texto de las características al archivo de origen
Título de la arquitectura desplegable, descripción, asignación de texto de las características al archivo de origen

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.

Comparación de las características de la variación de la arquitectura desplegable
Comparación de las características de la variación de la arquitectura desplegable

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.

Permisos de arquitectura desplegables y asignación de texto de arquitectura al archivo fuente
Permisos de arquitectura desplegables y asignación de texto de arquitectura al archivo fuente

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.

Cumplimiento de la arquitectura desplegable
Cumplimiento de la arquitectura desplegable

Editar el manifiesto

Para editar tu manifiesto localmente, puedes seguir los siguientes pasos.

  1. Copie el siguiente archivo de manifiesto de ejemplo en un editor local.
  2. Nombra el archivo ibm_catalog.json.
  3. 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.
  4. Añada el archivo a la carpeta raíz de su repositorio de código fuente.
  5. 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.

hidden

Valor booleano que controla la visibilidad del producto. Cuando se configura en true, el producto se oculta del catálogo y de los resultados de búsqueda, pero sigue estando disponible a través de su dirección directa URL.

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.

tags

Una serie de valores predefinidos que pueden ayudar a los usuarios a filtrar el catálogo para identificar y obtener más información sobre su producto. Para ver las opciones disponibles, ejecute el siguiente comando : ibmcloud catalog filter options --all.

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 standard o advanced.

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.

Valores y descripciones de las plantillas de uso
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 URL de la imagen a la que se hace referencia.
architecture.diagrams[].diagram.url_proxy.sha
El identificador sha de 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 stack para una arquitectura desplegable formada por arquitecturas desplegables agrupadas en las que exista un archivo de configuración de pila. Utilice terraform para 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 el name de la variación. Para utilizar esta propiedad, también debe establecer dependency_version_2 en true. 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 establecer dependency_version_2 en true.
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_2 en true.
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 establecer dependency_version_2 y optional en true.
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_2 en true.
dependencies[].input_mapping[].dependency_output o dependencies[].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_version se establece en true, entonces esta variable hace referencia a la variable version_input de 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_output o dependency_input. Si reference_version se establece en true, entonces la variable dependency_input hace referencia a la variable version_input de 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 un version_input o dependency_input, y no se proporciona dependency_output. Si se proporciona version_input, cuando un usuario añada la arquitectura y su dependencia a un proyecto, la arquitectura version_input se preajustará al valor especificado aquí. Si se proporciona dependency_input, cuando un usuario añada la arquitectura y su dependencia a un proyecto, la dependencia dependency_input se 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_input o dependency_output). Cuando este indicador está en true, dependency_input hace referencia a un valor de version_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 name de 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 dependencies secció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 map equivale a object. El tipo de Terraform list equivale a array. Un tipo de Terraform string con un atributo sensible equivale a password. 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:

  • boolean requiere que los usuarios introduzcan una cadena true o false.
  • float requiere un punto decimal de los usuarios.
  • int requiere la introducción de un número entero por parte de los usuarios.
  • number requiere un valor numérico. El tipo number puede representar tanto números enteros como valores fraccionarios como 4.56.
  • password requiere la introducción de una cadena por parte de los usuarios. La cadena se redacta en la consola y los registros.
  • string requiere 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
}
  • object requiere que los usuarios introduzcan un objeto Terraform. Para obtener más información, consulte map.

Los tipos predefinidos requieren la introducción manual de datos por parte de los usuarios.

Tipos personalizados admitidos:

  • array requiere una lista de valores separados por una coma.
  • region requiere 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 especificar country_id:us,ca,jp en el filtro Región para limitar las regiones disponibles a esos países. Para más información, véase Sintaxis de filtrado.
  • textarea requiere que los usuarios introduzcan texto que puede dividirse en varias líneas. Por ejemplo, una descripción.
  • vpc requiere 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 key requiere que los usuarios seleccionen una clave SSH VPC para autenticarse en una máquina virtual.
  • cluster requiere que los usuarios seleccionen un clúster Kubernetes Service o Red Hat OpenShift. El resultado es el ID del clúster.
  • power iaas requiere que los usuarios seleccionen una instancia de Power Virtual Server.
  • resource group requiere que los usuarios seleccionen un grupo de recursos. La salida es el ID, nombre o CRN del grupo de recursos.
  • multi-line secure value requiere 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 workspace requiere 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 para example-da-1 sólo muestra los espacios de trabajo asociados a example-da-2. A continuación, los usuarios seleccionan la instancia adecuada del espacio de trabajo de example-da-2 al configurar example-da-1.
  • json editor ofrece a los usuarios un espacio para especificar entradas JSON más grandes o archivos de texto sin formato.
  • code editor permite a los usuarios elegir entre entradas con formato JSON o HCL, lo que resulta útil para las entradas basadas en Terraform.
  • Platform resource requiere que los usuarios seleccionen un recurso de instancia de una lista para el tipo de recurso que usted especifique. El tipo de recurso puede ser VPC Subnet, VPC Image, VPC Floating IPs, Cloud Logs, Sysdig, Cloud Object Storage, Key Protect o Secrets 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_group requiere 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 personalizado platform resource, con el tipo de recurso Secrets Manager, y con una salida de tipo de valor crn.
  • secret requiere 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 personalizado platform resource, con el tipo de recurso Secrets Manager, y con una salida de tipo valor crn. Puede asociarlo opcionalmente al tipo secret_group también con una salida de tipo de valor id para listar secretos de un grupo secreto específico en esa instancia Secrets Manager.
  • kms_key requiere 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 personalizado platform resource, con el tipo de recurso Key Protect, y con una salida de tipo de valor crn.
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 en true para 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 en input_mapping dentro de dependencies o swappable_dependencies del 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, y Deployment.

configuration[].custom_config.original_grouping

Donde aparecía originalmente el tipo de configuración. Los valores válidos son Target, Resource, y Deployment.

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 true o false.
schematics_env_values.value[].hidden
Especifica si se incluye o no esta variable en el registro de ejecución. Los valores posibles son true o false.
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."
}