PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

O PowerShell Desired State Configuration (DSC) simplifica muito o trabalho de implantar e configurar o sistema operacional, os papéis do servidor e os aplicativos quando você possui centenas de servidores.

No entanto, ao usar o DSC localmente, ou seja, não no MS Azure, surgem algumas nuances. Elas são particularmente perceptíveis se a organização for grande (com mais de 300 estações de trabalho e servidores) e ainda não tiver adentrado o mundo dos containers:

  • Não há relatórios completos sobre o estado dos sistemas. Se a configuração necessária não for aplicada em alguns servidores, não saberemos disso sem esses relatórios. É bastante difícil obter informações do servidor de relatórios integrado, e para um grande número de hosts – ainda por cima é demorado.
  • Falta escalabilidade e resiliência. Não é possível construir uma fazenda de servidores web DSC que tenha um banco de dados de resiliência único e um armazenamento comum de arquivos mof de configurações, módulos e chaves de registro.

Hoje, vou falar sobre como resolver o primeiro problema e obter dados para construção de relatórios. Tudo seria mais simples se pudéssemos usar SQL como banco de dados. A MS promete suporte integrado apenas no Windows Server 2019 ou na build do Windows Server 1803. Não é possível coletar dados utilizando o provedor OleDB também não será possível, uma vez que o servidor DSC utiliza um parâmetro nomeado que não é totalmente suportado pelo OleDbCommand.

Encontrei este método: para quem utiliza o Windows Server 2012 e 2016, é possível a página inicial e o mecanismo de busca. usar um banco de dados SQL como backend para o servidor DSC. Para isso, criaremos um ‘proxy’ na forma de um arquivo .mdb com tabelas vinculadas, que redirecionará os dados obtidos dos relatórios dos clientes para o banco de dados SQL Server.

Nota: para o Windows Server 2016 é necessário usar AccessDatabaseEngine2016x86, uma vez que o Microsoft.Jet.OLEDB.4.0 não é mais suportado.

Não vou entrar em detalhes sobre o processo de implantação do servidor DSC, pois ele é muito bem descrito aqui. Apenas destacarei alguns pontos. Se estiver implantando o servidor DSC em uma única web server com WSUS ou Kaspersky Security Center, será necessário alterar os seguintes parâmetros no script de criação da configuração:

  1. 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).

  2. Enable32BitAppOnWin64   = $true

    Se não fizer essa alteração, não será possível iniciar o AppPool do servidor DSC no IIS com o WSUS.

  3. Ao instalar o servidor DSC junto com o WSUS, desative o cache estático e dinâmico para o site DSC.

Vamos configurar o servidor DSC para usar o banco de dados SQL.

Criar banco de dados SQL

  1. Vamos criar um banco de dados SQL vazio chamado DSC.

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

  2. Vamos criar uma conta para conectar a esse banco de dados. Verifique previamente se a autenticação de contas está habilitada no servidor SQL, tanto para Windows quanto para SQL.

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

  3. Acesse a seção User Mapping. Selecione o banco de dados, neste caso – DSC. Dê permissões de proprietário do banco de dados.

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

  4. Pronto.

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

Criar esquema para o banco de dados DSC

É possível criar um esquema para o banco de dados DSC de duas maneiras:

  • manual, através de 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
  • importar dados do arquivo vazio devices.mdb como parte do módulo PSDesiredStateConfiguration através do Assistente de Importação de Dados do SQL.

    O arquivo Devices.mdb, com o qual vamos trabalhar, está localizado em C:WindowsSysWOW64WindowsPowerShellv1.0ModulesPSDesiredStateConfigurationPullServer.

  1. Para importar os dados, inicie o Assistente de Importação e Exportação do SQL Server.

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

  2. Escolha de onde vamos buscar os dados – neste caso, é o banco de dados Microsoft Access. Clique em Next.

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

  3. Selecione o arquivo do qual vamos importar o esquema.

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

  4. Indique para onde importar – neste caso, é o banco de dados SQL.

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

  5. Selecione o servidor SQL (Server Name) e o banco de dados para o qual vamos importar os dados (DataBase).

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

  6. Selecione a opção Copiar dados de uma ou mais tabelas ou visualizações.

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

  7. Escolha as tabelas das quais vamos importar o esquema do banco de dados.

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

  8. Marque a opção Executar imediatamente e clique em Finish.

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

  9. Pronto.

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

  10. Como resultado, as tabelas devem aparecer no banco de dados DSC.

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

Configuração do arquivo .mdb "proxy"

Criação de uma conexão ODBC com o servidor SQL. Assume-se que o MS Access não está instalado no servidor com DSC, portanto, a configuração do databases.mdb é realizada em um host intermediário com o MS Access instalado.

Vamos criar uma conexão ODBC do sistema com o servidor SQL (a arquitetura da conexão deve coincidir com a do MS Access – 64 ou 32). Isso pode ser feito através de:
— cmdlet do Powershell:

Add-OdbcDsn –Name DSC –DriverName 'SQL Server' –Platform '' –DsnType System –SetPropertyValue @('Description=Servidor Pull DSC',"Server=",'Trusted_Connection=yes','Database=DSC') –PassThru

— ou manualmente, através do assistente de conexões:

  1. Abrimos Ferramentas Administrativas. Selecionamos fontes de dados ODBC de acordo com a versão do MS Access instalado. Vamos para a aba DSN do Sistema e criamos uma conexão do sistema (Adicionar).

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

  2. Indicamos que vamos nos conectar ao servidor SQL. Pressionamos Concluir.

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

  3. Indicamos o nome e o servidor para a conexão. Depois, será necessário criar a conexão com os mesmos parâmetros no servidor DSC.

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

  4. Indicamos que para a conexão ao servidor SQL usamos o login previamente criado com o nome DSC.

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

  5. Indicamos o BD nas configurações de conexão do DSC.

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

  6. Pressionamos Concluir.

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

  7. Antes de finalizar a configuração, verificamos se a conexão está funcionando (Testar Fonte de Dados).

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

  8. Pronto.

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

Criação do banco de dados devices.mdb no MS Access. Iniciamos o MS Access e criamos um banco de dados vazio chamado devices.mdb.

PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

  1. Vamos para a aba Dados Externos, clicamos em Banco de Dados ODBC. Na janela que aparece, escolhemos Criar uma tabela vinculada para conexão com a fonte de dados.

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

  2. Na nova janela, escolhemos a aba Fonte de Dados da Máquina e pressionamos OK. Na nova janela, inserimos as credenciais para conexão ao servidor SQL.

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

  3. Selecionamos as tabelas que precisam ser vinculadas. Marcamos a caixa de seleção Salvar senha e pressionamos OK. A senha deve ser salva todas as vezes para todas as três tabelas.

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

  4. Nos índices, precisamos selecionar o seguinte:
    — TargetName para a tabela dbo_Devices;

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

    — NodeName ou IPAddress para dbo_RegistrationData;

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

    — NodeName ou IPAddress para dbo_StatusReport.

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

  5. Renomeamos as tabelas no MS Access, ou seja: removemos o prefixo dbo_, para que o DSC possa usá-las.

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

  6. Pronto.

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

  7. Salvamos o arquivo e fechamos o MS Access. Agora copiamos o devices.mdb obtido para o servidor DSC (por padrão em C:Program FilesWindowsPowershellDSCService) e o substituímos (se houver um existente).

Configuração do servidor DSC para uso do SQL

  1. Voltamos ao servidor DSC. Para se conectar ao SQL Server com nosso arquivo proxy, criaremos uma nova conexão ODBC no servidor DSC. O nome, a arquitetura e as configurações de conexão devem ser os mesmos que ao criar o arquivo MDB. É possível copiar o arquivo devices.mdb vazio já configurado daqui.
  2. Para usar o devices.mdb, é necessário fazer alterações no web.config do servidor de consulta DSC (por padrão – C:inetpubPSDSCPullServerweb.config):

— para Windows Server 2012

— para Windows Server 2016

Com isso, a configuração do servidor DSC está concluída.

Verificação do funcionamento do servidor DSC

  1. Verificaremos se o servidor DSC está acessível através do navegador web.

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

  2. Agora vamos verificar se o servidor de consulta DSC está funcionando corretamente. Para isso, no módulo xPSDesiredStateConfiguration, existe um script pullserversetuptests.ps1. Antes de executar este script, é necessário instalar o módulo PowerShell chamado Pester. Instalamos com Install-Module -Name Pester.
  3. Abrimos C:Program FilesWindowsPowerShellModulesxPSDesiredStateConfigurationDSCPullServerSetupPullServerDeploymentVerificationTest (no exemplo, versão 8.0.0.0.0).

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

  4. Abrimos PullServerSetupTests.ps1 e verificamos o caminho para o web.config do servidor DSC. Destacamos em vermelho o caminho para o web.config que será checado pelo script. Se necessário, alteramos este caminho.

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

  5. Executamos pullserversetuptests.ps1
    Invoke-Pester .PullServerSetupTests.ps1
    Está tudo funcionando.

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

  6. No SQL Management Studio, vemos que os hosts gerenciados estão enviando relatórios para o servidor de relatórios DSC e os dados estão sendo inseridos na base de dados DSC no SQL Server.

    PowerShell Desired State Configuration e um arquivo de texto: parte 1. Configuração do DSC Pull Server para trabalhar com banco de dados SQL

Isso é tudo. Nos próximos artigos, pretendo falar sobre como gerar relatórios com os dados obtidos e abordar questões sobre alta disponibilidade e escalabilidade.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster