Permitindo recursos duplicados idênticos em uma configuraçãoAllowing for Identical Duplicate Resources in a Configuration

O DSC não permite nem manipula definições de recursos conflitantes dentro de uma configuração.DSC does not allow or handle conflicting resource definitions within a configuration. Em vez de tentar resolver o conflito, ele simplesmente falha.Instead of trying to resolve the conflict, it simply fails. Como a reutilização de configuração é cada mais utilizada por meio de recursos de composição, etc., os conflitos ocorrerão com mais frequência.As configuration reuse becomes more utilized through composite resources, etc. conflicts will occur more often. Quando definições de recursos conflitantes forem idênticas, o DSC deverá ter inteligência para permiti-las.When conflicting resource definitions are identical, DSC should be smart and allow this. Com esta versão, damos suporte a várias instâncias de recursos com definições idênticas:With this release, we support having multiple resource instances that have identical definitions:

Configuration IIS_FrontEnd
{
    WindowsFeature FE_IIS         #Identical resource
    {
        Ensure = 'Present'
        Name = 'Web-Server'
    }

    WindowsFeature FTP
    {
        Ensure = 'Present'
        Name = 'Web-FTP-Server'
    }
}

Configuration IIS_Worker
{
    WindowsFeature Worker_IIS      #Identical resource
    {
        Ensure = 'Present'
        Name = 'Web-Server'
    }

    WindowsFeature ASP
    {
        Ensure = 'Present'
        Name = 'Web-ASP-Net45'
    }
}

Configuration WebApplication
{
    IIS_Frontend Web {}

    IIS_Worker ASP {}
}

Em versões anteriores, o resultado seria uma compilação com falha devido a um conflito entre as instâncias de WindowsFeature FE_IIS e WindowsFeature Worker_IIS tentando garantir que a função “Web-Server” está instalada.In previous releases, the result would be a failed compilation due to a conflict between the WindowsFeature FE_IIS and WindowsFeature Worker_IIS instances trying to ensure the 'Web-Server' role is installed. Observe que todas as propriedades que estão sendo configuradas são idênticas nessas duas configurações.Notice that all of the properties that are being configured are identical in these two configurations. Uma vez que todas as propriedades nesses dois recursos são idênticas, agora isso resultará em uma compilação bem-sucedida.Since all of the properties in these two resources are identical, this will result in a successful compilation now.

Se alguma das propriedades for diferente entre os dois recursos, elas não serão consideradas idênticas e a compilação falhará:If any of the properties are different between the two resources, they will not be considered identical and compilation will fail:

Configuration IIS_FrontEnd
{
    WindowsFeature FE_IIS
    {
        Ensure = 'Present'     # Ensure is Present here
        Name = 'Web-Server'
    }

    WindowsFeature FTP
    {
        Ensure = 'Present'
        Name = 'Web-FTP-Server'
    }
}

Configuration IIS_Worker
{
    WindowsFeature Worker_IIS
    {
        Ensure = 'Absent'      # Ensure property is Absent instead of Present
        Name = 'Web-Server'
    }

    WindowsFeature ASP
    {
        Ensure = 'Present'
        Name = 'Web-ASP-Net45'
    }
}

Configuration WebApplication
{
    IIS_Frontend Web {}

    IIS_Worker ASP {}
}

Essa configuração bem semelhante falhará porque os recursos WindowsFeature FE_IIS e WindowsFeature Worker_IIS não serão mais idênticos e, portanto, entrarão em conflito.This very similar configuration will fail because the WindowsFeature FE_IIS and the WindowsFeature Worker_IIS resources are no longer identical and therefore conflict.