Install Ansible on Windows Using Cygwin
1. Install Cygwin
Go to https://www.cygwin.com/install.html and download setup-x86_64.exe
Run it
- Select 'Install from Internet'
- Choose root directory (default)
- Choose pacakage directory to store installation files
- Use System Proxy Settings
- Select any mirror site to download
In 'Select Packages'
- Select
Category
dropdown and search forlynx
- Go to
All -> Web -> lynx: A text-based Web Browser
- Select latest version
- Click next to complete installation
2. Install apt-cyg
This is a package manager for cygwin
To install:
-
lynx -source rawgit.com/transcode-open/apt-cyg/master/apt-cyg > apt-cyg
-
install apt-cyg /bin
3. Install dependencies for ansible
To install altogether
-
apt-cyg install binutils curl gcc-core gmp libffi-devel libgmp-devel make python python-crypto python-openssl python-setuptools python-devel git nano openssh openssl openssl-devel
You can also install individually by using
-
apt-cyg install
or by using the installation GUI
4. Install Ansible
To install
-
easy_install-2.7 pip
-
pip install ansible -vvv
- Here, the
-vvv
is used in case the install seems too slow. It will show you if everything is still working.
5. Test ansible
To test installation
-
ansible
- Should receive list of options
Some configuration
Cygwin comes with some strange default settings, particularly if using vi
or vim
.
Open a .virc
file.
-
vi ~/.virc
Type in
set nocompatible
set backspace=2
Run a playbook with Ansible
Make a new directory to test ansible with a simple playbook.
mkdir ansible-lab
cd ansible-lab
Ansible needs some configuration to work on a Windows machine. Our Windows machine is called the 'control' machine. Ansible does not officially support this.
Create an ansible configuration file.
vi ansible.cfg
Copy and paste the following into the file.
[ssh_connection]
ssh_args = -o ControlMaster=no
Now we will create our ansible playbook to test.
vi playbook.yml
Copy the following into the file.
- hosts: all
sudo: yes
tasks:
- name: install apache2
apt: name=apache2 update_cache=yes state=latest
Bring up a virtual machine
We need a virtual machine to run this against. For this we will use a Vagrant box. Don't worry if you have not used Vagrant before. It is an easy way of installing virtual boxes on your machine and managing them.
We need a Vagrantfile to bring up our virtual machine.
vi Vagrantfile
Copy and paste the following.
Vagrant.configure("2") do | config|
config.vm.box = "bento/ubuntu-18.04"
config.vm.network "private_network", ip: "192.168.33.10"
end
This will bring up a ubuntu virtual machine to run our ansible script against.
To bring up your virtual machine, make sure you are in the same directory as your Vagrantfile and type
vagrant up
Depending on your connection, this may take a little while to boot up.
Once your machine is booted (you can check if it was successfully booted by typing vagrant status), you need to make sure your control / Windows machine can connect to it.
Setup ssh connection
On your Cygwin terminal, generate an ssh -key.
ssh-keygen
Keep pressing enter until it is finished. Print out the .pub file where it saves the key. For example, mine looks like the following. Yours will be in the .ssh folder also.
cat /home/abcd/.ssh/id_rsa.pub
Copy the value that is printed out. Now you need to go to your vagrant machine.
vagrant ssh
vi .ssh/authorized_keys
Go to the end of the file, go to the next line (by pressing enter) and paste in your key from the id_rsa.pub file
Exit your vagrant machine.
exit
Test your ssh connection with the following.
ssh vagrant@192.168.33.10
You should be able to login to the virual machine without any prompt or failure.
Exit the machine once again.
exit
Run your ansible playbook
Make sure you are in the same directory as your ansible script. Ideally, you have your Vagrantfile, playbook.yml and ansible.cfg all in the same directory.
Ensure ansible is ready to go.
ansible-playbook --version
Now type the following.
ansible-playbook -i vagrant@192.168.33.10, playbook.yml
Your tasks should appear in a list. Once finished, the PLAY RECAP should have ok=2 and changed=1.
Congrats, you have just run your first ansible playbook!
22 kudos