O PowerShell Desired State Configuration (DSC) simplifica muito o trabalho de implantação e configuração do sistema operacional, funções de servidor e aplicativos quando você tem centenas de servidores.
Mas ao usar o DSC no local, ou seja, não no MS Azure, existem algumas nuances. Eles são especialmente perceptíveis se a organização for grande (a partir de 300 estações de trabalho e servidores) e ainda não tiver descoberto o mundo dos containers:
- Não existem relatórios completos sobre o estado dos sistemas. Se a configuração necessária não foi aplicada em alguns servidores, sem esses relatórios não saberemos disso. É muito difícil obter informações do servidor de relatórios integrado e, para um grande número de hosts, também pode levar muito tempo.
- Carece de escalabilidade e tolerância a falhas. É impossível construir um farm de servidores web pull DSC que tenha um único banco de dados tolerante a falhas e um armazenamento comum de arquivos mof para configurações, módulos e chaves de registro.
Hoje vou contar como você pode resolver o primeiro problema e obter dados para relatórios. Tudo seria mais simples se o SQL pudesse ser usado como banco de dados. EM
Encontrei este método: para quem usa Windows Server 2012 e 2016, você pode
Nota: Para Windows Server 2016 você deve usar
Não vou entrar em detalhes sobre o processo de implantação de um servidor pull DSC, está muito bem descrito
-
UseSecurityBestPractices = $false
Caso contrário, o TLS 1.0 será desabilitado e você não conseguirá se conectar ao banco de dados SQL. O Kaspersky Security Center também não funcionará (o problema deve ser resolvido no Kaspersky Security Center v11).
-
Enable32BitAppOnWin64 = $true
Se você não fizer essa alteração, não poderá executar o servidor AppPool DSC no IIS com WSUS.
- Ao instalar o DSC Server com WSUS, desative o cache estático e dinâmico do site DSC.
Vamos prosseguir com a configuração do servidor DSC para usar o banco de dados SQL.
Criando um banco de dados SQL
- Vamos criar um banco de dados SQL vazio chamado DSC.
- Vamos criar uma conta para conectar-se a este banco de dados. Primeiro, verifique se o servidor SQL permite autenticação de contas Windows e SQL.
- Vá para a seção Mapeamento de usuário. Selecione o banco de dados, neste caso DSC. Damos os direitos do proprietário do banco de dados.
- Concluído.
Criando um esquema para o banco de dados DSC
Existem duas maneiras de criar um esquema para um banco de dados DSC:
- de forma independente, através de um script TSQL
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Devices]( [TargetName] [nvarchar](255) NOT NULL, [ConfigurationID] [nvarchar](255) NOT NULL, [ServerCheckSum] [nvarchar](255) NOT NULL, [TargetCheckSum] [nvarchar](255) NOT NULL, [NodeCompliant] [bit] NOT NULL, [LastComplianceTime] [datetime] NULL, [LastHeartbeatTime] [datetime] NULL, [Dirty] [bit] NOT NULL, [StatusCode] [int] NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[RegistrationData]( [AgentId] [nvarchar](255) NOT NULL, [LCMVersion] [nvarchar](255) NULL, [NodeName] [nvarchar](255) NULL, [IPAddress] [nvarchar](255) NULL, [ConfigurationNames] [nvarchar](max) NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO CREATE TABLE [dbo].[StatusReport]( [JobId] [nvarchar](50) NOT NULL, [Id] [nvarchar](50) NOT NULL, [OperationType] [nvarchar](255) NULL, [RefreshMode] [nvarchar](255) NULL, [Status] [nvarchar](255) NULL, [LCMVersion] [nvarchar](50) NULL, [ReportFormatVersion] [nvarchar](255) NULL, [ConfigurationVersion] [nvarchar](255) NULL, [NodeName] [nvarchar](255) NULL, [IPAddress] [nvarchar](255) NULL, [StartTime] [datetime] NULL, [EndTime] [datetime] NULL, [Errors] [nvarchar](max) NULL, [StatusData] [nvarchar](max) NULL, [RebootRequested] [nvarchar](255) NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO
- importe dados de devices.mdb vazio como parte do módulo PS PSDesiredStateConfiguration por meio do Assistente de importação de dados SQL.
O Devices.mdb com o qual trabalharemos está localizado em C:WindowsSysWOW64WindowsPowerShellv1.0ModulesPSDesiredStateConfigurationPullServer.
- Para importar dados, execute o Assistente de Importação e Exportação do SQL Server.
- Escolhemos de onde obteremos os dados - no nosso caso é um banco de dados do Microsoft Access. Clique em Avançar.
- Selecione o arquivo do qual importamos o diagrama.
- Indicamos onde importar - para nós é um banco de dados SQL.
- Selecione o servidor SQL (Nome do Servidor) e o banco de dados para o qual importaremos os dados (Banco de Dados).
- Selecione a opção Copiar dados de uma ou mais tabelas ou visualizações (copiar dados de tabelas ou visualizações).
- Selecionamos as tabelas das quais importaremos o esquema do banco de dados.
- Marque a caixa de seleção Executar imediatamente e clique em Concluir.
- Concluído.
- Como resultado, as tabelas deverão aparecer no banco de dados DSC.
Configurando um arquivo “proxy” .mdb
Criando uma conexão ODBC com um servidor SQL. Supõe-se que o MS Access não esteja instalado no servidor que executa o DSC, portanto, a configuração do databases.mdb é feita em um host intermediário com o MS Access instalado.
Vamos criar uma conexão ODBC do sistema com o servidor SQL (o número de bits da conexão deve corresponder ao número de bits do MS Access - 64 ou 32). Ele pode ser criado usando:
- Cmdlet Powershell:
Add-OdbcDsn –Name DSC –DriverName 'SQL Server' –Platform '<64-bit or 32-bit>' –DsnType System –SetPropertyValue @('Description=DSC Pull Server',"Server=<Name of your SQL Server>",'Trusted_Connection=yes','Database=DSC') –PassThru
— ou manualmente, usando o assistente de conexão:
- Abra ferramentas administrativas. Selecionamos fontes de dados ODBC dependendo da versão do MS Access instalado. Vá para a guia System DSN e crie uma conexão de sistema (Adicionar).
- Indicamos que nos conectaremos ao servidor SQL. Clique em Concluir.
- Especifique o nome e o servidor ao qual se conectar. Em seguida, será necessário criar uma conexão com os mesmos parâmetros no servidor DSC.
- Indicamos que para conectar-se ao servidor SQL, utilizamos um login criado anteriormente com o nome DSC.
- Especificamos o banco de dados nas configurações de conexão DSC.
- Clique em Concluir.
- Antes de concluir a configuração, verificamos se a conexão está funcionando (Fonte de dados de teste).
- Concluído.
Criando um banco de dados devices.mdb no MS Access. Inicie o MS Access e crie um banco de dados vazio chamado devices.mdb.
- Vá para a guia Dados Externos e clique em Banco de Dados ODBC. Na janela exibida, selecione Criar uma tabela vinculada para conectar-se à fonte de dados.
- Na nova janela, selecione a guia Fonte de dados da máquina e clique em OK. Na nova janela, insira as credenciais para se conectar ao servidor SQL.
- Selecione as tabelas que precisam ser vinculadas. Marque a caixa Salvar senha e clique em OK. Salve a senha sempre para todas as três tabelas.
- Nos índices você precisa selecionar o seguinte:
— TargetName para a tabela dbo_Devices;
— NodeName ou IPAddress para dbo_RegistrationData;
— NodeName ou IPAddress para dbo_StatusReport. - Vamos renomear as tabelas no MS Access, a saber: remover o prefixo dbo_ para que o DSC possa utilizá-las.
- Concluído.
- Salve o arquivo e feche o MS Access. Agora copiamos o devices.mdb resultante para o servidor DSC (por padrão em C: Program FilesWindowsPowershellDSCService) e substituímos o existente por ele (se existir).
Configurando o servidor DSC para usar SQL
- Voltamos ao servidor DSC. Para conectar-se ao servidor SQL com nosso arquivo proxy, vamos criar uma nova conexão ODBC no servidor DSC. O nome, a profundidade de bits e as configurações de conexão devem ser os mesmos da criação do arquivo MDB. Você pode copiar o devices.mdb vazio já configurado daqui.
- Para usar devices.mdb, você precisa fazer alterações no web.config do servidor pull DSC (o padrão é C:inetpubPSDSCPullServerweb.config):
- para Windows Server 2012
<add key="dbprovider" value="System.Data.OleDb">
<add key="dbconnectionstr" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:Program FilesWindowsPowerShellDscServiceDevices.mdb;">
- para Windows Server 2016
<add key="dbprovider" value="System.Data.OleDb">
<add key="dbconnectionstr" value="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:Program FilesWindowsPowerShellDscServiceDevices.mdb;">
Isso conclui a configuração do servidor DSC.
Verificando a funcionalidade do servidor DSC
- Vamos verificar se o servidor DSC está acessível através de um navegador web.
- Agora vamos verificar se o servidor pull DSC está funcionando corretamente. Para fazer isso, o módulo xPSDesiredStateConfiguration inclui o script pullserversetuptests.ps1. Antes de executar este script, você deve instalar um módulo Powershell chamado Pester. Instale-o Install-Module -Name Pester.
- Abra C:Program FilesWindowsPowerShellModulesxPSDesiredStateConfiguration<module version>DSCPullServerSetupPullServerDeploymentVerificationTest (na versão de exemplo 8.0.0.0.0).
- Abra PullServerSetupTests.ps1 e verifique o caminho para o web.config do servidor DSC. O caminho para web.config, que verificará o script, está destacado em vermelho. Se necessário, mudamos esse caminho.
- Execute pullserversetuptests.ps1
Invocar-Pester.PullServerSetupTests.ps1
Tudo funciona. - No SQL Management Studio, vemos que os hosts administrados enviam relatórios para o servidor de relatórios DSC e os dados acabam no banco de dados DSC no servidor SQL.
Isso é tudo. Nos artigos a seguir pretendo explicar como construir relatórios sobre os dados obtidos e abordarei questões sobre tolerância a falhas e escalabilidade.
Fonte: habr.com