Compartir a través de


Guía de configuración de implementación

ALM Accelerator for Power Platform utiliza archivos de configuración en formato JSON para automatizar la implementación de sus soluciones. Establecen referencias de conexión, variables de entorno y permisos, comparten aplicaciones de lienzo y actualizan la propiedad de los componentes de la solución, como los flujos de Power Automate cuando las soluciones se implementan en entornos posteriores.

Los archivos de configuración de este artículo le permiten configurar elementos que son específicos del entorno en el que se implementa una solución. Los archivos de configuración que necesita y, por lo tanto, los pasos que debe seguir en este artículo, dependen de los componentes que implementen las canalizaciones de su solución. Por ejemplo, si su solución contiene solo tablas de Dataverse y aplicaciones basadas en modelos sin necesidad de configuración o datos por entorno, puede omitir algunos de estos pasos.

Hemos proporcionado ejemplos de archivos de configuración en la configuración de implementación y configuración de implementación personalizada de ALMAcceleratorSampleSolution.

Antes de comenzar

Este artículo es una guía paso a paso para configurar manualmente los archivos de configuración de implementación. Proporciona detalles y contexto para las acciones que realiza la aplicación y las canalizaciones ALM Accelerator y como referencia para los administradores que deseen conocer los detalles de cada paso del proceso.

En cambio, recomendamos que configure los ajustes de implementación en la aplicación ALM Accelerator.

Crear un archivo JSON de configuración de implementación

Al almacenar customDeploymentSettings.json en la raíz del directorio config, se aplica la misma configuración a todos los entornos. Suponiendo que está utilizando tareas de canalización de transformación de archivos o reemplazo de tokens para información específica de entornos concretos, puede especificar los valores por entorno en las variables de su canalización.

Sin embargo, también puede crear archivos específicos del entorno customDeploymentSettings.json. Guárdelos en subdirectorios del directorio config, con el nombre de sus entornos. El nombre del directorio debe coincidir con la variable de canalización EnvironmentName que creó al configurar su canalización para los entornos de validación prueba y producción. Si no existen JSON y directorios de configuración de implementación específicos del entorno, las canalizaciones vuelven a la configuración en la raíz del directorio config.

Captura de pantalla de una jerarquía de directorio config.

También puede crear archivos de configuración específicos del usuario como el directorio JohannaDev en la imagen anterior. Los desarrolladores pueden usarlos para elegir una configuración específica cuando importan soluciones no administradas desde el control de código fuente.

El archivo JSON de configuración de implementación configura referencias de conexión y variables de entorno.

{
    "EnvironmentVariables": [
        {
            "SchemaName": "cat_shared_sharepointonline_97456712308a4e65aae18bafcd84c81f",
            "Value": "#{environmentvariable.cat_shared_sharepointonline_97456712308a4e65aae18bafcd84c81f}#"
        },
        {
            "SchemaName": "cat_shared_sharepointonline_21f63b2d26f043fb85a5c32fc0c65924",
            "Value": "#{environmentvariable.cat_shared_sharepointonline_21f63b2d26f043fb85a5c32fc0c65924}#"
        },
        {
            "SchemaName": "cat_TextEnvironmentVariable",
            "Value": "#{environmentvariable.cat_TextEnvironmentVariable}#"
        },
        {
            "SchemaName": "cat_ConnectorBaseUrl",
            "Value": "#{environmentvariable.cat_ConnectorBaseUrl}#"
        },
        {
            "SchemaName": "cat_DecimalEnvironmentVariable",
            "Value": "#{environmentvariable.cat_DecimalEnvironmentVariable}#"
        },
        {
            "SchemaName": "cat_JsonEnvironmentVariable",
            "Value": "#{environmentvariable.cat_JsonEnvironmentVariable}#"
        },
        {
            "SchemaName": "cat_ConnectorHostUrl",
            "Value": "#{environmentvariable.cat_ConnectorHostUrl}#"
        }
    ],
    "ConnectionReferences": [
        {
            "LogicalName": "new_sharedsharepointonline_b49bb",
            "ConnectionId": "#{connectionreference.new_sharedsharepointonline_b49bb}#",
            "ConnectorId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline"
        },
        {
            "LogicalName": "cat_CDS_Current",
            "ConnectionId": "#{connectionreference.cat_CDS_Current}#",
            "ConnectorId": "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"
        }
    ]
}
  1. Copie el código JSON de ejemplo anterior en un nuevo archivo llamado deploymentSettings.json.

  2. Guarde el archivo en la carpeta config en Git.

Captura de pantalla una estructura de carpeta config.

Crear JSON de referencia de conexión

La propiedad ConnectionReferences en el archivo customDeploymentConfiguration.json establece referencias de conexión en su solución después de importar la solución a un entorno. ConnectionReferences también habilita flujos después de importar la solución, en función del propietario de la conexión especificada en la variable.

  1. Cree las conexiones manualmente en sus entornos de destino.

  2. Copie los ID de las conexiones.

    • Obtenga el nombre lógico de la referencia de conexión del componente de referencia de conexión en su solución.

      Captura de pantalla del nombre de un esquema de referencia de conexión en una solución, resaltado en un campo de texto deshabilitado debajo de la etiqueta Nombre.

    • Obtenga el ID de conexión de la URL de la conexión después de crearla. Por ejemplo, si la URL es "https://.../connections/shared_commondataservice/9f66d1d455f3474ebf24e4fa2c04cea2/details", el ID de la conexión es 9f66d1d455f3474ebf24e4fa2c04cea2.

  3. Edite el archivo customDeploymentSettings.json y pegue los ID en la propiedad ConnectionReferences, como en el siguiente código de ejemplo:

    "ConnectionReferences": 
    [
            {
                "LogicalName": "new_sharedsharepointonline_b49bb",
                "ConnectionId": "#{connectionreference.new_sharedsharepointonline_b49bb}#",
                "ConnectorId": "/providers/Microsoft.PowerApps/apis/shared_sharepointonline"
            },
            {
                "LogicalName": "cat_CDS_Current",
                "ConnectionId": "#{connectionreference.cat_CDS_Current}#",
                "ConnectorId": "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps"
            }
    ]
    
  4. Si usa la extensión Replace Tokens y agrega tokens en su configuración como en el ejemplo anterior, abra la canalización para su solución y luego seleccione Editar>Variables.

  5. En la pantalla Variables de canalización, cree la conexión <connection_reference_logicalname>. En este ejemplo, la variable de canalización se denomina connection.cat_CDS_Current.

  6. Establezca el valor en el ID de conexión que encontró anteriormente.

  7. Para asegurarse de que el valor no se guarde como texto sin formato, seleccione Mantener este valor en secreto.

Cuando corresponda, repita estos pasos para cada solución y canalización que cree.

Cree la variable de entorno JSON en el archivo de configuración de implementación

La propiedad EnvironmentVariables en el archivo customDeploymentConfiguration.json establece variables de entorno de Dataverse en su solución después de importar la solución a un entorno.

Importante

Al exportar soluciones con control de código fuente, los valores de las variables de entorno se exportan con la solución. Esto puede plantear un riesgo de seguridad si las variables de entorno contienen información confidencial. Le recomendamos que no almacene información confidencial en variables de entorno. Una forma de asegurarse de que los valores de las variables de entorno no tengan control de código fuente es crear una solución específicamente para los valores de variables de entorno en sus entornos de desarrollo y establecer el valor actual de las variables de entorno en esa solución. Esto evita que los valores actuales se exporten con la solución y se almacenen en el control de código fuente.

  1. Copie el nombre de esquema para la variable de entorno del componente de variable de entorno en su solución.

    Captura de pantalla de un nombre de esquema de variable de entorno en una solución, resaltado en un campo de texto deshabilitado debajo de la etiqueta Nombre.

  2. Edite el archivo customDeploymentSettings.json y pegue el nombre en la propiedad EnvironmentVariables, como en el siguiente código de ejemplo:

    {
        "EnvironmentVariables": [
            {
                "SchemaName": "cat_TextEnvironmentVariable",
                "Value": "#{variable.cat_TextEnvironmentVariable}#"
            },
            {
                "SchemaName": "cat_DecimalEnvironmentVariable",
                "Value": "#{variable.cat_DecimalEnvironmentVariable}#"
            },
            {
                "SchemaName": "cat_JsonEnvironmentVariable",
                "Value": "{\"name\":\"#{variable.cat_JsonEnvironmentVariable.name}#\"}"
            }
        ]    
    }
    
  3. Si usa la extensión Replace Tokens y agrega tokens en su configuración como en el ejemplo anterior, abra la canalización para su solución y luego seleccione Editar>Variables.

  4. En la pantalla Variables de canalización, cree una variable de canalización para cada token (símbolo)de su configuración; por ejemplo, variable.cat_TextEnvironmentVariable.

  5. Establezca el valor en el valor de la variable de entorno de ese entorno.

  6. Para asegurarse de que el valor no se guarde como texto sin formato, seleccione Mantener este valor en secreto.

Cuando corresponda, repita estos pasos para cada solución y canalización que cree.

Crear un archivo JSON de configuración de implementación personalizado

El archivo JSON de configuración de implementación personalizada contiene la configuración para activar flujos en nombre de un usuario, especificar la propiedad de los flujos, compartir aplicaciones de lienzo con Microsoft Entra Groups y crear equipos de grupo de Dataverse después de la implementación.

{
  "ActivateFlowConfiguration": [
    {
      "solutionComponentName": "DevOpsKitSampleFlow",
      "solutionComponentUniqueName": "0a43b549-50ed-ea11-a815-000d3af3a7c4",
      "activateAsUser": "#{activateflow.activateas.DevOpsKitSampleFlow}#"
    },
    {
      "solutionComponentName": "CallMeFromCanvasApp",
      "solutionComponentUniqueName": "71cc728c-2487-eb11-a812-000d3a8fe6a3",
      "activateAsUser": "#{activateflow.activateas.CallMeFromCanvasApp}#"
    },
    {
      "solutionComponentName": "GetEnvironmentVariables",
      "solutionComponentUniqueName": "d2f7f0e2-a1a9-eb11-b1ac-000d3a53c3c2",
      "activateAsUser": "#{activateflow.activateas.GetEnvironmentVariables}#"
    }
  ],
  "SolutionComponentOwnershipConfiguration": [
    {
      "solutionComponentType": 29,
      "solutionComponentName": "DevOpsKitSampleFlow",
      "solutionComponentUniqueName": "0a43b549-50ed-ea11-a815-000d3af3a7c4",
      "ownerEmail": "#{owner.ownerEmail.DevOpsKitSampleFlow}#"
    },
    {
      "solutionComponentType": 29,
      "solutionComponentName": "CallMeFromCanvasApp",
      "solutionComponentUniqueName": "71cc728c-2487-eb11-a812-000d3a8fe6a3",
      "ownerEmail": "#{owner.ownerEmail.CallMeFromCanvasApp}#"
    },
    {
      "solutionComponentType": 29,
      "solutionComponentName": "GetEnvironmentVariables",
      "solutionComponentUniqueName": "d2f7f0e2-a1a9-eb11-b1ac-000d3a53c3c2",
      "ownerEmail": "#{owner.ownerEmail.GetEnvironmentVariables}#"
    }
  ],
  "AadGroupCanvasConfiguration": [
    {
      "aadGroupId": "#{canvasshare.aadGroupId.DevOpsKitSampleCanvasApp}#",
      "canvasNameInSolution": "cat_devopskitsamplecanvasapp_c7ec5",
      "canvasDisplayName": "DevOpsKitSampleCanvasApp",
      "roleName": "#{canvasshare.roleName.DevOpsKitSampleCanvasApp}#"
    }
  ],
  "AadGroupTeamConfiguration": [
    {
      "aadGroupTeamName": "Sample Group Team Name",
      "aadSecurityGroupId": "#{team.samplegroupteamname.aadSecurityGroupId}#",
      "dataverseSecurityRoleNames": [
        "#{team.samplegroupteamname.role}#"
      ]
    }
  ]
}
  1. Copie el código JSON de ejemplo anterior en un nuevo archivo llamado customDeploymentSettings.json.

  2. Guarde el archivo en la carpeta config en Git.

Captura de pantalla de una estructura de carpetas de configuración para configuraciones de implementación personalizadas.

Cree la variable de entorno JSON personalizada en el archivo de configuración de implementación personalizado

La propiedad DefaultEnvironmentVariables en customDeploymentConfiguration.json se usa en la canalización de exportación para establecer variables de entorno predeterminadas de Dataverse en su solución cuando la solución se exporta y almacena en el control de código fuente.

Nota

La configuración de variables de entorno predeterminada solo se aplica si la canalización de exportación está configurada con la variable de canalización VerifyDefaultEnvironmentVariableValues = True.

  1. Copie el nombre de esquema para la variable de entorno del componente de variable de entorno en su solución.

    Captura de pantalla de un nombre de esquema de variable de entorno, resaltado en un campo de texto deshabilitado debajo de la etiqueta Nombre.

  2. Edite el archivo customDeploymentSettings.json y pegue el nombre en la propiedad DefaultEnvironmentVariables, como en el siguiente código de ejemplo:

    {
      "DefaultEnvironmentVariables": [
        [ "cat_TextEnvironmentVariable", "#{defaultvariable.cat_TextEnvironmentVariable}#" ],
        [ "cat_DecimalEnvironmentVariable", "#{defaultvariable.cat_DecimalEnvironmentVariable}#" ],
        [ "cat_jsonEnvironmentVariable", "{\"name\":\"#{defaultvariable.cat_jsonEnvironmentVariable.name}#\"}" ]
      ]
    }
    
  3. Si usa la extensión Replace Tokens y agrega tokens en su configuración como en el ejemplo anterior, abra la canalización para su solución y luego seleccione Editar>Variables.

  4. En la pantalla Variables de canalización, cree una variable de canalización para cada token (símbolo)de su configuración; por ejemplo defaultvariable.cat_TextEnvironmentVariable.

Cuando corresponda, repita estos pasos para cada solución y canalización que cree.

Crear JSON de configuración de lienzo de grupo de Microsoft Entra

La propiedad AadGroupCanvasConfiguration del archivo customDeploymentConfiguration.json comparte las aplicaciones de lienzo en su solución con grupos de Microsoft Entra específicos después de importar la solución a un entorno.

  1. Copie los ID de la aplicación de lienzo y el grupo de Microsoft Entra.

    • Obtenga el nombre del esquema para la aplicación de lienzo del componente de la aplicación de lienzo en su solución.

      Captura de pantalla de un nombre de esquema de etiqueta de aplicación de lienzo, resaltado en un campo de texto deshabilitado debajo de la etiqueta Nombre.

    • Obtenga el id. de grupo de Microsoft Entra de la página Grupo en Azure Portal.

      Captura de pantalla de un Id. de grupo de Microsoft Entra resaltado en un cuadro de texto desactivado junto a la etiqueta de Id. de objeto.

  2. Edite el archivo customDeploymentSettings.json y pegue los ID en la propiedad AadGroupCanvasConfiguration, como en el siguiente código de ejemplo:

    {
      "AadGroupCanvasConfiguration": [
        {
          "aadGroupId": "#{canvasshare.aadGroupId}#",
          "canvasNameInSolution": "cat_devopskitsamplecanvasapp_c7ec5",
          "roleName": "#{canvasshare.roleName}#"
        }
      ]
    }
    

    roleName puede ser CanView, CanViewWithShare y CanEdit.

  3. Si usa la extensión Replace Tokens y agrega tokens en su configuración como en el ejemplo anterior, abra la canalización para su solución y luego seleccione Editar>Variables.

  4. En la pantalla Variables de canalización, cree una variable de canalización para cada token en su configuración, por ejemplo, canvasshare.aadGroupId.

  5. Establezca el valor en el ID de grupo de Microsoft Entra con el que se debe compartir la aplicación para ese entorno específico.

  6. Para asegurarse de que el valor no se guarde como texto sin formato, seleccione Mantener este valor en secreto.

Cuando corresponda, repita estos pasos para cada solución y canalización que cree.

Crear JSON de configuración de grupos y equipos de Microsoft Entra

La propiedad AadGroupTeamConfiguration en el archivo customDeploymentConfiguration.json asigna equpos de Dataverse y roles a grupos de Microsoft Entra en su solución después de importar la solución a un entorno.

Los roles de seguridad deben agregarse a su solución si no se crean manualmente en el entorno de destino. Se pueden aplicar uno o varios roles a un equipo. Los roles proporcionan permisos para los componentes de la solución requeridos por los usuarios del grupo.

  1. El nombre del equipo de Dataverse puede ser de un equipo existente o un nuevo equipo que se creará en Dataverse y asignará a un grupo de Microsoft Entra después de importar la solución.

  2. Los roles de Dataverse pueden ser cualquier rol de seguridad en Dataverse que se aplicaría al equipo después de importar la solución. Los roles deben tener privilegios para los recursos que requiere la solución, como tablas y procesos.

  3. Obtenga el id. de grupo de Microsoft Entra de la página Grupo en Azure Portal, como en la sección anteiror.

  4. Edite el archivo customDeploymentSettings.json y pegue el JSON en la propiedad AadGroupTeamConfiguration, como en el siguiente código de ejemplo:

    {
      "AadGroupTeamConfiguration": [
        {
          "aadGroupTeamName": "alm-accelerator-sample-solution",
          "aadSecurityGroupId": "#{team.aadSecurityGroupId}#",
          "dataverseSecurityRoleNames": [
            "ALM Accelerator Sample Role"
          ]
        }
      ]
    }
    
  5. Si usa la extensión Replace Tokens y agrega tokens en su configuración como en el ejemplo anterior, abra la canalización para su solución y luego seleccione Editar>Variables.

  6. En la pantalla Variables de canalización, cree una variable de canalización para cada token en su configuración, por ejemplo, team.aadSecurityGroupId.

  7. Establezca el valor en el ID de grupo de Microsoft Entra para asociarlo con el equipo en Dataverse.

  8. Para asegurarse de que el valor no se guarde como texto sin formato, seleccione Mantener este valor en secreto.

Cuando corresponda, repita estos pasos para cada solución y canalización que cree.

Crear JSON de propiedad del componente de la solución

La propiedad SolutionComponentOwnershipConfiguration en el archivo customDeploymentConfiguration.json asigna la propiedad de los componentes de la solución a usuarios de Dataverse después de importar la solución a un entorno. La asignación de la propiedad es útil para componentes como los flujos que son propiedad de manera predeterminada del usuario de la entidad de servicio después de que la canalización importe la solución y las organizaciones deseen reasignarlos después de que se importan.

La propiedad SolutionComponentOwnershipConfiguration tamibén habilita los flujos que no tienen referencias de conexión. El flujo se habilita por el usuario especificado cuando no existan referencias de conexión para usar para habilitar el flujo.

Nota

La canalización actual solo implementa la capacidad de establecer la propiedad de flujos.

  1. El código de tipo de componente de la solución se basa en los tipos de componente especificados en la referencia de la API web solutioncomponent EntityType. Por ejemplo, un flujo Power Automate es un tipo de componente 29. El tipo de componente debe especificarse como un valor entero, sin comillas.

  2. Obtenga el nombre único del componente de flujo de Power Automate de la solución desempaquetada.

    Los flujos no requieren nombres únicos cuando se crean. El único identificador único verdadero para un flujo es el ID interno que asigna el sistema en una solución.

    Captura de apntalla de un archivo XML de flujo de trabajo de solución desempaquetado.

    Captura de pantalla de un XML de flujo de trabajo de solución sin empaquetar que muestra WorkflowId.

  3. Obtenga la dirección de correo electrónico del propietario del registro del usuario en Dataverse o Microsoft 365.

  4. Edite el archivo customDeploymentSettings.json y pegue el JSON en la propiedad AadGroupTeamConfiguration, como en el siguiente código de ejemplo:

    {
      "SolutionComponentOwnershipConfiguration": [
        {
          "solutionComponentType": 29,
          "solutionComponentUniqueName": "00000000-0000-0000-0000-00000000000",
          "ownerEmail": "#{owner.ownerEmail}#"
        },
        {
          "solutionComponentType": 29,
          "solutionComponentUniqueName": "00000000-0000-0000-0000-00000000000",
          "ownerEmail": "#{owner.ownerEmail}#"
        }
      ]
    }
    
  5. Si usa la extensión Replace Tokens y agrega tokens en su configuración como en el ejemplo anterior, abra la canalización para su solución y luego seleccione Editar>Variables.

  6. En la pantalla Variables de canalización, cree una variable de canalización para cada token en su configuración, por ejemplo, owner.ownerEmail.

  7. Establezca el valor en la dirección de correo electrónico del propietario del componente.

  8. Para asegurarse de que el valor no se guarde como texto sin formato, seleccione Mantener este valor en secreto.

Cuando corresponda, repita estos pasos para cada solución y canalización que cree.

Importar datos desde su canalización

Puede querer importar datos semilla o de configuración que querrá importar a su entorno de Dataverse después de implementar su solución en el entorno de destino. Las canalizaciones están configuradas para importar datos utilizando la herramienta Migración de configuración, disponible a través de NuGet. Más información sobre cómo administrar los datos de configuración.

Al almacenar los datos de configuración en la raíz del directorio config, se implementan los mismos datos de configuración a todos lso entornos. Puede crear archivos de datos de configuración específicos del entorno. Guárdelos en subdirectorios del directorio config, con el nombre de sus entornos. El nombre del directorio debe coincidir con la variable de canalización EnvironmentName que creó al configurar su canalización para los entornos de validación prueba y producción. Si no existen directorios ni datos de configuración específicos del entorno, las canalizaciones vuelven a los datos de configuración en la raíz del directorio config.

  1. Clone el repositorio de Azure DevOps donde se realizará control de código fuente de la solución y donde creó su YAML de canalización de la solución en su máquina local.

  2. Si aún no lo ha hecho, cree un directorio llamado config en la carpeta config de la carpeta de la solución.

    Captura de pantalla del Directorio config en el directorio de la solución en el repositorio local.

  3. Instale la herramienta Configuration Migration. Siga las instrucciones de Descargar herramientas de NuGet.

  4. Abra la herramienta Migración de configuración, seleccione Crear esquema y luego seleccione Continuar.

  5. Inicie sesión en el inquilino desde el que desea exportar sus datos de configuración.

  6. Seleccione el entorno.

  7. Seleccione las tablas y columnas que desea exportar.

  8. Seleccione Guardar y exportar. Guarde los datos en la ruta del directorio config\ConfigurationMigrationData en su repositorio de Azure DevOps local en la carpeta de la solución para la que se van a importar los datos.

    Nota

    La canalización busca esta carpeta específica para importar los datos después de la solución. Asegúrese de que el nombre de la carpeta y su ubicación sean exactamente como se indican aquí.

  9. Cuando se le solicite exportar los datos, seleccione .

  10. Elija la misma ubicación para sus datos exportados, seleccione Guardar y luego seleccione Exportar datos.

  11. Cuando finalice la exportación, descomprima los archivos del archivo data.zip en el directorio ConfigurationMigrationData. Elimine los archivos data.zip y SampleData.xml.

    Captura de pantalla de los datos de migración de configuración descomprimidos en el directorio ConfigurationMigrationData.

  12. Confirme los cambios con sus datos en Azure DevOps.

Pasos siguientes