Domesticando o WSUS com Ansible e mais


Bem, agora é hora de fazer o Windows atualizar os amigos do mundo Open Source. Neste artigo, diversificamos a vida integrando o Ansible a todas as fontes possíveis de atualizações para máquinas Windows. Embora os recursos do sistema sejam muito mais amplos do que simplesmente implantar atualizações em servidores e estações de trabalho, você precisa começar de algum lugar.


Ao mesmo tempo, nos livraremos do inconveniente irritante do WSUS, se você preferir a "velha escola".


Por que não gostamos do WSUS


Não vou falar sobre a configuração do Windows Server Update Services, pois é trivial. Concentre-se nos contras.



A interface do WSUS não mudou muito ao longo da história.


Incapacidade de instalar sob demanda . De fato, o WSUS funciona bem para operações regulares - as atualizações são facilmente configuradas e instaladas na rede local quando os computadores são desligados. Mas se você precisar instalar patches de segurança com urgência, precisará usar scripts e soluções para executar esses mesmos scripts. Nosso material " maneira 1000 ++ para executar comandos em um computador remoto " pode ajudar com isso.


A falta de uma maneira regular de instalar atualizações de software de terceiros . Se houver um servidor de atualização, parece razoável usá-lo não apenas para atualizações de software da Microsoft, mas para outras soluções. Por exemplo, as vulnerabilidades não são descobertas regularmente no Adobe Flash Player acima mencionado em intervalos regulares, e eu também gostaria de agradar os usuários com os novos recursos do FireFox. Para instalar atualizações pelo WSUS, você precisa usar soluções de terceiros como o WSUS Package Publisher . Você pode ver exemplos de configuração no artigo “ Instalando qualquer software usando o WSUS-2 ”.


Usando o banco de dados interno do Windows . Em uma instalação padrão, o WSUS usa o WID - Banco de Dados Interno do Windows. Este é essencialmente um pequeno SQL Server incorporado com um banco de dados. Em caso de mau funcionamento ou conflito - por exemplo, se você tiver o Agente de Conexão de Área de Trabalho Remota e o WSUS no mesmo servidor - precisará reparar esse banco de dados, configurar os direitos de acesso e se divertir de todas as maneiras. Sim, e o backup não faria mal. Felizmente, o WSUS também pode usar o SQL clássico. Para migrar o banco de dados do WSUS, você pode usar a instrução Migrando o banco de dados do WSUS do WID para o SQL da Microsoft.


A necessidade de serviço e configuração não óbvia de clientes com falha. Como é o caso dos produtos Microsoft, mais cedo ou mais tarde, o WSUS começa a ficar mais lento: os clientes não conseguem se apossar dele por um longo tempo e baixar atualizações. Uma coleção de dicas e otimizações pode ser encontrada no artigo “ Acelerando o WSUS ” e nos comentários.


Obviamente, você pode conviver com essas desvantagens, mas também pode facilitar sua vida com outras ferramentas, usando-as em conjunto com o WSUS e sem ela.


Instale atualizações usando o Ansible


Quase qualquer sistema de gerenciamento de configuração pode facilitar o trabalho com atualizações. Vamos analisar um exemplo baseado no Ansible para instalar atualizações sob demanda.


Organizar um holivar, que é melhor a partir de sistemas livres - Ansible, Chef, Puppet ou até Salt, não existe o menor desejo. Ansible foi escolhido pela falta de necessidade de agentes e pela facilidade de configuração. E, é claro, por causa do Python: afinal, essa linguagem é muito mais fácil de aprender para automação iniciante, ao contrário do Ruby.

Vale ressaltar que, além de resolver o problema, será uma boa ajuda para se familiarizar com os princípios de operação de tais sistemas. A menos, é claro, que você ainda tenha se divertido instalando o Streisand , especialmente quando algo no processo dá errado. E se você já usa o Ansible ou outras soluções da moda, pode instalar facilmente as atualizações. Eu recomendo a leitura do básico do Ansible no artigo “ Manual do Ansible ”, e abaixo está uma instrução passo a passo para trabalhar com atualizações.


Primeiro, prepare o servidor Ansible. Quase qualquer distribuição GNU \ Linux serve, mas darei exemplos de comandos para o Ubuntu Server (como tem sido historicamente).


Primeiro, instale o gerenciador de pacotes para aplicativos Python:


apt-get install python-pip pip install --upgrade pip pip install --upgrade virtualenv 

Em seguida, precisamos instalar o pacote pywinrm para conectar-se aos sistemas Windows e ao sistema Ansible diretamente:


 sudo pip install pywinrm sudo pip install ansible 

Você pode verificar a instalação usando o comando ansible --version .



Verificação da instalação.


Em vez do pacote na teoria pywinrm, você pode usar qualquer outra ferramenta para gerenciar o Windows a partir de uma máquina Linux. Alguns deles são discutidos no artigo " Polinização cruzada: gerenciando o Linux no Windows e vice-versa ".

Agora você precisa habilitar a conexão com o Windows via WinRM. Para fazer isso, existe um script ConfigureRemotingForAnsible.ps1 pronto para uso disponível no GitHub . Bem, você já sabe como executar scripts em máquinas remotas.


Você pode verificar a conexão com o Windows com o comando:


 ansible windows -m win_ping 


Verificação de conexão bem-sucedida.


Agora você pode começar a criar um manual. O fato de os desenvolvedores do Ansible já terem pensado em nós e feito o módulo win_updates , apenas para solucionar esses problemas, facilitará nossa vida.


O Playbook é uma "instrução" que diz ao sistema de gerenciamento de configuração o que fazer. Passo a passo, é claro.

Qualquer manual é um arquivo yml e é um conjunto de diretivas - cada módulo possui seu próprio. O módulo winupdate permite usar as seguintes diretivas (os valores padrão estão em negrito):


TítuloValorDescrição do produto
category_namesAplicação
Conectores
CriticalUpdates
DefinitionUpdates
Developerkits
Pacotes de recursos
Orientação
SecurityUpdates
Servicepacks
Ferramentas
UpdateRollups
Atualizações
Categoria de atualizações.
lista brancaAtualize o número ou o modelo do nome.O número de atualizações instaladas diretamente é KB01234 ou o padrão de nome de expressão regular do PowerShell.
lista negraAtualize o número ou o modelo do nome.Diretamente o número de atualizações que não precisam ser instaladas, como KB01234 ou o modelo de nome na forma de uma expressão regular do PowerShell.
reiniciarsim
não
É necessária uma reinicialização após a atualização?
reboot_timeoutsegundos, 1200Qual é o tempo de espera para o carro após a reinicialização.
estadoinstalado
procurou
Se deseja instalar atualizações ou apenas pesquisar.
log_pathcaminho do arquivoO log de instalação e a pasta devem existir.

Portanto, o seguinte manual é adequado para instalar determinadas atualizações:


 - name: Install specific updates based on the KBs for those updates win_updates: category_name: - SecurityUpdates whitelist: - KB4073819 - KB4074228 

E se você precisar calcular quantas atualizações estão faltando, o manual será assim:


  – name: Check for missing updates win_updates: state=searched register: update_count 

Para instalar todas as atualizações disponíveis, seguidas por uma reinicialização, haverá um manual semelhante:


 - name: Install all critical and security updates win_updates: category_names: - CriticalUpdates - SecurityUpdates - UpdateRollups state: installed register: update_result - name: reboot host if required win_reboot: when: update_result.reboot_required 

Deixe-me lembrá-lo de que você precisa de um arquivo de inventário para trabalhar com a lista de servidores. Por exemplo, isto:


 [DCs] dc1.mydomain.local dc2.mydomain.local [AppServers] app1.mydomain.local app2.mydomain.local [DBServers] db1.mydomain.local db2.mydomain.local 

E agora, para instalar atualizações apenas em controladores de domínio, você pode usar o manual:


 - hosts: DCs tasks: - name: Choose which Windows updates to install win_updates: category_names: - SecurityUpdates - CriticalUpdates - UpdateRollups 

A equipe que fará todas essas operações será assim:


 ansible-playbook -i inventory.yml -s windowsupdates.yml 

Um leitor atento pode perguntar sobre a fonte das atualizações baixadas. A fonte será a que estiver configurada no computador: seja o Windows Update na Internet ou o WSUS local. Mesmo que suas mãos não tenham atingido as configurações do WSUS, você pode dar o comando para instalar as atualizações urgentes necessárias, especialmente se as peças de Lego já derramarem sob seus pés.


Resta acrescentar que não é necessário usar exatamente o Ansible. Por exemplo, para o sistema de gerenciamento de configuração do Chef, você pode usar o Cookbook Wsus Client ou o mais sofisticado boxstarter . Existem módulos semelhantes para o Puppet. Em geral, quase qualquer sistema de gerenciamento de configuração pode fazer algo semelhante, incluindo o MS SCCM.


Por fim, darei mais algumas ferramentas que me interessam.


Outros sistemas e soluções


WSUS offline . Um programa que permite baixar as atualizações necessárias em um pacote, se necessário, pode ser empacotado em ISO. Você também pode colocar o pacote em uma pasta de rede e instalar atualizações com scripts, sem implantar o WSUS completo.


Gerenciamento de patches da Comodo. O sistema para instalar atualizações para Windows e outro software. Ao contrário de outras soluções, é gratuito.



Interface Comodo Patch Management.


Opsi . Um sistema interessante e gratuito que suporta a instalação não apenas de atualizações, mas também de sistemas operacionais, além de inventário.


BatchPatch . O único sistema pago na lista. Permite instalar software, atualizá-lo, como o Windows, e muito mais. Ele difere no design da velha escola e no custo, não pelo número de hosts hospedados, mas pelos usuários do programa, ou seja, administradores. Talvez esta seja uma das poucas soluções que se posicionam como um análogo do WSUS. O preço começa em US $ 400.



Interface BatchPatch.


Nos comentários, adicione suas ferramentas favoritas para trabalhar com atualizações e muito mais.

Source: https://habr.com/ru/post/pt414751/


All Articles