Partilhar via


Utilizar dados de configuração no DSC

Aplica-se a: Windows PowerShell 4.0, Windows PowerShell 5.0

Ao utilizar o parâmetro DSC ConfigurationData incorporado, pode definir dados que podem ser utilizados numa configuração. Isto permite-lhe criar uma única configuração que pode ser utilizada para vários nós ou para ambientes diferentes. Por exemplo, se estiver a desenvolver uma aplicação, pode utilizar uma configuração para ambientes de desenvolvimento e produção e utilizar dados de configuração para especificar dados para cada ambiente.

Este tópico descreve a estrutura da tabela hash ConfigurationData . Para obter exemplos de como utilizar dados de configuração, veja Separar dados de configuração e de ambiente.

O parâmetro comum ConfigurationData

Uma configuração do DSC utiliza um parâmetro comum, ConfigurationData, que especifica quando compila a configuração. Para obter informações sobre a compilação de configurações, veja Configurações do DSC.

O parâmetro ConfigurationData é uma tabela hash que tem de ter, pelo menos, uma chave denominada AllNodes. Também pode ter uma ou mais chaves.

Nota

Os exemplos neste tópico utilizam uma única chave adicional (que não seja a chave AllNodes denominada ), com o nome NonNodeData, mas pode incluir qualquer número de chaves adicionais e dar-lhes o nome que quiser.

$MyData =
@{
    AllNodes = @()
    NonNodeData = ""
}

O valor da chave AllNodes é uma matriz. Cada elemento desta matriz também é uma tabela hash que tem de ter, pelo menos, uma chave denominada NodeName:

$MyData =
@{
    AllNodes =
    @(
        @{
            NodeName = "VM-1"
        },


        @{
            NodeName = "VM-2"
        },


        @{
            NodeName = "VM-3"
        }
    );

    NonNodeData = ""
}

Também pode adicionar outras chaves a cada tabela hash:

$MyData =
@{
    AllNodes =
    @(
        @{
            NodeName = "VM-1"
            Role     = "WebServer"
        },


        @{
            NodeName = "VM-2"
            Role     = "SQLServer"
        },


        @{
            NodeName = "VM-3"
            Role     = "WebServer"
        }
    );

    NonNodeData = ""
}

Para aplicar uma propriedade a todos os nós, pode criar um membro da matriz AllNodes que tenha um NodeName de *. Por exemplo, para atribuir uma LogPath propriedade a cada nó, pode fazê-lo:

$MyData =
@{
    AllNodes =
    @(
        @{
            NodeName     = "*"
            LogPath      = "C:\Logs"
        },


        @{
            NodeName     = "VM-1"
            Role         = "WebServer"
            SiteContents = "C:\Site1"
            SiteName     = "Website1"
        },


        @{
            NodeName     = "VM-2"
            Role         = "SQLServer"
        },


        @{
            NodeName     = "VM-3"
            Role         = "WebServer"
            SiteContents = "C:\Site2"
            SiteName     = "Website3"
        }
    );
}

Este é o equivalente a adicionar uma propriedade com um nome de LogPath com um valor de "C:\Logs" para cada um dos outros blocos (VM-1, VM-2e VM-3).

Definir a tabela hash ConfigurationData

Pode definir ConfigurationData como uma variável no mesmo ficheiro de script que uma configuração (como nos nossos exemplos anteriores) ou num ficheiro separado .psd1 . Para definir ConfigurationData num .psd1 ficheiro, crie um ficheiro que contenha apenas a tabela hash que representa os dados de configuração.

Por exemplo, pode criar um ficheiro com o nome MyData.psd1 com o seguinte conteúdo:

@{
    AllNodes =
    @(
        @{
            NodeName    = 'VM-1'
            FeatureName = 'Web-Server'
        },

        @{
            NodeName    = 'VM-2'
            FeatureName = 'Hyper-V'
        }
    )
}

Compilar uma configuração com dados de configuração

Para compilar uma configuração para a qual definiu dados de configuração, transmita os dados de configuração como o valor do parâmetro ConfigurationData .

Esta ação irá criar um ficheiro MOF para cada entrada na matriz AllNodes . Cada ficheiro MOF será nomeado com a NodeName propriedade da entrada de matriz correspondente.

Por exemplo, se definir dados de configuração como no MyData.psd1 ficheiro acima, compilar uma configuração criará ficheiros VM-1.mof e VM-2.mof .

Compilar uma configuração com dados de configuração com uma variável

Para utilizar dados de configuração definidos como uma variável no mesmo .ps1 ficheiro que a configuração, transmita o nome da variável como o valor do parâmetro ConfigurationData ao compilar a configuração:

MyDscConfiguration -ConfigurationData $MyData

Compilar uma configuração com dados de configuração através de um ficheiro de dados

Para utilizar dados de configuração definidos num ficheiro .psd1, transmita o caminho e o nome desse ficheiro como o valor do parâmetro ConfigurationData ao compilar a configuração:

MyDscConfiguration -ConfigurationData .\MyData.psd1

Utilizar variáveis ConfigurationData numa configuração

O DSC fornece as seguintes variáveis especiais que podem ser utilizadas num script de configuração:

  • $AllNodes refere-se a toda a coleção de nós definida em ConfigurationData. Pode filtrar a coleção AllNodes com . Where() e . ForEach().
  • ConfigurationData refere-se a toda a tabela hash que é transmitida como o parâmetro ao compilar uma configuração.
  • MyTypeName contém o nome de configuração em que a variável é utilizada. Por exemplo, na configuração MyDscConfiguration, o $MyTypeName terá um valor de MyDscConfiguration.
  • O nó refere-se a uma entrada específica na coleção AllNodes depois de ser filtrada com . Where() ou . ForEach().

Utilizar dados não nó

Como vimos em exemplos anteriores, a tabela hash ConfigurationData pode ter uma ou mais chaves para além da chave AllNodes necessária. Nos exemplos deste tópico, utilizámos apenas um único nó adicional e demos-lhe o nome NonNodeData. No entanto, pode definir qualquer número de chaves adicionais e atribuir-lhes o nome que quiser.

Para obter um exemplo de utilização de dados não nó, veja Separar dados de configuração e de ambiente.

Consulte também