Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why can't I find ansible when I install it using setup.py?

Tags:

Because I had some trouble with Ansible (I'm on mac) which seemed to be fixed in the latest dev version today I uninstalled ansible through pip (sudo pip uninstall ansible) and reinstalled the latest dev version from the github repo using the classic setup.py method, which seemed to end successfully (full output here.

So then I tried using it:

$ ansible --version -bash: ansible: command not found $ which ansible $ 

I checked where it is installed. From the full output I linked to above I found that it is installed in /usr/local/lib/python2.7/site-packages, and indeed in there I find an egg:

$ ls -l /usr/local/lib/python2.7/site-packages | grep ansible drwxr-xr-x    4 root    admin     136 Aug 22 16:33 ansible-2.4.0-py2.7.egg 

When I start Python and check the site-packages folder I find a different folder:

>>> import site; print site.getsitepackages()[0] /usr/local/Cellar/python/2.7.13_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages 

but that is a symlink to the same folder:

$ ls -l /usr/local/Cellar/python/2.7.13_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages lrwxr-xr-x  1 hielke  admin  54 Aug 13 22:36 /usr/local/Cellar/python/2.7.13_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages -> ../../../../../../../../../lib/python2.7/site-packages 

So I guess the problem is that no symlink is created to the ansible package in /usr/local/bin/. But I'm unsure how I could create such a symlink and why it wouldn't appear in the first place.

Does anybody know how I can move forward from here? All tips are welcome!

like image 931
kramer65 Avatar asked Aug 22 '17 14:08

kramer65


People also ask

Where is my Ansible installed?

By default, Ansible's configuration file location is /etc/ansible/ansible. cfg . In most cases, the default configurations are enough to get you started using Ansible.

Where is the Ansible executable?

ansible. cfg (in the home directory) /etc/ansible/ansible. cfg.

Which Python version is required for Ansible?

Currently Ansible can be run from any machine with Python 2 (version 2.7) or Python 3 (versions 3.5 and higher) installed. Windows isn't supported for the control machine. This includes Red Hat, Debian, CentOS, macOS, any of the BSDs, and so on.


1 Answers

When you invoke ansible from the shell, bash will search in your $PATH for a file named ansible that is executable. This may not be the only issue, but this is the immediate cause for the error you're seeing. The .egg file itself is not an executable, it's just a file used for distributing the code.

If ansible has been installed correctly, you should be able to find it by using locate or the OSX Finder GUI. The name should match exactly, with no file extensions. You will probably also find ansible-connection, ansible-console, etc. in the same place where you find the ansible executable. If you find it, great! Test it out and add that directory to your $PATH in a terminal like so:

export PATH=$PATH:/path/to/ansible 

Where /path/to/ansible is the directory where you found the executables. This change to the $PATH variable is temporary, and will go away when you close your shell. If you can now run ansible from bash, then you can make the change permanent by adding that export to the end of your $HOME/.bash_profile file, or by adding a rule in /etc/paths.d (recommended by Apple). See more on how exactly to do those here if you are unfamiliar with them.

Now, if that's not the problem and you can't find the ansible executable, then the installation itself is your problem. You might also try using a virtual environment (if you have it installed) to make sure that the version you're pulling from github isn't broken:

git clone https://github.com/ansible/ansible.git cd ansible virtualenv venv source venv/bin/activate pip install . which ansible 

As of this writing, the above gives me a working ansible install.

like image 176
rnorris Avatar answered Oct 24 '22 12:10

rnorris