How to work on Windows as a Linux developer with Vagrant and Ansible?

Table of Contents

I wrote an article recently explaining why we should use Vagrant to develop your PHP projects, but that is just part of the story. If you’re a developer working on Windows and need to use tools like Ansible or Capistrano, you’ll run into a lot of issues managing Ruby and Python versions.

How to work on Windows as a Linux developer with Vagrant and Ansible?

I had a chance to learn and use Ansible to provision my Virtual Machine using Vagrant and fell in love with this simple automation tool. But as you know, Ansible is not well supported on Windows.

When I start a new project, how can I provision a staging server to deploy my updated changes? How can I provision multiple production servers when scaling as needed?

I had an idea to put all projects into a workspace folder and enable this machine to see all projects inside VM.
Please follow the instructions here and you will fall in love with this development stack.

#open gitbash
cd yourworkspace
git git@github.com:giappv/vagrant_ansible.git
cd vagrant_ansible
vagrant plugin install vagrant-hostmanager
vagrant up

After creating VM successfully with Vagrant, these are commands that you use frequently for working inside your workspace.

#open your gitbash on Windows
cd yourworkspace/vagrant_ansible
vagrant up
eval $(ssh-agent) # for create an agent id
ssh-add #for adding agent id you created to transfer environment variables from Windows to your VM
vagrant ssh
# your are in Linux now
cd /vagrant #it is mounted to your workspace folder
cd yourproject.com
# doing something such as provisioning your AWS Instance
ansible-playbook -i pathtoplaybookinventory pathtoplaybook.yml

You can share your deployment stack with your team member on Linux (which is well-supported), so they will not have to spend time installing a bunch of software that is not able to work because their Windows version is not supported.