title: Cygwin - How to install ansible?
body: <p>How to get / install ansible using Cygwin?</p>
  
  <p>I tried the following steps but it's didn't work during bullet 5 (while running "<em>python setup.py install</em>"). Steps taken from: Taken from <a href="https://servercheck.in/blog/running-ansible-within-windows" rel="noreferrer">https://servercheck.in/blog/running-ansible-within-windows</a> </p>
  
  <p>1) Download and install Cygwin, with at least the following packages selected (you can select the packages during the install process):</p>
  
  <pre><code>libyaml
  libyaml-devel
  curl
  python (2.7.x)
  python-crypto
  python-openssl
  python-paramiko
  python-setuptools
  git (2.1.x)
  vim
  openssh
  openssl
  openssl-devel
  </code></pre>
  
  <p>2) Download and install PyYAML and Jinja2, as they're not available via Cygwin's installer:</p>
  
  <pre><code>1. Open Cygwin
  2. Download PyYAML:
      curl -O https://pypi.python.org/packages/source/P/PyYAML/PyYAML-3.10.tar.gz
  3. Download Jinja2:
      curl -O https://pypi.python.org/packages/source/J/Jinja2/Jinja2-2.6.tar.gz
  4. Untar both downloads:
      tar -xvf PyYAML-3.10.tar.gz &amp;&amp; tar -xvf Jinja2-2.6.tar.gz
  5. Change directory into each of the expanded folders and run python "python setup.py install" to install each package.
  6. Clone ansible from its repository on GitHub:
      git clone https://github.com/ansible/ansible /opt/ansible
      This was tested with Ansible version v1.6.6, change directory into /opt/ansible and checkout the correct tag: git checkout v1.6.6.
  7. Add the following lines into your Cygwin .bash_profile:
      # Ansible settings
      ANSIBLE=/opt/ansible
      export PATH=$PATH:$ANSIBLE/bin
      export PYTHONPATH=$ANSIBLE/lib
      export ANSIBLE_LIBRARY=$ANSIBLE/library
  
  8. At this point, you should be able to run ansible commands via Cygwin (once you restart, or enter source ~/.bash_profile to pick up the settings you just added). 
      Try ansible --version to display Ansible's version.
  
  9. Passwordless ssh will need to be set up between your Windows machine and the deployment host(s)
      To enable passwordless ssh on Centos -  ssh-copy-id root@node
      To enable passwordless ssh on SuSE I followed the steps in this blog:
      http://www.firedaemon.com/blog/passwordless-root-ssh-public-key-authentication-on-centos-6
      install sshpass v1.05 on your Windows machine&lt;br&gt;
  </code></pre>
  
  <p>The error that I got during during bullet 5 is:</p>
  
  <pre><code>$ python setup.py install
  running install
  running build
  running build_py
  creating build
  creating build/lib.cygwin-2.2.1-x86_64-2.7
  creating build/lib.cygwin-2.2.1-x86_64-2.7/yaml
  copying lib/yaml/composer.py -&gt; build/lib.cygwin-2.2.1-x86_64-2.7/yaml
  copying lib/yaml/constructor.py -&gt; build/lib.cygwin-2.2.1-x86_64-2.7/yaml
  copying lib/yaml/cyaml.py -&gt; build/lib.cygwin-2.2.1-x86_64-2.7/yaml
  copying lib/yaml/dumper.py -&gt; build/lib.cygwin-2.2.1-x86_64-2.7/yaml
  copying lib/yaml/emitter.py -&gt; build/lib.cygwin-2.2.1-x86_64-2.7/yaml
  copying lib/yaml/error.py -&gt; build/lib.cygwin-2.2.1-x86_64-2.7/yaml
  copying lib/yaml/events.py -&gt; build/lib.cygwin-2.2.1-x86_64-2.7/yaml
  copying lib/yaml/loader.py -&gt; build/lib.cygwin-2.2.1-x86_64-2.7/yaml
  copying lib/yaml/nodes.py -&gt; build/lib.cygwin-2.2.1-x86_64-2.7/yaml
  copying lib/yaml/parser.py -&gt; build/lib.cygwin-2.2.1-x86_64-2.7/yaml
  copying lib/yaml/reader.py -&gt; build/lib.cygwin-2.2.1-x86_64-2.7/yaml
  copying lib/yaml/representer.py -&gt; build/lib.cygwin-2.2.1-x86_64-2.7/yaml
  copying lib/yaml/resolver.py -&gt; build/lib.cygwin-2.2.1-x86_64-2.7/yaml
  copying lib/yaml/scanner.py -&gt; build/lib.cygwin-2.2.1-x86_64-2.7/yaml
  copying lib/yaml/serializer.py -&gt; build/lib.cygwin-2.2.1-x86_64-2.7/yaml
  copying lib/yaml/tokens.py -&gt; build/lib.cygwin-2.2.1-x86_64-2.7/yaml
  copying lib/yaml/__init__.py -&gt; build/lib.cygwin-2.2.1-x86_64-2.7/yaml
  running build_ext
  creating build/temp.cygwin-2.2.1-x86_64-2.7
  checking if libyaml is compilable
  gcc -fno-strict-aliasing -ggdb -O2 -pipe -Wimplicit-function-declaration -fdebug-prefix-map=/usr/src/ports/python/python-2.7.10-1.x86_64/build=/usr/src/debug/python-2.7.10-1 -fdebug-prefix-map=/usr/src/ports/python/python-2.7.10-1.x86_64/src/Python-2.7.10=/usr/src/debug/python-2.7.10-1 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/cygdrive/c/cygwin/include/python2.7 -c build/temp.cygwin-2.2.1-x86_64-2.7/check_libyaml.c -o build/temp.cygwin-2.2.1-x86_64-2.7/check_libyaml.o
  checking if libyaml is linkable
  gcc build/temp.cygwin-2.2.1-x86_64-2.7/check_libyaml.o -L/cygdrive/c/cygwin/lib/python2.7/config -L/usr/lib -lyaml -o build/temp.cygwin-2.2.1-x86_64-2.7/check_libyaml.exe
  skipping 'ext/_yaml.c' Cython extension (up-to-date)
  building '_yaml' extension
  creating build/temp.cygwin-2.2.1-x86_64-2.7/ext
  gcc -fno-strict-aliasing -ggdb -O2 -pipe -Wimplicit-function-declaration -fdebug-prefix-map=/usr/src/ports/python/python-2.7.10-1.x86_64/build=/usr/src/debug/python-2.7.10-1 -fdebug-prefix-map=/usr/src/ports/python/python-2.7.10-1.x86_64/src/Python-2.7.10=/usr/src/debug/python-2.7.10-1 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/cygdrive/c/cygwin/include/python2.7 -c ext/_yaml.c -o build/temp.cygwin-2.2.1-x86_64-2.7/ext/_yaml.o
  ext/_yaml.c:4:20: fatal error: Python.h: No such file or directory
   #include "Python.h"
                      ^
  compilation terminated.
  error: command 'gcc' failed with exit status 1
  </code></pre>
  
  <p>.</p>
  
  <pre><code>$ ansible --version
  Traceback (most recent call last):
    File "/opt/ansible/bin/ansible", line 40, in &lt;module&gt;
      from ansible.utils.display import Display
    File "/opt/ansible/lib/ansible/utils/display.py", line 35, in &lt;module&gt;
      from ansible import constants as C
    File "/opt/ansible/lib/ansible/constants.py", line 30, in &lt;module&gt;
      from ansible.parsing.splitter import unquote
    File "/opt/ansible/lib/ansible/parsing/__init__.py", line 32, in &lt;module&gt;
      from ansible.parsing.vault import VaultLib
    File "/opt/ansible/lib/ansible/parsing/vault/__init__.py", line 82, in &lt;module&gt;
      from cryptography.hazmat.primitives.hashes import SHA256 as c_SHA256
    File "/cygdrive/c/cygwin/lib/python2.7/site-packages/cryptography/hazmat/primitives/hashes.py", line 15, in &lt;module&gt;
      from cryptography.hazmat.backends.interfaces import HashBackend
    File "/cygdrive/c/cygwin/lib/python2.7/site-packages/cryptography/hazmat/backends/__init__.py", line 7, in &lt;module&gt;
      import pkg_resources
    File "/cygdrive/c/cygwin/lib/python2.7/site-packages/pkg_resources/__init__.py", line 84, in &lt;module&gt;
      packaging = pkg_resources._vendor.packaging
  AttributeError: 'module' object has no attribute '_vendor'
  </code></pre>