Nesse artigo irei mostrar uma forma de instalar aplicativos Windows msi de forma massiva em uma rede windows com Domínio Active Directory.
1 – Vamos baixar o google chrome que será o nosso app exemplo nesse link .
Você deverá instalar o aplicativo manualmente e verificar o ID gerado pelo programa .
Ele deve ficar nesse caminho via regedit:
HKEY_LOCAL_MACHINE:\Software\Microsoft\Windows\CurrentVersion\Uninstall
No nosso caso ficou com esse ID “{6EA4A09D-E0E2-358F-B54C-79106D2D2C95}”
2 – Você deve fazer o setup do Winrm no servidor ou estação de trabalho , descrito nesse documento:
https://docs.ansible.com/ansible/2.5/user_guide/windows_setup.html
3 – Vamos criar a pasta onde ficará nossos arquivos ansible.
mkdir deploy-windows-package cd deploy-windows-package
4 – Gerar uma role , que guardará nossa configuração .
mkdir roles
cd roles
ansible-galaxy init windows
5 – Criar dois arquivos : deploy-windows.yml e hosts.
Lembrando que o Usuário deve ser local admin da máquina.
Você deve altrar de acordo com seu ambiente.
6 – O Arquivo de hosts com o seguinte conteúdo :
[windows] win10 ansible_host=192.168.250.101 ansible_user=julio3 ansible_password=SuaSenha Windows2016 ansible_host=192.168.250.100 ansible_user=julio2 ansible_password=SuaSenha [windows:vars] ansible_port=5986 ansible_connection=winrm ansible_winrm_server_cert_validation=ignore ansible_winrm_transport=ntlm
Referente ao método de autenticação.
Existem outros métodos de autenticação descritos nesse endereço:
https://docs.ansible.com/ansible/latest/os_guide/windows_winrm.html
No nosso caso vamos usar ntlm .
7 – O arquivo deploy-windows.yml .
- hosts: all ignore_errors: yes roles: - role: windows
8 – Em roles/windows/vars/main.yml vamos inserir nossas tarefas:
--- - name: COPY | Copiando arquivo da sua máquina local para máquina remota win_copy: #Local onde você salvou deu executavel em maquina local src: /home/julio/Downloads/googlechromestandaloneenterprise64.msi dest: C:\temp\ - name: Install Google Chrome from msi with a permanent log ansible.windows.win_package: path: C:\temp\googlechromestandaloneenterprise64.msi product_id: '{6EA4A09D-E0E2-358F-B54C-79106D2D2C95}' #caso precise remover o pacote usar o state absent state: present #state: absent log_path: c:\temp\googlechromestandaloneenterprise64-{{lookup('pipe', 'date +%Y%m%dT%H%M%S')}}.log
9 – Executando a playbook.
ansible-playbook -i hosts deploy-windows.yml
Documentação de referência:
https://docs.ansible.com/ansible/latest/collections/ansible/windows/win_package_module.html
Vou deixar o repositório do github a baixo.
https://github.com/xcardoso/deploy-windows-package