title: Ansible DistributionNotFound cryptography and other errors
body: <p>I got a project from another developer, who is now unreachable.
  When doing vagrant up it starts to build the box but it always seems to crash.</p>
  
  <p>The first issue was with missing <code>ImportError: No module named markupsafe</code> but I can solve that one manual.
  The problem is that the next one is <code>DistributionNotFound: The 'cryptography&gt;=1.1' distribution was not found and is required by paramiko</code></p>
  
  <p>So I seem to be bumping against errors in the ansible run. Any ideas?</p>
  
  <p>The console log:</p>
  
  <pre><code>==&gt; default: Running provisioner: shell...
  default: Running: inline script
  ==&gt; default: stdin: is not a tty
  ==&gt; default: ERROR! Unexpected Exception: The 'cryptography&gt;=1.1' distribution was not found and is required by paramiko
  ==&gt; default: the full traceback was:
  ==&gt; default: 
  ==&gt; default: Traceback (most recent call last):
  ==&gt; default:   File "/usr/local/bin/ansible-playbook", line 79, in &lt;module&gt;
  ==&gt; default:     mycli = getattr(__import__("ansible.cli.%s" % sub, fromlist=[myclass]), myclass)
  ==&gt; default:   File "/usr/local/lib/python2.7/dist-packages/ansible/cli/playbook.py", line 30, in &lt;module&gt;
  ==&gt; default:     from ansible.executor.playbook_executor import PlaybookExecutor
  ==&gt; default:   File "/usr/local/lib/python2.7/dist-packages/ansible/executor/playbook_executor.py", line 27, in &lt;module&gt;
  ==&gt; default:     from ansible.executor.task_queue_manager import TaskQueueManager
  ==&gt; default:   File "/usr/local/lib/python2.7/dist-packages/ansible/executor/task_queue_manager.py", line 28, in &lt;module&gt;
  ==&gt; default:     from ansible.executor.play_iterator import PlayIterator
  ==&gt; default:   File "/usr/local/lib/python2.7/dist-packages/ansible/executor/play_iterator.py", line 29, in &lt;module&gt;
  ==&gt; default:     from ansible.playbook.block import Block
  ==&gt; default:   File "/usr/local/lib/python2.7/dist-packages/ansible/playbook/__init__.py", line 25, in &lt;module&gt;
  ==&gt; default:     from ansible.playbook.play import Play
  ==&gt; default:   File "/usr/local/lib/python2.7/dist-packages/ansible/playbook/play.py", line 27, in &lt;module&gt;
  ==&gt; default:     from ansible.playbook.base import Base
  ==&gt; default:   File "/usr/local/lib/python2.7/dist-packages/ansible/playbook/base.py", line 35, in &lt;module&gt;
  ==&gt; default:     from ansible.parsing.dataloader import DataLoader
  ==&gt; default:   File "/usr/local/lib/python2.7/dist-packages/ansible/parsing/dataloader.py", line 33, in &lt;module&gt;
  ==&gt; default:     from ansible.parsing.vault import VaultLib
  ==&gt; default:   File "/usr/local/lib/python2.7/dist-packages/ansible/parsing/vault/__init__.py", line 67, in &lt;module&gt;
  ==&gt; default:     from cryptography.hazmat.primitives.hashes import SHA256 as c_SHA256
  ==&gt; default:   File "/usr/lib/python2.7/dist-packages/cryptography/hazmat/primitives/hashes.py", line 20, in &lt;module&gt;
  ==&gt; default:     from cryptography.hazmat.backends.interfaces import HashBackend
  ==&gt; default:   File "/usr/lib/python2.7/dist-packages/cryptography/hazmat/backends/__init__.py", line 16, in &lt;module&gt;
  ==&gt; default:     import pkg_resources
  ==&gt; default:   File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2927, in &lt;module&gt;
  ==&gt; default:     @_call_aside
  ==&gt; default:   File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2913, in _call_aside
  ==&gt; default:     f(*args, **kwargs)
  ==&gt; default:   File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2940, in _initialize_master_working_set
  ==&gt; default:     working_set = WorkingSet._build_master()
  ==&gt; default:   File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 637, in _build_master
  ==&gt; default:     return cls._build_from_requirements(__requires__)
  ==&gt; default:   File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 650, in _build_from_requirements
  ==&gt; default:     dists = ws.resolve(reqs, Environment())
  ==&gt; default:   File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 829, in resolve
  ==&gt; default:     raise DistributionNotFound(req, requirers)
  ==&gt; default: DistributionNotFound: The 'cryptography&gt;=1.1' distribution was not found and is required by paramiko
  The SSH command responded with a non-zero exit status. Vagrant
  assumes that this means the command failed. The output for this command
  should be in the log above. Please read the output to determine what
  went wrong.
  </code></pre>
  
  <p>Note: When doing <code>vagrant ssh</code> to do the install local than it says that it's already satisfied:</p>
  
  <pre><code>vagrant@debian-jessie:/vagrant$ pip install cryptography
  Requirement already satisfied (use --upgrade to upgrade): cryptography in /usr/lib/python2.7/dist-packages
  Requirement already satisfied (use --upgrade to upgrade): cffi&gt;=0.8 in /usr/lib/python2.7/dist-packages (from cryptography)
  Requirement already satisfied (use --upgrade to upgrade): six&gt;=1.4.1 in /usr/local/lib/python2.7/dist-packages (from cryptography)
  Requirement already satisfied (use --upgrade to upgrade): pycparser in /usr/local/lib/python2.7/dist-packages (from cffi&gt;=0.8-&gt;cryptography)
  </code></pre>