PowerShell V4 Desired State Configuration


 

Pois é galera, o Windows 8.1 e o W2012 R2 estão na sua versão RTM e agora eu me animo a brincar com o PowerShell 4.0. Existem algumas features bem interessantes como o novo(fantástico) common parameter PipeLineVariable .Vou blogar sobre ele logo logo, mas só para adiantar ele possibilita você salvar em uma variavel o pipeline corrente. Isso é muito bom e útil quando você precisa acessar propriedades de objetos que foram perdidas durante o fluxo do pipeline.

Mas voltando oa DSC ou Desired State Configuration, na minha opinião é a melhor feature do V4 e merece uma boa atenção.

1. Mas o que é o DSC ?

Em palavras simples, é parecido com um grande arquivo .INI em que você , usando palavras chaves,atribui a configuração desejada a seu servidor ou grupo de servidores. Dai que vem o nome – Estado de Configuração Desejada.

Eu disse usando palavras chaves (ou o nome correto – bloco de  recurso) , porque não existe programação em PowerShell . Na verdade existe um recurso em que você pode programar, mas todos os recursos são configurados usando as palavras chaves, ou blocos de recursos(blocks). Cada bloco tem suas particularidades em que você configura da maneira desejada.Essas particularidades são chamadas propriedades.

Desta maneira você pode auditar seus servidores se eles estão em conformidade ou não com sua politica de configuração. Você pode por exemplo verificar se uma determinada feature do Windows está instalada e se não tiver, aplicar ou não a instalação. Da mesma maneira, você pode garantir que um determinado folder ou conta de usuário não exista nos seus servidores, determinando que na auditoria , caso ele exista, o elimine.

É uma fantástica ferramenta de auditoria e , com certeza, ainda está em fase de amadurecimento. Infelizmente caso eu queria que 10 foldes existam por exemplo, eu preciso replicar o bloco de recursos 10 vezes com o folder. Pelo que entendi não existe uma maneira de fazer uma array com os folders e aplicar em um bloco de recurso somente. Desta maneira seu arquivo de configuração provavelmente será gigantesco, ou não, dependendo de sua politica de segurança e configuração de servidores.

De qualquer maneira é uma ferramenta que requer atenção e pode mudar drasticamente o uso de outras como o SCCM.

 

2. Membros de um script DSC

Como eu disse acima, o DSC  é um arquivo contendo scripts declarativos e não programados, tendo em vista esta característica, existem regras de uso e sequencias, nas quais são :

 

2.1  Nome do Script DSC

Todo script DSC deve começar com a palavra chave Configuration  e o nome da configuração. Você pode criar quantas configurações quiser, segmentando por politica de segurança por dominios ou qualquer que seja  a sua necessidade.

Configuration <NomeDaMinhaConfiguracao> {

<To Do>


}

 

2.2 Bloco Node

O bloco node é a configuração secundaria principal do script DSC. Ele informa em qua(is) servidores serão aplicados a sua politica, definida nos blocos de recursos subsequentes.

Configuration <NomeDaMinhaConfiguracao> {

Node <NomeDoServidor> {



}

Node <NomeDoServidor> {



}

}

*dica – Você pode aplicar sua politica passando dinamicamente os servidores por parametros, não necessitando declarar cada um :

Configuration WindowsServerParametrized {

param($ComputerName)



Node $ComputerName {

<To Do>

}


}
}

 

2.3 Blocos de Recursos

Os blocos de recursos são os containers de sua configuração. Eles que definem qual role vai ser aplicada , como, açao tomada etc..

O Powerfshell V4.0 vem com alguns blocos built-in como unzip de arquivos,aplicação de features, gerencia,ento de registry… e você pode programar novos, conforme sua necessidade.

Cada bloco de recurso tem seu nome pré-definido, como para fazer o unzip de arquivos o nome é Archive. A descrição dos blocos pré-definidos você pode encontrar aqui,juntamente com alguns exemplos – Built-In Windows PowerShell Desired State Configuration Resources

Cada bloco de recurso possui suas propriedades, nas quais você irá configurar sua politica. Um exemplo simples de uma configuração é a definição de um unzip de arquivo que está no folder c:\zip para o mesmo folder. Definimos o Path (local do arquivo), Destination (para onde vai) e o Ensure, que no caso é propriedade comum a praticamente todo os blocos de recurso, pois ela que define se sua politica será de aplicação (Present)  ou remoção (Absent) do recurso corrente.

Obviamente existem uma gama de propriedades de configuração em cada recurso, para ter acesso a elas simplesmente no ISE coloque o cursor sobre o nome do recurso e com a tecla CTRL apertada, tecle espaço também. Podemos usar WMI, ja que os recursos são modulos  e possuem a DLL relacionada configurada como WMI, mas isso vai um pouco mais fundo do que queremos neste post.  No meu segundo treinamento de PowerShell 3.0, o Advanced, temos um módulo dedicado a WMI aonde vemos ela deep dive.

Configuration WindowsServerParametrized {

param($ComputerName)

Node $ComputerName {

Archive UnZipfiles {

Ensure = "Present"
Path = "c:\zip\zip.zip"
Destination = "C:\zip"
Force = $True
}


}
}

 

Basicamente é esta configuração que devemos montar em um DSC file e quando você executar seu arquivo de configuração, será criado um arquivo MOF para cada servidor em que foi passado pela sua chamada ou que está hardcode no bloco Node. Este arquivo MOF contém toda a configuraçao e você pode abri-lo usando o notepad para uma rápida verificada de como funciona.

Quer ver na pratica ? Assista ao video :

 

PowerShell V4 – Desired State Configuration

 

www.aprendapowershell.com.br

About Laerte Junior

Laerte Junior Laerte Junior is a SQL Server specialist and an active member of WW SQL Server and the Windows PowerShell community. He also is a huge Star Wars fan (yes, he has the Darth Vader´s Helmet with the voice changer). He has a passion for DC comics and living the simple life. "May The Force be with all of us"
This entry was posted in Powershell. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s