
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ítulo | Valor | Descrição do produto |
category_names | Aplicação Conectores CriticalUpdates DefinitionUpdates Developerkits Pacotes de recursos Orientação SecurityUpdates Servicepacks Ferramentas UpdateRollups Atualizações
| Categoria de atualizações. |
lista branca | Atualize 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 negra | Atualize 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. |
reiniciar | sim não | É necessária uma reinicialização após a atualização? |
reboot_timeout | segundos, 1200 | Qual é o tempo de espera para o carro após a reinicialização. |
estado | instalado procurou | Se deseja instalar atualizações ou apenas pesquisar. |
log_path | caminho do arquivo | O 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.