Awesome
ansible-completion
Provide a bash completion on host name, module name and options for ansible.
Important
The difference with the official auto-completion is ansible-completion support completion of the hosts, based on the inventory file, and modules. The official auto-completion is however much more up-to-date with all the arguments names.
Installation
-
Get the
ansible-completion.bash
file. -
Copy/move the
ansible-completion.bash
in yourbash_completion.d
folder (/etc/bash_completion.d
,/usr/local/etc/bash_completion.d
or~/bash_completion.d
). -
Or copy/move it where you want and then load the
ansible-completion.bash
file in your~/.bashrc
or~/.profile
like that: source ~/ansible-completion.bash -
Reload your shell with something like
source ~/.bashrc
orsource ~/.profile
Note for OSX
-
Clone the repo, install bash an auto-completion2 with homebew:
brew install bash bash-completion2
-
Change your terminal bash to a homebrew one by setting the
command
option to/usr/local/bin/bash
-
Add the following code to your
~/.profile
:if [ -f $(brew --prefix)/share/bash-completion/bash_completion ]; then . $(brew --prefix)/share/bash-completion/bash_completion fi
-
Create a symbolik link for
ansible-completion.bash
:ln -vs ~/soft/ansible-completion/ansible-completion.bash /usr/local/share/bash-completion/completions/ansible
Good to know
If the --module-path
(-M
) or --inventory-file
(-i
) is on the command line, the completion will use it.
For the completion on module name, the completion script build a cache of modules names.
You can set the cache timeout with the environement variable ANSIBLE_COMPLETION_CACHE_TIMEOUT
, the default value is 120
seconds.