How to use Ansible on Windows machines
Hey everyone!
Hope you are safe and doing great!
If you wondering how to manage your whole Windows machines fleet, easily and quickly install updates/software, and do even more, then I guess you think about Ansible, as one of the solutions.
In this guide we will go through the quick setup from the scratch, using Windows OS machines, for a controller and hosts.
1. Setup your controller machine, from which you will push all changes to your machine's fleet by installing Ubuntu WSL
1.1. Open Microsoft Store and install Ubuntu. It will be your WSL machine inside your Windows OS
1.2. Launch Ubuntu WSL and install ansible
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository --yes --update ppa:ansible/ansible
sudo apt install ansible
2. Setup hosts machines, which you want to manage
2.1. Launch PowerShell as Administrator and setup winrm listener service
winrm quickconfig
2.2. Answer yes to all questions, it will help you with few things
2.2.1. Adding to autostart the service on a machine boot
Start the WinRM service.
Set the WinRM service type to delayed auto start.
Make these changes [y/n]? y
2.2.2. Adding rules to a firewall
Enable the WinRM firewall exception.
Configure LocalAccountTokenFilterPolicy to grant administrative rights remotely to local users.
Make these changes [y/n]? y
2.3. Create local Administrator user - ansible. Set a good password for it
3. Setup configuration files on your controller machine within your Ubuntu WSL
3.1. Create the directory
sudo mkdir /etc/ansible
3.2. Create the configuration file
sudo nano /etc/ansible/hosts
3.3. Put a configuration here
[windows]
MachineName1 ansible_port=5985 ansible_host=MachineIPAddress1
MachineName2 ansible_port=5985 ansible_host=MachineIPAddress2
[windows:vars]
ansible_user=ansible
ansible_password=PasswordWhichYouSet
ansible_connection=winrm
ansible_winrm_transport=ntlm
ansible_winrm_server_cert_validation=ignore
Do not forget to replace:
1 - MachineNames - with your machines aliases
2 - MachineIPAddresses - with your machines IP addresses
3 - PasswordWhichYouSet - with your ansible Administrator user password
3.4. Try to reach from your controller machine your hosts machines
ansible windows -m win_ping
You are awesome!
That is it. Hope this short guide helped you and saved your time for the best.
Thank you for reading and see you soon.