Informazioni sul ruolo di DSC in una pipeline CI/CDUnderstanding DSC's role in a CI/CD pipeline

Questo articolo descrive i tipi di approcci disponibili per la combinazione di configurazioni e risorse.This article describes the types of approaches available for combining configurations and resources. L'obiettivo per ogni scenario è lo stesso: ridurre la complessità quando sono preferibili più configurazioni per raggiungere uno stato finale della distribuzione del server.The goal for each scenario is the same, to reduce complexity when multiple configurations are preferred to reach a server deployment end state. Ad esempio, si possono avere più team che contribuiscono al risultato di una distribuzione di server, da un lato il proprietario dell'applicazione che gestisce lo stato dell'applicazione e dall'altro un team centrale che rilascia le modifiche per le baseline della sicurezza.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. Di seguito sono descritte in dettaglio le caratteristiche di ogni approccio con i relativi vantaggi e rischi.The nuances of each approach including the benefits and risks are detailed here.

Flusso di processo di una pipeline CI/CD

Tipi di tecniche di creazione e modifica in collaborazioneTypes of Collaborative Authoring Techniques

Esistono due soluzioni integrate in Gestione configurazione locale per abilitare questo concetto:There are two solutions built in to Local Configuration Manager to enable this concept:

ConcettoConcept Informazioni dettagliateDetailed Information
Configurazioni parzialiPartial Configurations DocumentazioneDocumentation
Risorse compositeComposite Resources DocumentazioneDocumentation

Informazioni sull'impatto di ogni approccioUnderstanding The Impact of Each Approach

Ognuna di queste soluzioni può essere usata per gestire il risultato di una distribuzione di server.Either of these solutions can be used to manage the outcome of a server deployment. Tuttavia, vi è una differenza significativa in termini di impatto tra i vari approcci.However, there is significant difference in the impact of using each approach.

Configurazioni parzialiPartial Configurations

Quando si usano configurazioni parziali, la gestione della configurazione locale è configurata in modo da gestire più configurazioni in modo indipendente.When using Partial Configurations, Local Configuration Manager is configured to manage multiple configurations independently. Le configurazioni vengono compilate in modo indipendente e quindi assegnate al nodo.Configurations are compiled independently and then assigned to the node. Questa operazione richiede che la gestione della configurazione locale venga configurata in anticipo con il nome di ogni configurazione.This requires LCM to be configured in advance with the name of each configuration.

Diagramma delle configurazioni parziali

Le configurazioni parziali consentono a due o più team di controllare completamente la configurazione di un server, spesso senza il vantaggio della comunicazione o collaborazione.Partial Configurations provide two, or more, teams complete control over configuration of a server, often without the benefit of communication or collaboration.

I clienti hanno indicato nei propri commenti che questo può causare conflitti tra le risorse, override accidentali e in definitiva la perdita del controllo reale della configurazione dell'asset.Customers have provided feedback that this can lead to resource conflicts, unintentional overrides, and ultimately loss of true configuration control of the asset.

I clienti hanno inoltre indicato che, usando questo modello, le modifiche apportate alla configurazione dai team di gestione probabilmente non vengono completamente testate attraverso una pipeline di rilascio, con risultati imprevisti nell'ambiente di produzione.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.

È essenziale che sia usata una singola pipeline per valutare tutte le modifiche rilasciate ai server.It is critical that a single pipeline be used to evaluate all changes released to servers.

Nell'illustrazione seguente il Team B rilascia la propria configurazione parziale al Team A. Il Team A esegue i propri test su un server applicando entrambe le configurazioni.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. In questo modello solo un'autorità è autorizzata ad apportare modifiche nell'ambiente di produzione.In this model, only one authority has permission to make changes in production.

Diagramma di una pipeline singola parziale

Quando il Team B richiede delle modifiche, deve inviare una richiesta pull per l'ambiente di controllo del codice sorgente del Team A.When changes are required from Team B, they should submit a Pull Request against Team A's source control environment. Il Team A esamina le modifiche usando l'automazione dei test e rilascia la configurazione alla produzione quando è certo che le modifiche non causano errori nelle applicazioni o nei servizi ospitati dal server.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.

Risorse compositeComposite Resources

Una risorsa composita è semplicemente una configurazione DSC inserita in un pacchetto come risorsa.A composite resource is simply a DSC Configuration packaged as a resource. Non sono previsti requisiti speciali per configurare Gestione configurazione locale in modo che accetti le risorse composite.There are no special requirements for configuring LCM to accept composite resources. Le risorse vengono usate all'interno di una nuova configurazione e un'unica compilazione produce un file MOF.The resources are used within a new configuration and a single compilation results in one MOF file.

Diagramma di una risorsa composita

Esistono due scenari comuni per le risorse composite.There are two common scenarios for composite resources. Il primo consiste nel ridurre la complessità e astrarre concetti univoci.The first is to reduce complexity and abstract unique concepts. Il secondo consiste nel consentire l'inserimento in pacchetti delle baseline per un team dell'applicazione per distribuire in modo sicuro alla produzione attraverso la pipeline di rilascio dopo aver superato tutti i test.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"
  }
}

Le risorse composite alzano di livello sia la composizione che la collaborazione usando una pipeline e creando maturità operativa.Composite resources promote both composition and collaboration using a pipeline while building operational maturity.

È possibile che l'utente stia già usando le risorse composite senza saperlo.You might be already using composite resources without realizing it. Un esempio è ServiceSet.An example is ServiceSet. Questa risorsa gestisce lo stato di più servizi Windows senza indicarli singolarmente.This resource manages the state of multiple Windows Services without listing them individually. La proprietà Name accetta una matrice di stringhe per specificare il nome di ogni servizio.The Name property accepts an array of strings to provide the name of each service. Quando viene compilata la configurazione, il file MOF contiene una sezione Service univoca per ogni nome passato a ServiceSet.When the configuration is compiled, the MOF will contain a unique Service section for each of the Names passed to ServiceSet.

Le organizzazioni possono avere "agenti" o "middleware" che devono essere installati in ogni server.Organizations might have "agents" or "middleware" that should be installed on every server. Una risorsa composita è l'approccio migliore per gestire le dipendenze, l'installazione e la configurazione di tali strumenti e utilità.A composite resource is the best answer to managing the dependencies, setup, and configuration of any such tools and utilities.

La persona o il team responsabile delle soluzioni che si estendono su più server crea una configurazione che contiene i requisiti.The person or team responsible for solutions that span multiple servers authors a configuration containing their requirements. Successivamente, la configurazione viene compressa come risorsa composita seguendo le istruzioni contenute nella documentazione della risorsa composita.Next, the configuration would be packaged as a composite resource using instructions provided in the composite resource documentation. Infine, la nuova risorsa composita deve essere pubblicata in un percorso, ad esempio una condivisione file o un feed NuGet in cui i team dell'applicazione possano usarla per le configurazioni.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.

Ogni volta che il team rilascia una nuova versione, incrementa il numero di versione nel manifesto del modulo per la risorsa composita.Each time the team releases a new version, they would increment the version number in the module manifest for their composite resource. I team dell'applicazione includono la risorsa composita nella configurazione che creano per la gestione delle dipendenze dell'applicazione.The application teams include the composite resource in the configuration they author for managing application dependencies. Quando i team addetti a operazioni e sicurezza rilasciano una nuova versione della propria risorsa, informano i team dell'applicazione che è stata apportata una nuova modifica.When the Operations/Security teams release a new version of their resource, they notify the application teams of a new change.

I team dell'applicazione possono attivare un rilascio alla produzione in cui l'unica modifica è apportata alle baseline.The application teams might trigger a release to production where the only change is to baselines. Tuttavia, questo offre la possibilità di valutare l'impatto sulle applicazioni prima di rischiare un'interruzione del servizio.However, this provides an opportunity to evaluate impact to applications before risk of a service outage.

Nota

Il feedback relativo all'uso delle risorse composite include anche critiche per il fatto che apportare modifiche richiede la compilazione e il rilascio di un nuovo file MOF.Feedback regarding the use of composite resources has included criticism that making changes requires compiling and releasing a new MOF. Questo si verifica per motivi strutturali.This is by design. Ogni nuova versione della configurazione deve includere un riferimento statico a una versione specifica di ogni risorsa e deve essere convalidata dai test prima di raggiungere i nodi del server di produzione.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. Il processo di test e rilascio delle modifiche dal controllo del codice sorgente consente di creare un ambiente sicuro per il rilascio delle modifiche in batch di piccole dimensioni ma frequenti.The process of testing and releasing changes from source control creates a safe environment for releasing change in small but frequent batches.

Per altre informazioni sull'uso di pipeline di versione per gestire l'infrastruttura di base, vedere il white paper sul modello di pipeline di versione.For more information about using release pipelines to manage core infrastructure, see the whitepaper: The Release Pipeline Model.