Created
January 4, 2015 18:15
-
-
Save nicholaskuechler/8f4812226c6a908dbc9a to your computer and use it in GitHub Desktop.
pip install ansible inside of a virtualenv
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(rackspace_cloud)nick@mbp: ~/virtualenvs$ pip install ansible | |
Downloading/unpacking ansible | |
Downloading ansible-1.8.2.tar.gz (754kB): 754kB downloaded | |
Running setup.py (path:/Users/nick/virtualenvs/rackspace_cloud/build/ansible/setup.py) egg_info for package ansible | |
no previously-included directories found matching 'lib/ansible/modules/core/.git' | |
no previously-included directories found matching 'lib/ansible/modules/extras/.git' | |
Downloading/unpacking paramiko (from ansible) | |
Downloading paramiko-1.15.2-py2.py3-none-any.whl (165kB): 165kB downloaded | |
Downloading/unpacking jinja2 (from ansible) | |
Downloading Jinja2-2.7.3.tar.gz (378kB): 378kB downloaded | |
Running setup.py (path:/Users/nick/virtualenvs/rackspace_cloud/build/jinja2/setup.py) egg_info for package jinja2 | |
warning: no files found matching '*' under directory 'custom_fixers' | |
warning: no previously-included files matching '*' found under directory 'docs/_build' | |
warning: no previously-included files matching '*.pyc' found under directory 'jinja2' | |
warning: no previously-included files matching '*.pyc' found under directory 'docs' | |
warning: no previously-included files matching '*.pyo' found under directory 'jinja2' | |
warning: no previously-included files matching '*.pyo' found under directory 'docs' | |
Downloading/unpacking PyYAML (from ansible) | |
Downloading PyYAML-3.11.tar.gz (248kB): 248kB downloaded | |
Running setup.py (path:/Users/nick/virtualenvs/rackspace_cloud/build/PyYAML/setup.py) egg_info for package PyYAML | |
Requirement already satisfied (use --upgrade to upgrade): setuptools in ./rackspace_cloud/lib/python2.7/site-packages (from ansible) | |
Downloading/unpacking pycrypto>=2.6 (from ansible) | |
Downloading pycrypto-2.6.1.tar.gz (446kB): 446kB downloaded | |
Running setup.py (path:/Users/nick/virtualenvs/rackspace_cloud/build/pycrypto/setup.py) egg_info for package pycrypto | |
Downloading/unpacking ecdsa>=0.11 (from paramiko->ansible) | |
Downloading ecdsa-0.11.tar.gz (45kB): 45kB downloaded | |
Running setup.py (path:/Users/nick/virtualenvs/rackspace_cloud/build/ecdsa/setup.py) egg_info for package ecdsa | |
Downloading/unpacking markupsafe (from jinja2->ansible) | |
Downloading MarkupSafe-0.23.tar.gz | |
Running setup.py (path:/Users/nick/virtualenvs/rackspace_cloud/build/markupsafe/setup.py) egg_info for package markupsafe | |
Installing collected packages: ansible, paramiko, jinja2, PyYAML, pycrypto, ecdsa, markupsafe | |
Running setup.py install for ansible | |
changing mode of build/scripts-2.7/ansible from 644 to 755 | |
changing mode of build/scripts-2.7/ansible-playbook from 644 to 755 | |
changing mode of build/scripts-2.7/ansible-pull from 644 to 755 | |
changing mode of build/scripts-2.7/ansible-doc from 644 to 755 | |
changing mode of build/scripts-2.7/ansible-galaxy from 644 to 755 | |
changing mode of build/scripts-2.7/ansible-vault from 644 to 755 | |
no previously-included directories found matching 'lib/ansible/modules/core/.git' | |
no previously-included directories found matching 'lib/ansible/modules/extras/.git' | |
changing mode of /Users/nick/virtualenvs/rackspace_cloud/bin/ansible to 755 | |
changing mode of /Users/nick/virtualenvs/rackspace_cloud/bin/ansible-doc to 755 | |
changing mode of /Users/nick/virtualenvs/rackspace_cloud/bin/ansible-galaxy to 755 | |
changing mode of /Users/nick/virtualenvs/rackspace_cloud/bin/ansible-playbook to 755 | |
changing mode of /Users/nick/virtualenvs/rackspace_cloud/bin/ansible-pull to 755 | |
changing mode of /Users/nick/virtualenvs/rackspace_cloud/bin/ansible-vault to 755 | |
Running setup.py install for jinja2 | |
warning: no files found matching '*' under directory 'custom_fixers' | |
warning: no previously-included files matching '*' found under directory 'docs/_build' | |
warning: no previously-included files matching '*.pyc' found under directory 'jinja2' | |
warning: no previously-included files matching '*.pyc' found under directory 'docs' | |
warning: no previously-included files matching '*.pyo' found under directory 'jinja2' | |
warning: no previously-included files matching '*.pyo' found under directory 'docs' | |
Running setup.py install for PyYAML | |
checking if libyaml is compilable | |
clang -DNDEBUG -g -Os -Wall -Wstrict-prototypes -Qunused-arguments -Qunused-arguments -arch i386 -arch x86_64 -pipe -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c build/temp.macosx-10.8-intel-2.7/check_libyaml.c -o build/temp.macosx-10.8-intel-2.7/check_libyaml.o | |
build/temp.macosx-10.8-intel-2.7/check_libyaml.c:2:10: fatal error: 'yaml.h' file not found | |
#include | |
^ | |
1 error generated. | |
libyaml is not found or a compiler error: forcing --without-libyaml | |
(if libyaml is installed correctly, you may need to | |
specify the option --include-dirs or uncomment and | |
modify the parameter include_dirs in setup.cfg) | |
Running setup.py install for pycrypto | |
checking for gcc... clang | |
checking whether the C compiler works... yes | |
checking for C compiler default output file name... a.out | |
checking for suffix of executables... | |
checking whether we are cross compiling... no | |
checking for suffix of object files... o | |
checking whether we are using the GNU C compiler... yes | |
checking whether clang accepts -g... yes | |
checking for clang option to accept ISO C89... none needed | |
checking for __gmpz_init in -lgmp... yes | |
checking for __gmpz_init in -lmpir... no | |
checking whether mpz_powm is declared... yes | |
checking whether mpz_powm_sec is declared... yes | |
checking how to run the C preprocessor... clang -E | |
checking for grep that handles long lines and -e... /usr/bin/grep | |
checking for egrep... /usr/bin/grep -E | |
checking for ANSI C header files... yes | |
checking for sys/types.h... yes | |
checking for sys/stat.h... yes | |
checking for stdlib.h... yes | |
checking for string.h... yes | |
checking for memory.h... yes | |
checking for strings.h... yes | |
checking for inttypes.h... yes | |
checking for stdint.h... yes | |
checking for unistd.h... yes | |
checking for inttypes.h... (cached) yes | |
checking limits.h usability... yes | |
checking limits.h presence... yes | |
checking for limits.h... yes | |
checking stddef.h usability... yes | |
checking stddef.h presence... yes | |
checking for stddef.h... yes | |
checking for stdint.h... (cached) yes | |
checking for stdlib.h... (cached) yes | |
checking for string.h... (cached) yes | |
checking wchar.h usability... yes | |
checking wchar.h presence... yes | |
checking for wchar.h... yes | |
checking for inline... inline | |
checking for int16_t... yes | |
checking for int32_t... yes | |
checking for int64_t... yes | |
checking for int8_t... yes | |
checking for size_t... yes | |
checking for uint16_t... yes | |
checking for uint32_t... yes | |
checking for uint64_t... yes | |
checking for uint8_t... yes | |
checking for stdlib.h... (cached) yes | |
checking for GNU libc compatible malloc... yes | |
checking for memmove... yes | |
checking for memset... yes | |
configure: creating ./config.status | |
config.status: creating src/config.h | |
building 'Crypto.PublicKey._fastmath' extension | |
clang -Wall -Wstrict-prototypes -Qunused-arguments -Qunused-arguments -arch i386 -arch x86_64 -pipe -std=c99 -O3 -fomit-frame-pointer -Isrc/ -I/usr/include/ -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c src/_fastmath.c -o build/temp.macosx-10.8-intel-2.7/src/_fastmath.o | |
src/_fastmath.c:1545:20: warning: comparison of unsigned expression < 0 is always false [-Wtautological-compare] | |
else if (result < 0) | |
~~~~~~ ^ ~ | |
src/_fastmath.c:1621:20: warning: comparison of unsigned expression < 0 is always false [-Wtautological-compare] | |
else if (result < 0) | |
~~~~~~ ^ ~ | |
2 warnings generated. | |
src/_fastmath.c:1545:20: warning: comparison of unsigned expression < 0 is always false [-Wtautological-compare] | |
else if (result < 0) | |
~~~~~~ ^ ~ | |
src/_fastmath.c:1621:20: warning: comparison of unsigned expression < 0 is always false [-Wtautological-compare] | |
else if (result < 0) | |
~~~~~~ ^ ~ | |
2 warnings generated. | |
clang -bundle -undefined dynamic_lookup -Wl,-F. -arch i386 -arch x86_64 -Qunused-arguments -Qunused-arguments build/temp.macosx-10.8-intel-2.7/src/_fastmath.o -lgmp -o build/lib.macosx-10.8-intel-2.7/Crypto/PublicKey/_fastmath.so | |
ld: warning: ignoring file /usr/local/lib/libgmp.dylib, file was built for x86_64 which is not the architecture being linked (i386): /usr/local/lib/libgmp.dylib | |
building 'Crypto.Hash._MD2' extension | |
clang -Wall -Wstrict-prototypes -Qunused-arguments -Qunused-arguments -arch i386 -arch x86_64 -pipe -std=c99 -O3 -fomit-frame-pointer -Isrc/ -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c src/MD2.c -o build/temp.macosx-10.8-intel-2.7/src/MD2.o | |
src/MD2.c:44:19: warning: unused variable 'md2_oid' [-Wunused-const-variable] | |
static const char md2_oid[] = { 0x06, 0x08, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x02, 0x02 }; | |
^ | |
1 warning generated. | |
src/MD2.c:44:19: warning: unused variable 'md2_oid' [-Wunused-const-variable] | |
static const char md2_oid[] = { 0x06, 0x08, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x02, 0x02 }; | |
^ | |
1 warning generated. | |
clang -bundle -undefined dynamic_lookup -Wl,-F. -arch i386 -arch x86_64 -Qunused-arguments -Qunused-arguments build/temp.macosx-10.8-intel-2.7/src/MD2.o -o build/lib.macosx-10.8-intel-2.7/Crypto/Hash/_MD2.so | |
building 'Crypto.Hash._MD4' extension | |
clang -Wall -Wstrict-prototypes -Qunused-arguments -Qunused-arguments -arch i386 -arch x86_64 -pipe -std=c99 -O3 -fomit-frame-pointer -Isrc/ -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c src/MD4.c -o build/temp.macosx-10.8-intel-2.7/src/MD4.o | |
clang -bundle -undefined dynamic_lookup -Wl,-F. -arch i386 -arch x86_64 -Qunused-arguments -Qunused-arguments build/temp.macosx-10.8-intel-2.7/src/MD4.o -o build/lib.macosx-10.8-intel-2.7/Crypto/Hash/_MD4.so | |
building 'Crypto.Hash._SHA256' extension | |
clang -Wall -Wstrict-prototypes -Qunused-arguments -Qunused-arguments -arch i386 -arch x86_64 -pipe -std=c99 -O3 -fomit-frame-pointer -Isrc/ -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c src/SHA256.c -o build/temp.macosx-10.8-intel-2.7/src/SHA256.o | |
clang -bundle -undefined dynamic_lookup -Wl,-F. -arch i386 -arch x86_64 -Qunused-arguments -Qunused-arguments build/temp.macosx-10.8-intel-2.7/src/SHA256.o -o build/lib.macosx-10.8-intel-2.7/Crypto/Hash/_SHA256.so | |
building 'Crypto.Hash._SHA224' extension | |
clang -Wall -Wstrict-prototypes -Qunused-arguments -Qunused-arguments -arch i386 -arch x86_64 -pipe -std=c99 -O3 -fomit-frame-pointer -Isrc/ -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c src/SHA224.c -o build/temp.macosx-10.8-intel-2.7/src/SHA224.o | |
clang -bundle -undefined dynamic_lookup -Wl,-F. -arch i386 -arch x86_64 -Qunused-arguments -Qunused-arguments build/temp.macosx-10.8-intel-2.7/src/SHA224.o -o build/lib.macosx-10.8-intel-2.7/Crypto/Hash/_SHA224.so | |
building 'Crypto.Hash._SHA384' extension | |
clang -Wall -Wstrict-prototypes -Qunused-arguments -Qunused-arguments -arch i386 -arch x86_64 -pipe -std=c99 -O3 -fomit-frame-pointer -Isrc/ -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c src/SHA384.c -o build/temp.macosx-10.8-intel-2.7/src/SHA384.o | |
clang -bundle -undefined dynamic_lookup -Wl,-F. -arch i386 -arch x86_64 -Qunused-arguments -Qunused-arguments build/temp.macosx-10.8-intel-2.7/src/SHA384.o -o build/lib.macosx-10.8-intel-2.7/Crypto/Hash/_SHA384.so | |
building 'Crypto.Hash._SHA512' extension | |
clang -Wall -Wstrict-prototypes -Qunused-arguments -Qunused-arguments -arch i386 -arch x86_64 -pipe -std=c99 -O3 -fomit-frame-pointer -Isrc/ -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c src/SHA512.c -o build/temp.macosx-10.8-intel-2.7/src/SHA512.o | |
clang -bundle -undefined dynamic_lookup -Wl,-F. -arch i386 -arch x86_64 -Qunused-arguments -Qunused-arguments build/temp.macosx-10.8-intel-2.7/src/SHA512.o -o build/lib.macosx-10.8-intel-2.7/Crypto/Hash/_SHA512.so | |
building 'Crypto.Hash._RIPEMD160' extension | |
clang -Wall -Wstrict-prototypes -Qunused-arguments -Qunused-arguments -arch i386 -arch x86_64 -pipe -std=c99 -O3 -fomit-frame-pointer -DPCT_LITTLE_ENDIAN=1 -Isrc/ -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c src/RIPEMD160.c -o build/temp.macosx-10.8-intel-2.7/src/RIPEMD160.o | |
src/RIPEMD160.c:197:20: warning: unused function 'byteswap_digest' [-Wunused-function] | |
static inline void byteswap_digest(uint32_t *p) | |
^ | |
1 warning generated. | |
src/RIPEMD160.c:197:20: warning: unused function 'byteswap_digest' [-Wunused-function] | |
static inline void byteswap_digest(uint32_t *p) | |
^ | |
1 warning generated. | |
clang -bundle -undefined dynamic_lookup -Wl,-F. -arch i386 -arch x86_64 -Qunused-arguments -Qunused-arguments build/temp.macosx-10.8-intel-2.7/src/RIPEMD160.o -o build/lib.macosx-10.8-intel-2.7/Crypto/Hash/_RIPEMD160.so | |
building 'Crypto.Cipher._AES' extension | |
clang -Wall -Wstrict-prototypes -Qunused-arguments -Qunused-arguments -arch i386 -arch x86_64 -pipe -std=c99 -O3 -fomit-frame-pointer -Isrc/ -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c src/AES.c -o build/temp.macosx-10.8-intel-2.7/src/AES.o | |
clang -bundle -undefined dynamic_lookup -Wl,-F. -arch i386 -arch x86_64 -Qunused-arguments -Qunused-arguments build/temp.macosx-10.8-intel-2.7/src/AES.o -o build/lib.macosx-10.8-intel-2.7/Crypto/Cipher/_AES.so | |
building 'Crypto.Cipher._ARC2' extension | |
clang -Wall -Wstrict-prototypes -Qunused-arguments -Qunused-arguments -arch i386 -arch x86_64 -pipe -std=c99 -O3 -fomit-frame-pointer -Isrc/ -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c src/ARC2.c -o build/temp.macosx-10.8-intel-2.7/src/ARC2.o | |
clang -bundle -undefined dynamic_lookup -Wl,-F. -arch i386 -arch x86_64 -Qunused-arguments -Qunused-arguments build/temp.macosx-10.8-intel-2.7/src/ARC2.o -o build/lib.macosx-10.8-intel-2.7/Crypto/Cipher/_ARC2.so | |
building 'Crypto.Cipher._Blowfish' extension | |
clang -Wall -Wstrict-prototypes -Qunused-arguments -Qunused-arguments -arch i386 -arch x86_64 -pipe -std=c99 -O3 -fomit-frame-pointer -Isrc/ -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c src/Blowfish.c -o build/temp.macosx-10.8-intel-2.7/src/Blowfish.o | |
clang -bundle -undefined dynamic_lookup -Wl,-F. -arch i386 -arch x86_64 -Qunused-arguments -Qunused-arguments build/temp.macosx-10.8-intel-2.7/src/Blowfish.o -o build/lib.macosx-10.8-intel-2.7/Crypto/Cipher/_Blowfish.so | |
building 'Crypto.Cipher._CAST' extension | |
clang -Wall -Wstrict-prototypes -Qunused-arguments -Qunused-arguments -arch i386 -arch x86_64 -pipe -std=c99 -O3 -fomit-frame-pointer -Isrc/ -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c src/CAST.c -o build/temp.macosx-10.8-intel-2.7/src/CAST.o | |
clang -bundle -undefined dynamic_lookup -Wl,-F. -arch i386 -arch x86_64 -Qunused-arguments -Qunused-arguments build/temp.macosx-10.8-intel-2.7/src/CAST.o -o build/lib.macosx-10.8-intel-2.7/Crypto/Cipher/_CAST.so | |
building 'Crypto.Cipher._DES' extension | |
clang -Wall -Wstrict-prototypes -Qunused-arguments -Qunused-arguments -arch i386 -arch x86_64 -pipe -std=c99 -O3 -fomit-frame-pointer -Isrc/ -Isrc/libtom/ -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c src/DES.c -o build/temp.macosx-10.8-intel-2.7/src/DES.o | |
clang -bundle -undefined dynamic_lookup -Wl,-F. -arch i386 -arch x86_64 -Qunused-arguments -Qunused-arguments build/temp.macosx-10.8-intel-2.7/src/DES.o -o build/lib.macosx-10.8-intel-2.7/Crypto/Cipher/_DES.so | |
building 'Crypto.Cipher._DES3' extension | |
clang -Wall -Wstrict-prototypes -Qunused-arguments -Qunused-arguments -arch i386 -arch x86_64 -pipe -std=c99 -O3 -fomit-frame-pointer -Isrc/ -Isrc/libtom/ -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c src/DES3.c -o build/temp.macosx-10.8-intel-2.7/src/DES3.o | |
clang -bundle -undefined dynamic_lookup -Wl,-F. -arch i386 -arch x86_64 -Qunused-arguments -Qunused-arguments build/temp.macosx-10.8-intel-2.7/src/DES3.o -o build/lib.macosx-10.8-intel-2.7/Crypto/Cipher/_DES3.so | |
building 'Crypto.Cipher._ARC4' extension | |
clang -Wall -Wstrict-prototypes -Qunused-arguments -Qunused-arguments -arch i386 -arch x86_64 -pipe -std=c99 -O3 -fomit-frame-pointer -Isrc/ -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c src/ARC4.c -o build/temp.macosx-10.8-intel-2.7/src/ARC4.o | |
clang -bundle -undefined dynamic_lookup -Wl,-F. -arch i386 -arch x86_64 -Qunused-arguments -Qunused-arguments build/temp.macosx-10.8-intel-2.7/src/ARC4.o -o build/lib.macosx-10.8-intel-2.7/Crypto/Cipher/_ARC4.so | |
building 'Crypto.Cipher._XOR' extension | |
clang -Wall -Wstrict-prototypes -Qunused-arguments -Qunused-arguments -arch i386 -arch x86_64 -pipe -std=c99 -O3 -fomit-frame-pointer -Isrc/ -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c src/XOR.c -o build/temp.macosx-10.8-intel-2.7/src/XOR.o | |
clang -bundle -undefined dynamic_lookup -Wl,-F. -arch i386 -arch x86_64 -Qunused-arguments -Qunused-arguments build/temp.macosx-10.8-intel-2.7/src/XOR.o -o build/lib.macosx-10.8-intel-2.7/Crypto/Cipher/_XOR.so | |
building 'Crypto.Util.strxor' extension | |
clang -Wall -Wstrict-prototypes -Qunused-arguments -Qunused-arguments -arch i386 -arch x86_64 -pipe -std=c99 -O3 -fomit-frame-pointer -Isrc/ -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c src/strxor.c -o build/temp.macosx-10.8-intel-2.7/src/strxor.o | |
src/strxor.c:31:19: warning: unused variable 'rcsid' [-Wunused-const-variable] | |
static const char rcsid[] = "$Id$"; | |
^ | |
1 warning generated. | |
src/strxor.c:31:19: warning: unused variable 'rcsid' [-Wunused-const-variable] | |
static const char rcsid[] = "$Id$"; | |
^ | |
1 warning generated. | |
clang -bundle -undefined dynamic_lookup -Wl,-F. -arch i386 -arch x86_64 -Qunused-arguments -Qunused-arguments build/temp.macosx-10.8-intel-2.7/src/strxor.o -o build/lib.macosx-10.8-intel-2.7/Crypto/Util/strxor.so | |
building 'Crypto.Util._counter' extension | |
clang -Wall -Wstrict-prototypes -Qunused-arguments -Qunused-arguments -arch i386 -arch x86_64 -pipe -std=c99 -O3 -fomit-frame-pointer -Isrc/ -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c src/_counter.c -o build/temp.macosx-10.8-intel-2.7/src/_counter.o | |
clang -bundle -undefined dynamic_lookup -Wl,-F. -arch i386 -arch x86_64 -Qunused-arguments -Qunused-arguments build/temp.macosx-10.8-intel-2.7/src/_counter.o -o build/lib.macosx-10.8-intel-2.7/Crypto/Util/_counter.so | |
Running setup.py install for ecdsa | |
Running setup.py install for markupsafe | |
building 'markupsafe._speedups' extension | |
clang -DNDEBUG -g -Os -Wall -Wstrict-prototypes -Qunused-arguments -Qunused-arguments -arch i386 -arch x86_64 -pipe -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c markupsafe/_speedups.c -o build/temp.macosx-10.8-intel-2.7/markupsafe/_speedups.o | |
clang -bundle -undefined dynamic_lookup -Wl,-F. -arch i386 -arch x86_64 -Qunused-arguments -Qunused-arguments build/temp.macosx-10.8-intel-2.7/markupsafe/_speedups.o -o build/lib.macosx-10.8-intel-2.7/markupsafe/_speedups.so | |
Successfully installed ansible paramiko jinja2 PyYAML pycrypto ecdsa markupsafe | |
Cleaning up... |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Referenced from: http://nicholaskuechler.com/2015/01/09/build-rackspace-cloud-servers-ansible-virtualenv/