hi everybody,
I just tried this out and apparently the path you specify for
ANSIBLE_CONFIG has to actually exist:
dick.visser@ams-049 ~ % export ANSIBLE_CONFIG=/opt/nonexistent/ansible.cfg
dick.visser@ams-049 ~ % ansible --version
ansible 2.10.12
config file = /Users/dick.visser/.ansible.cfg
configured module search path =
['/Users/dick.visser/.ansible/plugins/modules',
'/usr/share/ansible/plugins/modules']
ansible python module location =
/Users/dick.visser/.pyenv/versions/3.9.6/lib/python3.9/site-packages/ansible
executable location = /Users/dick.visser/.pyenv/versions/3.9.6/bin/ansible
python version = 3.9.6 (default, Aug 11 2021, 12:13:01) [Clang
12.0.5 (clang-1205.0.22.11)]
dick.visser@ams-049 ~ % export ANSIBLE_CONFIG=/opt/ansible.cfg
dick.visser@ams-049 ~ % ansible --version
ansible 2.10.12
config file = /opt/ansible.cfg
configured module search path =
['/Users/dick.visser/.ansible/plugins/modules',
'/usr/share/ansible/plugins/modules']
ansible python module location =
/Users/dick.visser/.pyenv/versions/3.9.6/lib/python3.9/site-packages/ansible
executable location = /Users/dick.visser/.pyenv/versions/3.9.6/bin/ansible
python version = 3.9.6 (default, Aug 11 2021, 12:13:01) [Clang
12.0.5 (clang-1205.0.22.11)]
hei Dick,
thx for your getting back to me
sorry, I was not clear enough obviously. The real-life .cfg file I am pointing at naturally. Maybe my understanding is mislead … all best Gunnar
I assume the file name (everything preceding the .cfg ending) can be chosen freely and does not require the string 'ansible' being part of it, right? Still, same as you even if I can validate the existence of the ANSIBLE_CONFIG variable it does not show via ansible --version neither.
Well it works fine here, also for a file with the ansible substring:
$ export ANSIBLE_CONFIG=/opt/project.cfg
$ ansible --version | head -2
ansible 2.10.12
config file = /opt/project.cfg
unset ANSIBLE_CONFIG
$ ansible --version | head -2
ansible 2.10.12
config file = /Users/dick.visser/.ansible.cfg
Maybe I get the understanding of hierarchy not quite right? I was thinking that once set the ANSIBLE_CONFIG environment variable would overrule all other (fallback) configuration files. That would make much sense to me but maybe the variable is the least mighty one and not the boss in the ring as I thought?
As the above example shows (and as the docs at
https://docs.ansible.com/ansible/latest/installation_guide/intro_configuration.html#environmental-configuration
state):
"Ansible also allows configuration of settings using environment
variables. If these environment variables are set, they will override
any setting loaded from the configuration file."
So, if this does NOT work for you, then your environment is wrong
(wrong variable name/typo?). Or maybe the way you execute the command
is non standard, shell issues, etc.
hello
ok I got it … my understanding of environment variables was not sufficient obviously I thought was proof enough for this to work in the current shell/context and (which in my usecase was not required or even unwanted). thanks for clarifying best Gunnar
hello
Well it works fine here, also for a file with the ansible substring:
$ export ANSIBLE_CONFIG=/opt/project.cfg $ ansible --version | head -2 ansible 2.10.12 config file = /opt/project.cfgok I got it ... my understanding of environment variables was not sufficient obviously
I thought
$ ANSIBLE_CONFIG=/opt/project.cfg
$ echo $ANSIBLE_CONFG
/opt/project.cfgwas proof enough for this to work in the current shell/context and *you only needed the **'**export'**to make the VARIABLE universal and permanent* (which in my usecase was not required or even unwanted).
thanks for clarifying
best Gunnar
You don't need export for one time usage:
ANSIBLE_CONFIG=/opt/project.cfg ansible ...
Regards
Racke
Hi,
I dont think that should be your case but just be also aware that:
Ansible will not automatically load a config file from the current working directory if the directory is world-writable
Regards.