Merge pull request #6021 from risaacson/issue_5359_2

Config resoution order correction and documentation.
This commit is contained in:
Richard Isaacson 2014-02-14 14:44:09 -06:00
commit 77c42c5c1e
3 changed files with 30 additions and 20 deletions

View file

@ -5,17 +5,24 @@ The Ansible Configuration File
.. highlight:: bash
Certain things in Ansible are adjustable in a configuration file. In general, the stock configuration is probably
right for most users, but that doesn't mean you might not want to change them.
Certain settings in Ansible are adjustable via a configuration file. The stock configuration should be sufficient
for most users, but there may be reasons you would want to change them.
The mechanism for doing this is the "ansible.cfg" file, which is looked for in the following locations::
Changes can be made and used in a configuration file which will be processed processed in the following order::
* /etc/ansible/ansible.cfg
* ~/.ansible.cfg
* ANSIBLE_CONFIG (an environment variable)
* ansible.cfg (in the current directory)
* .ansible.cfg (in the home directory)
* /etc/ansible/ansible.cfg
If multiple file locations matching the above exist, the last location on the above list is used. Settings in files
are not merged together.
Prior to 1.5 the order was::
* ansible.cfg (in the current directory)
* ANSIBLE_CONFIG (an environment variable)
* .ansible.cfg (in the home directory)
* /etc/ansible/ansible.cfg
Ansible will process the above list and use the first file found. Settings in files are not merged together.
.. _getting_the_latest_configuration:

View file

@ -2,9 +2,10 @@
# ==============================================
# nearly all parameters can be overridden in ansible-playbook
# or with command line flags. ansible will read ~/.ansible.cfg,
# ansible.cfg in the current working directory or
# /etc/ansible/ansible.cfg, whichever it finds first
# or with command line flags. ansible will read ANSIBLE_CONFIG,
# ansible.cfg in the current working directory, .ansible.cfg in
# the home directory or /etc/ansible/ansible.cfg, whichever it
# finds first
[defaults]

View file

@ -56,20 +56,22 @@ def _get_config(p, section, key, env_var, default):
return default
def load_config_file():
''' Load Config File order(first found is used): ENV, CWD, HOME, /etc/ansible '''
p = ConfigParser.ConfigParser()
path0 = os.getenv("ANSIBLE_CONFIG", None)
if path0 is not None:
path0 = os.path.expanduser(path0)
path1 = os.getcwd() + "/ansible.cfg"
path2 = os.path.expanduser(os.environ.get('ANSIBLE_CONFIG', "~/.ansible.cfg"))
path2 = os.path.expanduser("~/.ansible.cfg")
path3 = "/etc/ansible/ansible.cfg"
if os.path.exists(path1):
p.read(path1)
elif os.path.exists(path2):
p.read(path2)
elif os.path.exists(path3):
p.read(path3)
else:
return None
return p
for path in [path0, path1, path2, path3]:
if path is not None and os.path.exists(path):
p.read(path)
return p
return None
def shell_expand_path(path):
''' shell_expand_path is needed as os.path.expanduser does not work