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.
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"
}
]
}
Copie el código JSON de ejemplo anterior en un nuevo archivo llamado deploymentSettings.json.
Guarde el archivo en la carpeta config en Git.
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, según el propietario de la conexión que se especifica en la variable.
Cree las conexiones manualmente en sus entornos de destino.
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.
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.
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" } ]
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.
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
.Establezca el valor en el ID de conexión que encontró anteriormente.
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.
Copie el nombre de esquema para la variable de entorno del componente de variable de entorno en su solución.
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}#\"}" } ] }
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.
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.
Establezca el valor en el valor de la variable de entorno de ese entorno.
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}#"
]
}
]
}
Copie el código JSON de ejemplo anterior en un nuevo archivo llamado customDeploymentSettings.json.
Guarde el archivo en la carpeta config en Git.
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
.
Copie el nombre de esquema para la variable de entorno del componente de variable de entorno en su solución.
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}#\"}" ] ] }
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.
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.
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.
Obtenga el id. de grupo de Microsoft Entra de la página Grupo en Azure Portal.
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 serCanView
,CanViewWithShare
yCanEdit
.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.
En la pantalla Variables de canalización, cree una variable de canalización para cada token en su configuración, por ejemplo,
canvasshare.aadGroupId
.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.
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.
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.
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.
Obtenga el id. de grupo de Microsoft Entra de la página Grupo en Azure Portal, como en la sección anteiror.
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" ] } ] }
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.
En la pantalla Variables de canalización, cree una variable de canalización para cada token en su configuración, por ejemplo,
team.aadSecurityGroupId
.Establezca el valor en el ID de grupo de Microsoft Entra para asociarlo con el equipo en Dataverse.
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.
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.
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.
Obtenga la dirección de correo electrónico del propietario del registro del usuario en Dataverse o Microsoft 365.
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}#" } ] }
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.
En la pantalla Variables de canalización, cree una variable de canalización para cada token en su configuración, por ejemplo,
owner.ownerEmail
.Establezca el valor en la dirección de correo electrónico del propietario del componente.
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. Obtenga más información sobre cómo administrar 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.
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.
Si aún no lo ha hecho, cree un directorio llamado config en la carpeta config de la carpeta de la solución.
Instale la herramienta Configuration Migration. Siga las instrucciones de Descargar herramientas de NuGet.
Abra la herramienta Migración de configuración, seleccione Crear esquema y luego seleccione Continuar.
Inicie sesión en el inquilino desde el que desea exportar sus datos de configuración.
Seleccione el entorno.
Seleccione las tablas y columnas que desea exportar.
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í.
Cuando se le solicite exportar los datos, seleccione Sí.
Elija la misma ubicación para sus datos exportados, seleccione Guardar y luego seleccione Exportar datos.
Cuando finalice la exportación, descomprima los archivos del archivo data.zip en el directorio ConfigurationMigrationData. Elimine los archivos data.zip y SampleData.xml.
Confirme los cambios con sus datos en Azure DevOps.