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-2
e 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 deMyDscConfiguration
. - O nó refere-se a uma entrada específica na coleção AllNodes depois de ser filtrada com . Where() ou . ForEach().
- Pode ler mais sobre estes métodos no about_arrays
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.