Descripción del rol de DSC en una canalización de CI/CDUnderstanding DSC's role in a CI/CD pipeline

En este artículo se describen los tipos de enfoques que hay disponibles para combinar configuraciones y recursos.This article describes the types of approaches available for combining configurations and resources. El objetivo de cada escenario es el mismo: reducir la complejidad cuando se prefiere que varias configuraciones alcancen un estado final de implementación de servidor.The goal for each scenario is the same, to reduce complexity when multiple configurations are preferred to reach a server deployment end state. Un ejemplo de esto sería cuando varios equipos contribuyen al resultado de una implementación de servidor, como cuando un propietario de la aplicación mantiene el estado de la aplicación y un equipo central libera los cambios realizados en las líneas base de seguridad.An example of this would be multiple teams contributing to the outcome of a server deployment, such as an application owner maintaining the application state and a central team releasing changes to security baselines. Aquí se detallan los matices de cada enfoque, incluidas las ventajas y los riesgos.The nuances of each approach including the benefits and risks are detailed here.

Flujo de proceso de una canalización de CI/CD

Tipos de técnicas de creación colaborativaTypes of Collaborative Authoring Techniques

Hay dos soluciones integradas en el Administrador de configuración local para habilitar este concepto:There are two solutions built in to Local Configuration Manager to enable this concept:

ConceptoConcept Información detalladaDetailed Information
Configuraciones parcialesPartial Configurations DocumentaciónDocumentation
Recursos compuestosComposite Resources DocumentaciónDocumentation

Comprender el impacto de cada enfoqueUnderstanding The Impact of Each Approach

Cualquiera de estas soluciones pueden usarse para administrar el resultado de una implementación de servidor.Either of these solutions can be used to manage the outcome of a server deployment. Pero hay una diferencia importante en el impacto del uso de cada enfoque.However, there is significant difference in the impact of using each approach.

Configuraciones parcialesPartial Configurations

Al usar configuraciones parciales, el Administrador de configuración local se configura para administrar varias configuraciones de forma independiente.When using Partial Configurations, Local Configuration Manager is configured to manage multiple configurations independently. Las configuraciones se compilan de forma independiente y luego se asignan al nodo.Configurations are compiled independently and then assigned to the node. Para ello hace falta que el Administrador de configuración local esté configurado con antelación con el nombre de cada configuración.This requires LCM to be configured in advance with the name of each configuration.

Diagrama de configuraciones parciales

Las configuraciones parciales proporcionan a dos o más equipos el control total de la configuración de un servidor, a menudo sin la ventaja de comunicación o colaboración.Partial Configurations provide two, or more, teams complete control over configuration of a server, often without the benefit of communication or collaboration.

Los clientes nos han informado de que esto puede dar lugar a conflictos de recursos, reemplazos involuntarios y, en última instancia, la pérdida del verdadero control de la configuración del recurso.Customers have provided feedback that this can lead to resource conflicts, unintentional overrides, and ultimately loss of true configuration control of the asset.

Los clientes también nos han informado de que cuando se usa este modelo, los cambios de configuración de los equipos de control no suelen someterse pruebas mediante una canalización de publicación, lo que genera resultados inesperados en la producción.Additionally, customers have provided feedback that when using this model, each controlling teams configuration changes are unlikely to be fully tested through a release pipeline, leading to unexpected results in production.

Es fundamental que se use una sola canalización para evaluar la publicación de todos los cambios en los servidores.It is critical that a single pipeline be used to evaluate all changes released to servers.

En la ilustración de abajo, el equipo B envía su configuración parcial al equipo A. Después, el equipo A realiza sus pruebas en un servidor con las dos configuraciones aplicadas.In the illustration below, Team B releases their partial configuration to Team A. Team A then runs their tests against a server with both configurations applied. En este modelo, solo una entidad tiene permiso para realizar cambios en producción.In this model, only one authority has permission to make changes in production.

Diagrama de una única canalización parcial

Cuando se pide al equipo B que realice cambios, este debe enviar una solicitud de incorporación de cambios en el entorno de control de código fuente del equipo A.When changes are required from Team B, they should submit a Pull Request against Team A's source control environment. Después, el equipo A revisa los cambios mediante la automatización de pruebas y envía la configuración a producción cuando está seguro de que los cambios no provocarán errores en las aplicaciones o los servicios hospedados por el servidor.Team A would then review the changes using test automation and release to production when there is confidence that the changes will not cause errors in the applications or services hosted by the server.

Recursos compuestosComposite Resources

Un recurso compuesto es simplemente una configuración de DSC empaquetada como un recurso.A composite resource is simply a DSC Configuration packaged as a resource. No hay ningún requisito especial de configurar el Administrador de configuración local para que acepte los recursos compuestos.There are no special requirements for configuring LCM to accept composite resources. Los recursos se usan dentro de una configuración nueva y una sola compilación da como resultado un archivo MOF.The resources are used within a new configuration and a single compilation results in one MOF file.

Diagrama de un recurso compuesto

Hay dos escenarios comunes para los recursos compuestos.There are two common scenarios for composite resources. El primero consiste en reducir la complejidad y conceptos abstractos únicos.The first is to reduce complexity and abstract unique concepts. El segundo es permitir que las líneas base se empaqueten para que un equipo de aplicación pueda implementar de forma segura a través de su canalización de versiones en producción una vez que se hayan superado todas las pruebas.The second is to allow baselines to be packaged for an application team to safely deploy through their release pipeline to production after all tests have passed.

Configuration Name
{
  File 1
  {
    Ensure = "Present"
    Path = "c:\inetpub\file1.zip"
    Source = "http://uri/file1.zip"
  }
  Service A
  {
    Ensure = "Present"
    Name = "ServiceA"
    Status = "Running"
  }
  SecurityBaseline Settings
  {
    Ensure = "Present"
    Datacenter = "NorthAmerica"
  }
}

Los recursos compuestos promueven la composición y la colaboración mediante una canalización durante la compilación de madurez operacional.Composite resources promote both composition and collaboration using a pipeline while building operational maturity.

Es posible que ya esté usando recursos compuestos sin darse cuenta.You might be already using composite resources without realizing it. Un ejemplo de ello es ServiceSet.An example is ServiceSet. Este recurso administra el estado de varios servicios de Windows sin enumerarlos individualmente.This resource manages the state of multiple Windows Services without listing them individually. La propiedad Name acepta una matriz de cadenas para proporcionar el nombre de cada servicio.The Name property accepts an array of strings to provide the name of each service. Cuando se compile la configuración, el MOF contendrá una sección Service única para cada uno de los nombres pasados a ServiceSet.When the configuration is compiled, the MOF will contain a unique Service section for each of the Names passed to ServiceSet.

Las organizaciones pueden tener "agentes" o "middleware" que debe instalarse en todos los servidores.Organizations might have "agents" or "middleware" that should be installed on every server. Un recurso compuesto es la mejor solución para administrar las dependencias, la instalación y la configuración de dichas herramientas y utilidades.A composite resource is the best answer to managing the dependencies, setup, and configuration of any such tools and utilities.

La persona o el equipo responsable de las soluciones que abarcan varios servidores crea una configuración que contiene sus requisitos.The person or team responsible for solutions that span multiple servers authors a configuration containing their requirements. Después, se puede empaquetar la configuración como un recurso compuesto mediante las instrucciones proporcionadas en la documentación del recurso compuesto.Next, the configuration would be packaged as a composite resource using instructions provided in the composite resource documentation. Por último, el nuevo recurso compuesto se debe publicar en una ubicación como un recurso compartido de archivos o una fuente de NuGet donde los equipos de la aplicación puedan usarlo en sus configuraciones.Finally, the new composite resource should be published to a location such as a file share or NuGet feed where application teams can consume it in their configurations.

Cada vez que el equipo publica una nueva versión, aumentaría el número de versión en el manifiesto del módulo para su recurso compuesto.Each time the team releases a new version, they would increment the version number in the module manifest for their composite resource. Los equipos de la aplicación incluyen el recurso compuesto en la configuración que crean para administrar las dependencias de la aplicación.The application teams include the composite resource in the configuration they author for managing application dependencies. Cuando los equipos de operaciones/seguridad publican una nueva versión de sus recursos, notifican a los equipos de la aplicación de que hay un cambio nuevo.When the Operations/Security teams release a new version of their resource, they notify the application teams of a new change.

Los equipos de la aplicación podrán desencadenar una versión para producción, donde el único cambio son las líneas base.The application teams might trigger a release to production where the only change is to baselines. Pero esto ofrece una oportunidad de evaluar el impacto en las aplicaciones antes de correr el riesgo de una interrupción del servicio.However, this provides an opportunity to evaluate impact to applications before risk of a service outage.

Nota

Entre los comentarios que hemos recibido sobre el uso de recursos compuestos se criticaba que para hacer cambios hacía falta compilar y publicar un nuevo MOF.Feedback regarding the use of composite resources has included criticism that making changes requires compiling and releasing a new MOF. es así por diseño.This is by design. Cada nueva versión de configuración debe incluir una referencia estática a una versión específica de cada recurso, y debe ser validada mediante pruebas antes de alcanzar los nodos del servidor de producción.Each new configuration release should include a static reference to a specific version of each resource, and should be validated by tests before reaching production server nodes. El proceso de probar y publicar cambios desde el control de código fuente crea un entorno seguro para publicar cambios en lotes pequeños pero frecuentes.The process of testing and releasing changes from source control creates a safe environment for releasing change in small but frequent batches.

Si quiere saber más sobre el uso de canalizaciones de versiones para administrar la infraestructura básica, vea las notas del producto: Modelo de canalización de versiones.For more information about using release pipelines to manage core infrastructure, see the whitepaper: The Release Pipeline Model.