Ansible: Criado AMI Windows personalizada na AWS (Parte 1)

Configurando Windows para acesso com Ansible

Featured image

Quando vamos trabalhar com Ansbile usando Windows na AWS notamos que as imagens padrões do Windows não estão com o WinRM configurado e as senhas são geradas aleatoriamente usando a chave selecionada, sendo somente acessíveis alguns minutos após a instância iniciar. Conectando em uma instância Windows.

Uma alternativa é criar uma AMI personalizada com WinRM configurado e uma senha pré-definida, estando assim disponível imediatamente para uso. O primeiro passo é iniciar uma instância Windows colocando o script abaixo em User Data. Atenção para o campo onde está definido a senha, o script também irá baixar e executar o script para configurar o WinRM.

<powershell>
$admin = [adsi]("WinNT://./administrator, user")
$admin.PSBase.Invoke("SetPassword", "myTempPassword123!")
Invoke-Expression ((New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1'))
</powershell>

UserData

Caso você use o Packer para gerar suas imagens esse script também por ser usado no parâmetro user_data_file.

Na configuração de Security Group da instância lembre-se de liberar as portas 3389 e 5986. Caso não saiba a porta 5986 é usada para conexão segura com o WinRM, que é usado pelo Ansible para conexão. Após alguns instantes após iniciar a instância ela já vai estar liberada para o acesso.

No arquivo de hosts do ansible, configure usando os dados abaixo e a senha definida no script acima

[windows]
ip-host-windows

[windows:vars]
ansible_connection=winrm
ansible_ssh_port=5986
ansible_ssh_user=Administrator
ansible_ssh_pass=myTempPassword123!

Após alguns instantes estando a instância disponível para acesso. Podemos testar usando o módulo do ansible win_ping. No nosso exemplo usando o comando ansible windows -i hosts -m win_ping. O retorno deve ser parecido com esse:

Win Ping

Bom essa é a primeira etapa, na parte 2 iremos ver como configurar o Windows e gerar uma nova AMI personalizada usando o Ansible