Best Ways to Set Up an Ansible Development Environment (Linux, Windows, macOS, and Windows WSL)
-
Gineesh Madapparambath
- Ansible, Automation, Dev ops
- March 5, 2026
Best Ways to Set Up an Ansible Development Environment (Linux, Windows, and macOS)
If you want to write Ansible playbooks, roles, modules, or collections, the first step is a good development environment.
The good news is that you have many options. Some are simple and run directly on your laptop. Others are better for teams or enterprise environments.
In this guide, we walk through practical ways to build an Ansible development and testing setup. These options work for Linux, macOS, and Windows users.
Many Windows users struggle to run Ansible locally. So we also cover the easiest ways for Windows users to build a working environment.
Let’s go through the options.
1. Local Linux or macOS Environment (Simple and Fast)
If you already use Linux or macOS, this is usually the easiest option.
You install Ansible and its tools directly on your system and start developing immediately.
This gives the best performance because everything runs locally.
Requirements
- Linux or macOS machine
- Python installed
- Ability to install packages (pip or system package manager)
Typical Setup
Install Ansible using pip:
python3 -m pip install --user ansible
Or use the package manager:
Ubuntu / Debian
sudo apt install ansible
Fedora
sudo dnf install ansible
Once installed, you can start writing playbooks, roles, and collections.
This setup works well if you already use Linux for daily work.
2. Virtual Machine Lab (Recommended for Windows Users)
If you use Windows or want a clean Linux environment, a virtual machine is a great choice.
You create a Linux VM and run Ansible inside it. Your laptop acts as the host, and the VM becomes your Ansible lab.
Popular VM tools:
- VirtualBox
- VMware Workstation
- Hyper-V
Typical Linux images used for Ansible labs:
- Ubuntu
- Fedora
- CentOS Stream
- Rocky Linux
- AlmaLinux
You can connect to the VM using:
- SSH
- VS Code Remote SSH
- Terminal
This approach keeps your host system clean and provides a consistent Linux environment.
Example Lab Guide
- Now Available: Updated Ansible Lab using Vagrant and VirtualBox!
- Setting up Lab Environment for Ansible | VirtualBox, Vagrant
3. Vagrant-Based Ansible Lab
If you regularly build and destroy labs, Vagrant is extremely useful.
Vagrant allows you to define your entire lab environment as code.
For example, you can automatically create:
- An Ansible control node
- Multiple managed nodes
- Preconfigured networking
- Preinstalled tools
With one command, the whole lab can start.
vagrant up
And you can destroy it just as easily.
vagrant destroy
This approach is great for:
- learning Ansible
- testing playbooks
- building repeatable labs
- training environments
Example setup:
4. Windows Subsystem for Linux (WSL)
Ansible does not run natively on Windows, but Windows Subsystem for Linux (WSL) solves this problem by allowing you to run a full Linux environment directly inside Windows. From the user’s perspective, it behaves almost like a native Linux machine, which makes it a very practical way for Windows users to install and run Ansible without needing a full virtual machine.
Requirements
- Windows 10 or Windows 11
- WSL enabled
- A Linux distribution from the Microsoft Store
Common choices:
- Ubuntu
- Debian
Once installed, you can install Ansible normally inside WSL.
Example:
sudo apt update
sudo apt install ansible
Many developers combine WSL with VS Code for a very smooth workflow.
5. VS Code Remote Development
Another popular approach is to develop locally while running Ansible on a remote Linux server using the VS Code Remote SSH extension. In this setup, your code editor runs on your local machine, but the files and Ansible execution happen on the remote system, giving you the benefits of a powerful Linux environment without installing everything on your laptop.
Advantages:
- No need to install tools locally
- Works on Windows, Linux, and macOS
- Remote server provides consistent environment
- Easy collaboration for teams
This method is common in corporate environments where developers connect to shared Linux servers.
Detailed guide:
6. Cloud-Based Ansible Lab
If your laptop is limited or you want a disposable environment, a cloud lab is another good option.
You can create temporary infrastructure in a public cloud and run your Ansible control node there.
Typical setup:
- Ansible control node (EC2 instance or VM)
- Several test servers
- SSH connectivity
This lab can be destroyed after testing.
You can automate the entire lab creation using Terraform.
Example guides:
Create a free lab in public cloud:
- How to Create a FREE Ansible Lab in Public Cloud (AWS, GCP, Azure)
- Use Terraform to Create a FREE Ansible Lab in AWS
This approach is great for:
- testing infrastructure automation
- learning cloud automation
- CI/CD experiments
7. Container-Based Development (Advanced Option)
Another modern option is running your Ansible environment inside containers.
Tools often used:
- Podman
- Docker
- Dev Containers
This allows you to package the entire development environment as a container image.
Advantages:
- reproducible environment
- easy onboarding for teams
- same environment for everyone
Many teams use this method together with VS Code Dev Containers.
8. OpenShift Dev Spaces (Enterprise Teams)
Large teams often need a centralized and standardized development platform.
OpenShift Dev Spaces provides a web-based development environment running inside an OpenShift cluster.
The full development stack runs inside the cluster.
Developers only need:
- a browser
- access to the Dev Spaces environment
Benefits:
- identical environment for every developer
- no local setup required
- easier management for organizations
- integrated with enterprise security and identity systems
This option is common in large enterprise environments.
Choosing the Right Option
Here is a simple way to choose.
| Use Case | Recommended Option |
|---|---|
| Linux users | Install Ansible locally |
| Windows users | Use WSL or a Virtual Machine |
| Training or learning labs | Use Vagrant |
| Team environments | Use VS Code Remote or Dev Containers |
| Enterprise platforms | Use OpenShift Dev Spaces |
| Cloud experimentation | Build a temporary cloud lab |
Final Thoughts
There is no single “best” Ansible development environment. The right choice depends on several factors including your operating system, available hardware resources, team requirements, and any enterprise policies you need to follow. What really matters is having a clean and repeatable environment where you can safely test playbooks and automation. Once that foundation is in place, developing Ansible content becomes much easier. If you are just starting out, the simplest approach is to use WSL or a small Linux virtual machine with Ansible installed, and later expand your setup into cloud labs, container-based environments, or enterprise platforms as your needs grow.
Gineesh Madapparambath
Gineesh Madapparambath is the founder of techbeatly. He is the co-author of The Kubernetes Bible, Second Edition and the author of Ansible for Real Life Automation. He has worked as a Systems Engineer, Automation Specialist, and content author. His primary focus is on Ansible Automation, Containerisation (OpenShift & Kubernetes), and Infrastructure as Code (Terraform). (Read more: iamgini.com)
Note
Disclaimer: The views expressed and the content shared in all published articles on this website are solely those of the respective authors, and they do not necessarily reflect the views of the author’s employer or the techbeatly platform. We strive to ensure the accuracy and validity of the content published on our website. However, we cannot guarantee the absolute correctness or completeness of the information provided. It is the responsibility of the readers and users of this website to verify the accuracy and appropriateness of any information or opinions expressed within the articles. If you come across any content that you believe to be incorrect or invalid, please contact us immediately so that we can address the issue promptly.