O que é diferente / melhor entre DSC e scripts "regulares"?

8

Assisti a um vídeo no ITPro.tv sobre o DSC do PowerShell Desired State Configuration . Eles o apresentam e efetivamente executam um script. No entanto, essa foi a primeira introdução (real) de scripts também, então não percebi a diferença entre DSC e scripts regulares. Já fiz scripts regulares antes e talvez eles não tenham um exemplo tão bom; parecia que um script regular poderia instalar uma função / recurso e copiar alguns arquivos. Não vi o benefício para o DSC comparado a apenas um script. Além de uma máquina ser capaz de pesquisar por algum tipo de mudanças, que elas não cobriram na prática, apenas na teoria.

Quais são os benefícios do DSC em relação aos scripts tradicionais; por exemplo "instalar função, copiar arquivo"?

  • Com o PowerShell, você pode se conectar a máquinas remotas e pedir para fazerem coisas, para que isso não seja exclusivo do DSC.
  • Com o DSC, parece que você está fazendo algum tipo de compilação para criar um arquivo mof e depois o executa a partir do shell após o script, o que parece ser uma etapa desnecessária.
  • A visão geral do MSDN parece uma visão geral do PowerShell e não vejo as características diferenciadoras.
YetAnotherRandomUser
fonte

Respostas:

7

Como você disse, você pode fazer praticamente tudo o que faria com o DSC, com o código direto do PowerShell.

Mas, DSC é tudo sobre gerenciamento de configuração.

O gerenciamento de configuração é sobre padrões e práticas de uso de código e vários sistemas para garantir que um sistema esteja em um estado específico. Ref 1 2

Uma coisa importante sobre o gerenciamento de configuração é a idempotência. Significando que o código que descreve seu sistema no sistema de gerenciamento de configuração será verificado e executado periodicamente no seu sistema. Muitos scripts básicos não são bem projetados e farão a coisa correta na primeira vez em que você o usar para configurar um sistema, mas na próxima vez em que ocorrerem erros, duplicarão as coisas e assim por diante. Idealmente, os sistemas de gerenciamento de configuração abstraem uma grande parte do código de teste e verificação de estado que você precisa adicionar manualmente em um script, para torná-lo idempotente.

Outra coisa importante sobre o DSC e muitos outros sistemas de gerenciamento de configuração é criar recursos reutilizáveis que realmente fazem o trabalho que pode ser compartilhado com qualquer pessoa e todos no mundo. Dessa forma, sua "configuração" realmente deve ser apenas os poucos detalhes específicos que são específicos para o seu ambiente. Isso também significa que você deve escrever muito menos código, pois é possível reutilizar coisas que foram usadas e examinadas por muitas outras pessoas.

Eu incluí alguns links acima, mas existem muitos sites bons que você pode encontrar na Internet sobre a teoria dos sistemas de gerenciamento de configurações. A teoria geral se aplica a todos os sistemas de gerenciamento de configuração (fantoches, chef, dsc, ansible, etc.) que certamente vale a pena aprender e vale a pena usar na maioria dos ambientes.

Zoredache
fonte
1

Sugiro que você dê uma olhada em https://docs.microsoft.com/en-us/powershell/dsc/dscforengineers#i-have-powershell-why-do-i-need-desired-state-configuration .

Eu tenho feito devops como líder de projeto em C # desde muito antes de ser chamado assim. Eu escrevi dezenas desses tipos de scripts "configurar um compartilhamento", "criar um aplicativo no IIS" e "verificar se o IIS Rewrite está instalado". Normalmente, me pedem para fazer isso por alguém que pensa "É apenas uma linha de código para executar o X". Mas e se a coisa já existir? E se as etapas 1,3 já existirem, mas 2,4 não existirem, ou a etapa 2 (digamos um pool de aplicativos do IIS) não estiver configurada exatamente da mesma forma que da última vez?

Sim, o DSC exige que você nomeie todas as "partes" do script. O que parece entediante no começo. Mas se você não nomear, o mecanismo e os provedores DSC não poderão dizer qual parte do script está demorando muito ou qual parte do script está falhando.

Se você estiver executando pastas, IIS, implantação de aplicativos ou Recursos do Windows, recomendo que você invista alguns dias no aprendizado do DSC.

yzorg
fonte