Por: Adelmo da Silva – consultor de sistemas
Esse será, sem dúvidas, um dos artigos mais interessantes que eu já escrevi sobre o Ansible até hoje. Espero que aproveite ao máximo.
Já falamos muito sobre o poderoso Ansible, as suas vantagens, os seus recursos (muitos artigos ainda virão para falarmos sobre), sobre como é possível controlar dezenas, centenas de servidores em uma infra-estrutura e etc. Contudo, falamos apenas de servidores Linux e Solaris, que são bem parecidos. Mas, para alegria de uns e tristeza de outros, existem servidores Microsoft Windows no nosso parque informático. E, sim, o Ansible conversa bem com Windows, eles têm uma bela amizade! Neste artigo, vou te ensinar como preparar um sistema Microsoft Windows para ser controlado pelo mestre Ansible. Bora lá.
1 – Preparando o Windows com todo carinho…
Com os sistemas operacionais Linux e Solaris, o Ansible se conecta através de uma ligação SSH com de confiança, como eu mostrei neste artigo sobre Envio de Chaves SSH no Ansible. Contudo, no Windows é diferente paras com o Ansible. Nele é utilizado o WinRM (Windows Remote Management – Gerenciamento Remoto do Windows), sendo uma implementação da Microsoft do protocolo WS-Management, que é um protocolo padrão baseado em SOAP (Simple Object Access Protocol) que permite a interoperação entre sistemas operacionais e de hardware de diferentes fornecedores.
Para configurarmos o WinRM e deixar o Windows prontinho para o Ansible, precisamos seguir, à risca, estas 5 etapas:
- Definir um usuário com perfil administrador no Windows;
- Verificar se a versão do PowerShell é compatível;
- Habilitar o uso de recursos remotos via PowerShell;
- Executar o script para configuração do Ansible;
- Preparando o servidor Ansible;
- Testes de conexão.
2 – Preparando o Windows para o controle do Ansible
2.1. Crie um usuário com perfil de administrador, para que o Ansible possa executar todos os comandos sem restrições.
2.2. Verifique se a versão é compatível com este procedimento, que é a versão 5 1 14393 693. Para ver a versão do seu PowerShell, digite: (Get-Host).Version;
Figura 1 – Verifica a versão do PowerShell
2.3. É necessário habilitar o acesso remoto através do WINRM. Para isso, no PowerShell, digite ps comandos como administrador:
set-executionpolicy remotesigned
set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
Figura 2 – Habilitar recursos do WINRM
2.4. Executar o script para configuração para o controle via Ansible. Para isso, basta executar um script chamado ConfigureRemotingForAnsible.ps1. Este script pode ser baixado diretamente do meu Github: https://github.com/adelmosilva/ansible-windows/blob/main/ConfigureRemotingForAnsible.ps1 .
Este script é executado através do Windows PowerShell ISE.
Figura 3 – WindowsPoswerShell ISE
Figura 4 – Script Ansible executado
Se for o caso, você pode desabilitar o Firewall do Windows ou criar uma regra para habilitar as duas portas do Ansible: 5985 (http) e 5986 (https).
3 – Preparando o Ansible para receber o Windows
3.1. Instalar os pacotes WinRm Python:
yum install python-winrm ou yum install python2-winrm
3.2. No arquivo de inventário do Ansible, ao criar o grupo referentes às máquinas Windows, devemos criar o grupo e um subgrupo com as variáveis que irão auxiliar na conexão entre o Ansible e o Windows:
[srv-win]
192.168.0.50
192.168.0.51
[srv -win:vars]
ansible_user=vagrant
ansible_password=vagrant
ansible_port=5985
ansible_connection=winrm
ansible_winrm_transport=basic
ansible_winrm_server_cert_validation=ignore
Dentro de [srv-win] contém os ip’s dos servidores Windows que se deseja gerenciar. Já na secção [srv-win:vars] possui as variáveis para o grupo srv-win:
- ansible_user=vagrant: define o usuário que irá ser utilizado na conexão remota
- ansible_password=vagrant: password do usuário
- ansible_port=5985: porta de conexão remota
- ansible_connection=winrm: módulo específico do Ansible para gerenciamento do remoto Windows
- ansible_winrm_transport=basic: tipo de transporte
- ansible_winrm_server_cert_validation=ignore: Ignora a solicitação de certificados
Depois destas configurações, basta testar a conectividade entre o Ansible e o Windows:
ansible srv-win -m win_ping
Esse comando irá testar a conexão entre o Ansible e os hosts Windows.
Depois desse trabalho todos, agora você pode gerenciar todos os hosts Windows em seu parque informático. Agora, é só saborear aquele cafezinho e aproveitar ao máximo essa amizade entre Ansible e Microsoft Windows.
Até a próxima.