Specify Python package versions explicitly (#373)

Fixes #349

* Use -r for pip install
diff --git a/.travis.yml b/.travis.yml
index b6ed779..5cb19a5 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -16,7 +16,6 @@
 python:
   - "3.5"
 install:
-  - pip install flake8
-  - pip install ansible-lint
+  - pip install -r ./lib/requirements.txt
 script:
   - ./scripts/cibuild
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 4154f43..630d76b 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -21,9 +21,9 @@
 
 ## Muchos Testing
 
-Muchos has unit tests.  To run them, first install nose using pip:
+Muchos has unit tests. To run them, first install required packages:
 ```
-    pip install nose
+    pip install -r ./lib/requirements.txt
 ```
 The following command runs the unit tests:
 ```
diff --git a/lib/requirements.txt b/lib/requirements.txt
new file mode 100644
index 0000000..90e584e
--- /dev/null
+++ b/lib/requirements.txt
@@ -0,0 +1,5 @@
+flake8==3.8.0
+ansible-lint==4.2.0
+ansible==2.9.13
+ansible[azure]==2.9.13
+nose==1.3.7