# Environment variables prefix with ANSIBLE\_, and AWX

**URL:** <https://forum.ansible.com/t/environment-variables-prefix-with-ansible-and-awx/5737>\
**Category:** Project Discussions\
**Tags:** collections, community-wg, awx\
**Created:** [May 10, 2024, 4:57pm UTC](https://forum.ansible.com/t/environment-variables-prefix-with-ansible-and-awx/5737 "2024-05-10T16:57:14Z")\
**Posts on this page:** 17\
**Page:** 2

<div class="post-metadata">

**Author:** ![Denney-tech](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/denney-tech/32/1556_2.png) [@Denney-tech](https://forum.ansible.com/u/Denney-tech)\
**Post date:** [May 21, 2024, 4:30pm UTC](https://forum.ansible.com/t/environment-variables-prefix-with-ansible-and-awx/5737/21 "2024-05-21T16:30:02Z")

</div>

I’m not much of a python dev, but I do know my way around powershell.

This list is not exhaustive, as there are some “alternative” ENV’s that I excluded just to generate a quick list.

Ansible ~~2.15.2~~ 2.14.9 lists 189 environment vars with the following powershell snippet:

```auto
$ansible_config = ansible-config list -t all --format json | convertfrom-json
$ansible_config.psobject.properties.name| % {$ansible_config.$_.env.name} | sort | uniq

```

> **ENV\_VARS**
>
> ANSIBLE\_ACTION\_PLUGINS  
> ANSIBLE\_ACTION\_WARNINGS  
> ANSIBLE\_AGNOSTIC\_BECOME\_PROMPT  
> ANSIBLE\_ANY\_ERRORS\_FATAL  
> ANSIBLE\_ASK\_PASS  
> ANSIBLE\_ASK\_VAULT\_PASS  
> ANSIBLE\_BECOME  
> ANSIBLE\_BECOME\_ALLOW\_SAME\_USER  
> ANSIBLE\_BECOME\_ASK\_PASS  
> ANSIBLE\_BECOME\_EXE  
> ANSIBLE\_BECOME\_FLAGS  
> ANSIBLE\_BECOME\_METHOD  
> ANSIBLE\_BECOME\_PASSWORD\_FILE  
> ANSIBLE\_BECOME\_PLUGINS  
> ANSIBLE\_BECOME\_USER  
> ANSIBLE\_CACHE\_PLUGIN  
> ANSIBLE\_CACHE\_PLUGIN\_CONNECTION  
> ANSIBLE\_CACHE\_PLUGIN\_PREFIX  
> ANSIBLE\_CACHE\_PLUGINS  
> ANSIBLE\_CACHE\_PLUGIN\_TIMEOUT  
> ANSIBLE\_CALLBACK\_PLUGINS  
> ANSIBLE\_CALLBACKS\_ENABLED  
> ANSIBLE\_CALLBACK\_WHITELIST  
> ANSIBLE\_CLICONF\_PLUGINS  
> ANSIBLE\_COLLECTIONS\_ON\_ANSIBLE\_VERSION\_MISMATCH  
> ANSIBLE\_COLLECTIONS\_PATH  
> ANSIBLE\_COLLECTIONS\_PATHS  
> ANSIBLE\_COLLECTIONS\_SCAN\_SYS\_PATH  
> ANSIBLE\_COLOR\_CHANGED  
> ANSIBLE\_COLOR\_CONSOLE\_PROMPT  
> ANSIBLE\_COLOR\_DEBUG  
> ANSIBLE\_COLOR\_DEPRECATE  
> ANSIBLE\_COLOR\_DIFF\_ADD  
> ANSIBLE\_COLOR\_DIFF\_LINES  
> ANSIBLE\_COLOR\_DIFF\_REMOVE  
> ANSIBLE\_COLOR\_ERROR  
> ANSIBLE\_COLOR\_HIGHLIGHT  
> ANSIBLE\_COLOR\_OK  
> ANSIBLE\_COLOR\_SKIP  
> ANSIBLE\_COLOR\_UNREACHABLE  
> ANSIBLE\_COLOR\_VERBOSE  
> ANSIBLE\_COLOR\_WARN  
> ANSIBLE\_CONNECTION\_PASSWORD\_FILE  
> ANSIBLE\_CONNECTION\_PATH  
> ANSIBLE\_CONNECTION\_PLUGINS  
> \_ANSIBLE\_COVERAGE\_REMOTE\_OUTPUT  
> \_ANSIBLE\_COVERAGE\_REMOTE\_PATH\_FILTER  
> ANSIBLE\_COW\_ACCEPTLIST  
> ANSIBLE\_COW\_PATH  
> ANSIBLE\_COW\_SELECTION  
> ANSIBLE\_COW\_WHITELIST  
> ANSIBLE\_DEBUG  
> ANSIBLE\_DEPRECATION\_WARNINGS  
> ANSIBLE\_DEVEL\_WARNING  
> ANSIBLE\_DIFF\_ALWAYS  
> ANSIBLE\_DIFF\_CONTEXT  
> ANSIBLE\_DISPLAY\_ARGS\_TO\_STDOUT  
> ANSIBLE\_DISPLAY\_SKIPPED\_HOSTS  
> ANSIBLE\_DOC\_FRAGMENT\_PLUGINS  
> ANSIBLE\_DUPLICATE\_YAML\_DICT\_KEY  
> ANSIBLE\_ENABLE\_TASK\_DEBUGGER  
> ANSIBLE\_ERROR\_ON\_MISSING\_HANDLER  
> ANSIBLE\_ERROR\_ON\_UNDEFINED\_VARS  
> ANSIBLE\_EXECUTABLE  
> ANSIBLE\_FACT\_PATH  
> ANSIBLE\_FACTS\_MODULES  
> ANSIBLE\_FILTER\_PLUGINS  
> ANSIBLE\_FORCE\_COLOR  
> ANSIBLE\_FORCE\_HANDLERS  
> ANSIBLE\_FORKS  
> ANSIBLE\_GALAXY\_CACHE\_DIR  
> ANSIBLE\_GALAXY\_COLLECTION\_SKELETON  
> ANSIBLE\_GALAXY\_COLLECTION\_SKELETON\_IGNORE  
> ANSIBLE\_GALAXY\_DISABLE\_GPG\_VERIFY  
> ANSIBLE\_GALAXY\_DISPLAY\_PROGRESS  
> ANSIBLE\_GALAXY\_GPG\_KEYRING  
> ANSIBLE\_GALAXY\_IGNORE  
> ANSIBLE\_GALAXY\_IGNORE\_SIGNATURE\_STATUS\_CODES  
> ANSIBLE\_GALAXY\_REQUIRED\_VALID\_SIGNATURE\_COUNT  
> ANSIBLE\_GALAXY\_ROLE\_SKELETON  
> ANSIBLE\_GALAXY\_ROLE\_SKELETON\_IGNORE  
> ANSIBLE\_GALAXY\_SERVER  
> ANSIBLE\_GALAXY\_SERVER\_LIST  
> ANSIBLE\_GALAXY\_TOKEN\_PATH  
> ANSIBLE\_GATHERING  
> ANSIBLE\_GATHER\_SUBSET  
> ANSIBLE\_GATHER\_TIMEOUT  
> ANSIBLE\_HASH\_BEHAVIOUR  
> ANSIBLE\_HOME  
> ANSIBLE\_HOST\_KEY\_CHECKING  
> ANSIBLE\_HOST\_PATTERN\_MISMATCH  
> ANSIBLE\_HTTPAPI\_PLUGINS  
> ANSIBLE\_INJECT\_FACT\_VARS  
> ANSIBLE\_INVALID\_TASK\_ATTRIBUTE\_FAILED  
> ANSIBLE\_INVENTORY  
> ANSIBLE\_INVENTORY\_ANY\_UNPARSED\_IS\_FAILED  
> ANSIBLE\_INVENTORY\_CACHE  
> ANSIBLE\_INVENTORY\_CACHE\_CONNECTION  
> ANSIBLE\_INVENTORY\_CACHE\_PLUGIN  
> ANSIBLE\_INVENTORY\_CACHE\_PLUGIN\_PREFIX  
> ANSIBLE\_INVENTORY\_CACHE\_TIMEOUT  
> ANSIBLE\_INVENTORY\_ENABLED  
> ANSIBLE\_INVENTORY\_EXPORT  
> ANSIBLE\_INVENTORY\_IGNORE  
> ANSIBLE\_INVENTORY\_IGNORE\_REGEX  
> ANSIBLE\_INVENTORY\_PLUGINS  
> ANSIBLE\_INVENTORY\_UNPARSED\_FAILED  
> ANSIBLE\_INVENTORY\_UNPARSED\_WARNING  
> ANSIBLE\_JINJA2\_EXTENSIONS  
> ANSIBLE\_JINJA2\_NATIVE  
> ANSIBLE\_JINJA2\_NATIVE\_WARNING  
> ANSIBLE\_KEEP\_REMOTE\_FILES  
> ANSIBLE\_LIBRARY  
> ANSIBLE\_LIBVIRT\_LXC\_NOSECLABEL  
> ANSIBLE\_LOAD\_CALLBACK\_PLUGINS  
> ANSIBLE\_LOCALHOST\_WARNING  
> ANSIBLE\_LOCAL\_TEMP  
> ANSIBLE\_LOG\_FILTER  
> ANSIBLE\_LOG\_PATH  
> ANSIBLE\_LOOKUP\_PLUGINS  
> ANSIBLE\_MAX\_DIFF\_SIZE  
> ANSIBLE\_MODULE\_ARGS  
> ANSIBLE\_MODULE\_IGNORE\_EXTS  
> ANSIBLE\_MODULE\_UTILS  
> ANSIBLE\_NETCONF\_PLUGINS  
> ANSIBLE\_NETCONF\_SSH\_CONFIG  
> ANSIBLE\_NETWORK\_GROUP\_MODULES  
> ANSIBLE\_NOCOLOR  
> ANSIBLE\_NOCOWS  
> ANSIBLE\_NO\_LOG  
> ANSIBLE\_NO\_TARGET\_SYSLOG  
> ANSIBLE\_NULL\_REPRESENTATION  
> ANSIBLE\_OLD\_PLUGIN\_CACHE\_CLEAR  
> ANSIBLE\_PARAMIKO\_HOST\_KEY\_AUTO\_ADD  
> ANSIBLE\_PARAMIKO\_LOOK\_FOR\_KEYS  
> ANSIBLE\_PERSISTENT\_COMMAND\_TIMEOUT  
> ANSIBLE\_PERSISTENT\_CONNECT\_RETRY\_TIMEOUT  
> ANSIBLE\_PERSISTENT\_CONNECT\_TIMEOUT  
> ANSIBLE\_PERSISTENT\_CONTROL\_PATH\_DIR  
> ANSIBLE\_PIPELINING  
> ANSIBLE\_PLAYBOOK\_DIR  
> ANSIBLE\_PLAYBOOK\_VARS\_ROOT  
> ANSIBLE\_POLL\_INTERVAL  
> ANSIBLE\_PRECEDENCE  
> ANSIBLE\_PRIVATE\_KEY\_FILE  
> ANSIBLE\_PRIVATE\_ROLE\_VARS  
> ANSIBLE\_PYTHON\_INTERPRETER  
> ANSIBLE\_PYTHON\_MODULE\_RLIMIT\_NOFILE  
> ANSIBLE\_REMOTE\_PORT  
> ANSIBLE\_REMOTE\_USER  
> ANSIBLE\_RETRY\_FILES\_ENABLED  
> ANSIBLE\_RETRY\_FILES\_SAVE\_PATH  
> ANSIBLE\_ROLES\_PATH  
> ANSIBLE\_RUN\_TAGS  
> ANSIBLE\_RUN\_VARS\_PLUGINS  
> ANSIBLE\_SELINUX\_SPECIAL\_FS  
> ANSIBLE\_SHOW\_CUSTOM\_STATS  
> ANSIBLE\_SKIP\_TAGS  
> ANSIBLE\_STDOUT\_CALLBACK  
> ANSIBLE\_STRATEGY  
> ANSIBLE\_STRATEGY\_PLUGINS  
> ANSIBLE\_STRING\_CONVERSION\_ACTION  
> ANSIBLE\_STRING\_TYPE\_FILTERS  
> ANSIBLE\_SU  
> ANSIBLE\_SYSLOG\_FACILITY  
> ANSIBLE\_SYSTEM\_WARNINGS  
> ANSIBLE\_TASK\_DEBUGGER\_IGNORE\_ERRORS  
> ANSIBLE\_TASK\_TIMEOUT  
> ANSIBLE\_TERMINAL\_PLUGINS  
> ANSIBLE\_TEST\_PLUGINS  
> ANSIBLE\_TIMEOUT  
> ANSIBLE\_TRANSFORM\_INVALID\_GROUP\_CHARS  
> ANSIBLE\_TRANSPORT  
> ANSIBLE\_USE\_PERSISTENT\_CONNECTIONS  
> ANSIBLE\_VALIDATE\_ACTION\_GROUP\_METADATA  
> ANSIBLE\_VARS\_ENABLED  
> ANSIBLE\_VARS\_PLUGINS  
> ANSIBLE\_VAULT\_ENCRYPT\_IDENTITY  
> ANSIBLE\_VAULT\_IDENTITY  
> ANSIBLE\_VAULT\_IDENTITY\_LIST  
> ANSIBLE\_VAULT\_ID\_MATCH  
> ANSIBLE\_VAULT\_PASSWORD\_FILE  
> ANSIBLE\_VERBOSE\_TO\_STDERR  
> ANSIBLE\_VERBOSITY  
> ANSIBLE\_WIN\_ASYNC\_STARTUP\_TIMEOUT  
> ANSIBLE\_WORKER\_SHUTDOWN\_POLL\_COUNT  
> ANSIBLE\_WORKER\_SHUTDOWN\_POLL\_DELAY  
> ANSIBLE\_YAML\_FILENAME\_EXT  
> NO\_COLOR

I’m not sure how to gracefully do this programmatically in AWX where this is would need to be parsed, and I’m not sure that `ansible-config` is even available in that context.

---

<div class="post-metadata">

**Author:** ![bcoca](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/bcoca/32/9269_2.png) [@bcoca](https://forum.ansible.com/u/bcoca)\
**Post date:** [May 21, 2024, 4:34pm UTC](https://forum.ansible.com/t/environment-variables-prefix-with-ansible-and-awx/5737/22 "2024-05-21T16:34:17Z")

</div>

> [@Denney-tech](#):
>
> lists 189 environment vars with the following powershell snippet:

try 2.17, I have been improving the output in 2.16 and 2.17 (more complete and more target-able). Also working on adding ‘galaxy servers’ right now (which were left out as they are dynamically generated config)

ansible-config is available in the EE as it is part of the ansible cli, so AWX can test the validity of things for that EE

---

<div class="post-metadata">

**Author:** ![Denney-tech](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/denney-tech/32/1556_2.png) [@Denney-tech](https://forum.ansible.com/u/Denney-tech)\
**Post date:** [May 21, 2024, 4:38pm UTC](https://forum.ansible.com/t/environment-variables-prefix-with-ansible-and-awx/5737/23 "2024-05-21T16:38:52Z")

</div>

Actually, that was 2.14.9 native to RHEL 9.3. I forgot to activate my 2.15 venv.

Will build a 2.17 venv and generate another list.

Edit: Eh… Our Nexus pypi cache is stale, don’t even have 2.16 available at the moment.

Ansible 2.15.12 has 193\* vars.

> **ENV\_VARS**
>
> ANSIBLE\_ACTION\_PLUGINS  
> ANSIBLE\_ACTION\_WARNINGS  
> ANSIBLE\_AGNOSTIC\_BECOME\_PROMPT  
> ANSIBLE\_ANY\_ERRORS\_FATAL  
> ANSIBLE\_ASK\_PASS  
> ANSIBLE\_ASK\_VAULT\_PASS  
> ANSIBLE\_BECOME  
> ANSIBLE\_BECOME\_ALLOW\_SAME\_USER  
> ANSIBLE\_BECOME\_ASK\_PASS  
> ANSIBLE\_BECOME\_EXE  
> ANSIBLE\_BECOME\_FLAGS  
> ANSIBLE\_BECOME\_METHOD  
> ANSIBLE\_BECOME\_PASSWORD\_FILE  
> ANSIBLE\_BECOME\_PLUGINS  
> ANSIBLE\_BECOME\_USER  
> ANSIBLE\_CACHE\_PLUGIN  
> ANSIBLE\_CACHE\_PLUGIN\_CONNECTION  
> ANSIBLE\_CACHE\_PLUGIN\_PREFIX  
> ANSIBLE\_CACHE\_PLUGINS  
> ANSIBLE\_CACHE\_PLUGIN\_TIMEOUT  
> ANSIBLE\_CALLBACK\_PLUGINS  
> ANSIBLE\_CALLBACKS\_ENABLED  
> ANSIBLE\_CLICONF\_PLUGINS  
> ANSIBLE\_COLLECTIONS\_ON\_ANSIBLE\_VERSION\_MISMATCH  
> ANSIBLE\_COLLECTIONS\_PATH  
> ANSIBLE\_COLLECTIONS\_PATHS  
> ANSIBLE\_COLLECTIONS\_SCAN\_SYS\_PATH  
> ANSIBLE\_COLOR\_CHANGED  
> ANSIBLE\_COLOR\_CONSOLE\_PROMPT  
> ANSIBLE\_COLOR\_DEBUG  
> ANSIBLE\_COLOR\_DEPRECATE  
> ANSIBLE\_COLOR\_DIFF\_ADD  
> ANSIBLE\_COLOR\_DIFF\_LINES  
> ANSIBLE\_COLOR\_DIFF\_REMOVE  
> ANSIBLE\_COLOR\_ERROR  
> ANSIBLE\_COLOR\_HIGHLIGHT  
> ANSIBLE\_COLOR\_OK  
> ANSIBLE\_COLOR\_SKIP  
> ANSIBLE\_COLOR\_UNREACHABLE  
> ANSIBLE\_COLOR\_VERBOSE  
> ANSIBLE\_COLOR\_WARN  
> ANSIBLE\_CONNECTION\_PASSWORD\_FILE  
> ANSIBLE\_CONNECTION\_PATH  
> ANSIBLE\_CONNECTION\_PLUGINS  
> \_ANSIBLE\_COVERAGE\_REMOTE\_OUTPUT  
> \_ANSIBLE\_COVERAGE\_REMOTE\_PATH\_FILTER  
> ANSIBLE\_COW\_ACCEPTLIST  
> ANSIBLE\_COW\_PATH  
> ANSIBLE\_COW\_SELECTION  
> ANSIBLE\_DEBUG  
> ANSIBLE\_DEPRECATION\_WARNINGS  
> ANSIBLE\_DEVEL\_WARNING  
> ANSIBLE\_DIFF\_ALWAYS  
> ANSIBLE\_DIFF\_CONTEXT  
> ANSIBLE\_DISPLAY\_ARGS\_TO\_STDOUT  
> ANSIBLE\_DISPLAY\_SKIPPED\_HOSTS  
> ANSIBLE\_DOC\_FRAGMENT\_PLUGINS  
> ANSIBLE\_DUPLICATE\_YAML\_DICT\_KEY  
> ANSIBLE\_EDITOR  
> ANSIBLE\_ENABLE\_TASK\_DEBUGGER  
> ANSIBLE\_ERROR\_ON\_MISSING\_HANDLER  
> ANSIBLE\_ERROR\_ON\_UNDEFINED\_VARS  
> ANSIBLE\_EXECUTABLE  
> ANSIBLE\_FACT\_PATH  
> ANSIBLE\_FACTS\_MODULES  
> ANSIBLE\_FILTER\_PLUGINS  
> ANSIBLE\_FORCE\_COLOR  
> ANSIBLE\_FORCE\_HANDLERS  
> ANSIBLE\_FORKS  
> ANSIBLE\_GALAXY\_CACHE\_DIR  
> ANSIBLE\_GALAXY\_COLLECTION\_SKELETON  
> ANSIBLE\_GALAXY\_COLLECTION\_SKELETON\_IGNORE  
> ANSIBLE\_GALAXY\_DISABLE\_GPG\_VERIFY  
> ANSIBLE\_GALAXY\_DISPLAY\_PROGRESS  
> ANSIBLE\_GALAXY\_GPG\_KEYRING  
> ANSIBLE\_GALAXY\_IGNORE  
> ANSIBLE\_GALAXY\_IGNORE\_SIGNATURE\_STATUS\_CODES  
> ANSIBLE\_GALAXY\_REQUIRED\_VALID\_SIGNATURE\_COUNT  
> ANSIBLE\_GALAXY\_ROLE\_SKELETON  
> ANSIBLE\_GALAXY\_ROLE\_SKELETON\_IGNORE  
> ANSIBLE\_GALAXY\_SERVER  
> ANSIBLE\_GALAXY\_SERVER\_LIST  
> ANSIBLE\_GALAXY\_TOKEN\_PATH  
> ANSIBLE\_GATHERING  
> ANSIBLE\_GATHER\_SUBSET  
> ANSIBLE\_GATHER\_TIMEOUT  
> ANSIBLE\_HASH\_BEHAVIOUR  
> ANSIBLE\_HOME  
> ANSIBLE\_HOST\_KEY\_CHECKING  
> ANSIBLE\_HOST\_PATTERN\_MISMATCH  
> ANSIBLE\_HTTPAPI\_PLUGINS  
> ANSIBLE\_INJECT\_FACT\_VARS  
> ANSIBLE\_INVALID\_TASK\_ATTRIBUTE\_FAILED  
> ANSIBLE\_INVENTORY  
> ANSIBLE\_INVENTORY\_ANY\_UNPARSED\_IS\_FAILED  
> ANSIBLE\_INVENTORY\_CACHE  
> ANSIBLE\_INVENTORY\_CACHE\_CONNECTION  
> ANSIBLE\_INVENTORY\_CACHE\_PLUGIN  
> ANSIBLE\_INVENTORY\_CACHE\_PLUGIN\_PREFIX  
> ANSIBLE\_INVENTORY\_CACHE\_TIMEOUT  
> ANSIBLE\_INVENTORY\_ENABLED  
> ANSIBLE\_INVENTORY\_EXPORT  
> ANSIBLE\_INVENTORY\_IGNORE  
> ANSIBLE\_INVENTORY\_IGNORE\_REGEX  
> ANSIBLE\_INVENTORY\_PLUGINS  
> ANSIBLE\_INVENTORY\_UNPARSED\_FAILED  
> ANSIBLE\_INVENTORY\_UNPARSED\_WARNING  
> ANSIBLE\_JINJA2\_EXTENSIONS  
> ANSIBLE\_JINJA2\_NATIVE  
> ANSIBLE\_JINJA2\_NATIVE\_WARNING  
> ANSIBLE\_KEEP\_REMOTE\_FILES  
> ANSIBLE\_LIBRARY  
> ANSIBLE\_LIBVIRT\_LXC\_NOSECLABEL  
> ANSIBLE\_LOAD\_CALLBACK\_PLUGINS  
> ANSIBLE\_LOCALHOST\_WARNING  
> ANSIBLE\_LOCAL\_TEMP  
> ANSIBLE\_LOG\_FILTER  
> ANSIBLE\_LOG\_PATH  
> ANSIBLE\_LOOKUP\_PLUGINS  
> ANSIBLE\_MAX\_DIFF\_SIZE  
> ANSIBLE\_MODULE\_ARGS  
> ANSIBLE\_MODULE\_IGNORE\_EXTS  
> ANSIBLE\_MODULE\_STRICT\_UTF8\_RESPONSE  
> ANSIBLE\_MODULE\_UTILS  
> ANSIBLE\_NETCONF\_PLUGINS  
> ANSIBLE\_NETCONF\_SSH\_CONFIG  
> ANSIBLE\_NETWORK\_GROUP\_MODULES  
> ANSIBLE\_NOCOLOR  
> ANSIBLE\_NOCOWS  
> ANSIBLE\_NO\_LOG  
> ANSIBLE\_NO\_TARGET\_SYSLOG  
> ANSIBLE\_NULL\_REPRESENTATION  
> ANSIBLE\_OLD\_PLUGIN\_CACHE\_CLEAR  
> ANSIBLE\_PAGER  
> ANSIBLE\_PARAMIKO\_HOST\_KEY\_AUTO\_ADD  
> ANSIBLE\_PARAMIKO\_LOOK\_FOR\_KEYS  
> ANSIBLE\_PERSISTENT\_COMMAND\_TIMEOUT  
> ANSIBLE\_PERSISTENT\_CONNECT\_RETRY\_TIMEOUT  
> ANSIBLE\_PERSISTENT\_CONNECT\_TIMEOUT  
> ANSIBLE\_PERSISTENT\_CONTROL\_PATH\_DIR  
> ANSIBLE\_PIPELINING  
> ANSIBLE\_PLAYBOOK\_DIR  
> ANSIBLE\_PLAYBOOK\_VARS\_ROOT  
> ANSIBLE\_POLL\_INTERVAL  
> ANSIBLE\_PRECEDENCE  
> ANSIBLE\_PRIVATE\_KEY\_FILE  
> ANSIBLE\_PRIVATE\_ROLE\_VARS  
> ANSIBLE\_PYTHON\_INTERPRETER  
> ANSIBLE\_PYTHON\_MODULE\_RLIMIT\_NOFILE  
> ANSIBLE\_REMOTE\_PORT  
> ANSIBLE\_REMOTE\_USER  
> ANSIBLE\_RETRY\_FILES\_ENABLED  
> ANSIBLE\_RETRY\_FILES\_SAVE\_PATH  
> ANSIBLE\_ROLES\_PATH  
> ANSIBLE\_RUN\_TAGS  
> ANSIBLE\_RUN\_VARS\_PLUGINS  
> ANSIBLE\_SELINUX\_SPECIAL\_FS  
> ANSIBLE\_SHOW\_CUSTOM\_STATS  
> ANSIBLE\_SKIP\_TAGS  
> ANSIBLE\_STDOUT\_CALLBACK  
> ANSIBLE\_STRATEGY  
> ANSIBLE\_STRATEGY\_PLUGINS  
> ANSIBLE\_STRING\_CONVERSION\_ACTION  
> ANSIBLE\_STRING\_TYPE\_FILTERS  
> ANSIBLE\_SU  
> ANSIBLE\_SYSLOG\_FACILITY  
> ANSIBLE\_SYSTEM\_WARNINGS  
> ANSIBLE\_TASK\_DEBUGGER\_IGNORE\_ERRORS  
> ANSIBLE\_TASK\_TIMEOUT  
> ANSIBLE\_TERMINAL\_PLUGINS  
> ANSIBLE\_TEST\_PLUGINS  
> ANSIBLE\_TIMEOUT  
> ANSIBLE\_TRANSFORM\_INVALID\_GROUP\_CHARS  
> ANSIBLE\_TRANSPORT  
> ANSIBLE\_USE\_PERSISTENT\_CONNECTIONS  
> ANSIBLE\_VALIDATE\_ACTION\_GROUP\_METADATA  
> ANSIBLE\_VARS\_ENABLED  
> ANSIBLE\_VARS\_PLUGINS  
> ANSIBLE\_VAULT\_ENCRYPT\_IDENTITY  
> ANSIBLE\_VAULT\_ENCRYPT\_SALT  
> ANSIBLE\_VAULT\_IDENTITY  
> ANSIBLE\_VAULT\_IDENTITY\_LIST  
> ANSIBLE\_VAULT\_ID\_MATCH  
> ANSIBLE\_VAULT\_PASSWORD\_FILE  
> ANSIBLE\_VERBOSE\_TO\_STDERR  
> ANSIBLE\_VERBOSITY  
> ANSIBLE\_WIN\_ASYNC\_STARTUP\_TIMEOUT  
> ANSIBLE\_WORKER\_SHUTDOWN\_POLL\_COUNT  
> ANSIBLE\_WORKER\_SHUTDOWN\_POLL\_DELAY  
> ANSIBLE\_YAML\_FILENAME\_EXT  
> EDITOR  
> NO\_COLOR  
> PAGER

---

<div class="post-metadata">

**Author:** ![bcoca](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/bcoca/32/9269_2.png) [@bcoca](https://forum.ansible.com/u/bcoca)\
**Post date:** [May 21, 2024, 4:43pm UTC](https://forum.ansible.com/t/environment-variables-prefix-with-ansible-and-awx/5737/24 "2024-05-21T16:43:46Z")

</div>

2 notes:

- `NO_COLOR `is a ‘standard’ variable for those that need screen readers, its alias to `ANSIBLE_NOCOLOR` and would be generally outside the `ANSIBLE_` restriction.
- `_ANSIBLE_` prefix also exists, these are variables used internally for testing config. We also have` _ansible_` vars that are also exclusively internal to core and should not be in use by any plugins (though modules can/should read them when received, `AnsibleModule` does this by default).

---

<div class="post-metadata">

**Author:** ![Denney-tech](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/denney-tech/32/1556_2.png) [@Denney-tech](https://forum.ansible.com/u/Denney-tech)\
**Post date:** [May 21, 2024, 4:48pm UTC](https://forum.ansible.com/t/environment-variables-prefix-with-ansible-and-awx/5737/25 "2024-05-21T16:48:20Z")

</div>

This might be a good time for [@AWX](https://forum.ansible.com/groups/awx) to chime in.

---

<div class="post-metadata">

**Author:** ![bcoca](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/bcoca/32/9269_2.png) [@bcoca](https://forum.ansible.com/u/bcoca)\
**Post date:** [May 21, 2024, 4:55pm UTC](https://forum.ansible.com/t/environment-variables-prefix-with-ansible-and-awx/5737/26 "2024-05-21T16:55:52Z")

</div>

they did already, check above

---

<div class="post-metadata">

**Author:** ![Denney-tech](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/denney-tech/32/1556_2.png) [@Denney-tech](https://forum.ansible.com/u/Denney-tech)\
**Post date:** [May 21, 2024, 7:00pm UTC](https://forum.ansible.com/t/environment-variables-prefix-with-ansible-and-awx/5737/27 "2024-05-21T19:00:08Z")

</div>

I meant it would be nice if they could comment specifically in regard to populating a blacklist of `ANSIBLE_` environment variables to validate custom credential types against, rather than the `ANSIBLE_` prefix itself. And whether or not this would need to be a static list or if it can be generated programmatically from ansible-config on the fly from a control\_node’s EE (considering the `awx` image itself doesn’t have `ansible` installed as far as I’m aware).

---

<div class="post-metadata">

**Author:** ![Denney-tech](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/denney-tech/32/1556_2.png) [@Denney-tech](https://forum.ansible.com/u/Denney-tech)\
**Post date:** [May 21, 2024, 8:15pm UTC](https://forum.ansible.com/t/environment-variables-prefix-with-ansible-and-awx/5737/28 "2024-05-21T20:15:59Z")

</div>

Turns out our mirror wasn’t stale, I just didn’t realize that python3.9 support was dropped in ansible-core\>=2.16.

Here’s the environment vars from 2.17, and there doesn’t appear to be any “alternate” values as there were in 2.14. Used the same powershell snippet from above.

196 vars

> **ENV\_VARS**
>
> ANSIBLE\_ACTION\_PLUGINS  
> ANSIBLE\_ACTION\_WARNINGS  
> ANSIBLE\_AGNOSTIC\_BECOME\_PROMPT  
> ANSIBLE\_ANY\_ERRORS\_FATAL  
> ANSIBLE\_ASK\_PASS  
> ANSIBLE\_ASK\_VAULT\_PASS  
> ANSIBLE\_BECOME  
> ANSIBLE\_BECOME\_ALLOW\_SAME\_USER  
> ANSIBLE\_BECOME\_ASK\_PASS  
> ANSIBLE\_BECOME\_EXE  
> ANSIBLE\_BECOME\_FLAGS  
> ANSIBLE\_BECOME\_METHOD  
> ANSIBLE\_BECOME\_PASSWORD\_FILE  
> ANSIBLE\_BECOME\_PLUGINS  
> ANSIBLE\_BECOME\_USER  
> ANSIBLE\_CACHE\_PLUGIN  
> ANSIBLE\_CACHE\_PLUGIN\_CONNECTION  
> ANSIBLE\_CACHE\_PLUGIN\_PREFIX  
> ANSIBLE\_CACHE\_PLUGINS  
> ANSIBLE\_CACHE\_PLUGIN\_TIMEOUT  
> ANSIBLE\_CALLBACK\_PLUGINS  
> ANSIBLE\_CALLBACKS\_ENABLED  
> ANSIBLE\_CLICONF\_PLUGINS  
> ANSIBLE\_COLLECTIONS\_ON\_ANSIBLE\_VERSION\_MISMATCH  
> ANSIBLE\_COLLECTIONS\_PATH  
> ANSIBLE\_COLLECTIONS\_PATHS  
> ANSIBLE\_COLLECTIONS\_SCAN\_SYS\_PATH  
> ANSIBLE\_COLOR\_CHANGED  
> ANSIBLE\_COLOR\_CONSOLE\_PROMPT  
> ANSIBLE\_COLOR\_DEBUG  
> ANSIBLE\_COLOR\_DEPRECATE  
> ANSIBLE\_COLOR\_DIFF\_ADD  
> ANSIBLE\_COLOR\_DIFF\_LINES  
> ANSIBLE\_COLOR\_DIFF\_REMOVE  
> ANSIBLE\_COLOR\_ERROR  
> ANSIBLE\_COLOR\_HIGHLIGHT  
> ANSIBLE\_COLOR\_OK  
> ANSIBLE\_COLOR\_SKIP  
> ANSIBLE\_COLOR\_UNREACHABLE  
> ANSIBLE\_COLOR\_VERBOSE  
> ANSIBLE\_COLOR\_WARN  
> ANSIBLE\_CONNECTION\_PASSWORD\_FILE  
> ANSIBLE\_CONNECTION\_PATH  
> ANSIBLE\_CONNECTION\_PLUGINS  
> \_ANSIBLE\_COVERAGE\_REMOTE\_OUTPUT  
> \_ANSIBLE\_COVERAGE\_REMOTE\_PATH\_FILTER  
> ANSIBLE\_COW\_ACCEPTLIST  
> ANSIBLE\_COW\_PATH  
> ANSIBLE\_COW\_SELECTION  
> ANSIBLE\_DEBUG  
> ANSIBLE\_DEPRECATION\_WARNINGS  
> ANSIBLE\_DEVEL\_WARNING  
> ANSIBLE\_DIFF\_ALWAYS  
> ANSIBLE\_DIFF\_CONTEXT  
> ANSIBLE\_DISPLAY\_ARGS\_TO\_STDOUT  
> ANSIBLE\_DISPLAY\_SKIPPED\_HOSTS  
> ANSIBLE\_DOC\_FRAGMENT\_PLUGINS  
> ANSIBLE\_DUPLICATE\_YAML\_DICT\_KEY  
> ANSIBLE\_EDITOR  
> ANSIBLE\_ENABLE\_TASK\_DEBUGGER  
> ANSIBLE\_ERROR\_ON\_MISSING\_HANDLER  
> ANSIBLE\_ERROR\_ON\_UNDEFINED\_VARS  
> ANSIBLE\_EXECUTABLE  
> ANSIBLE\_FACT\_PATH  
> ANSIBLE\_FACTS\_MODULES  
> ANSIBLE\_FILTER\_PLUGINS  
> ANSIBLE\_FORCE\_COLOR  
> ANSIBLE\_FORCE\_HANDLERS  
> ANSIBLE\_FORKS  
> ANSIBLE\_GALAXY\_CACHE\_DIR  
> ANSIBLE\_GALAXY\_COLLECTION\_SKELETON  
> ANSIBLE\_GALAXY\_COLLECTION\_SKELETON\_IGNORE  
> ANSIBLE\_GALAXY\_COLLECTIONS\_PATH\_WARNING  
> ANSIBLE\_GALAXY\_DISABLE\_GPG\_VERIFY  
> ANSIBLE\_GALAXY\_DISPLAY\_PROGRESS  
> ANSIBLE\_GALAXY\_GPG\_KEYRING  
> ANSIBLE\_GALAXY\_IGNORE  
> ANSIBLE\_GALAXY\_IGNORE\_SIGNATURE\_STATUS\_CODES  
> ANSIBLE\_GALAXY\_REQUIRED\_VALID\_SIGNATURE\_COUNT  
> ANSIBLE\_GALAXY\_ROLE\_SKELETON  
> ANSIBLE\_GALAXY\_ROLE\_SKELETON\_IGNORE  
> ANSIBLE\_GALAXY\_SERVER  
> ANSIBLE\_GALAXY\_SERVER\_LIST  
> ANSIBLE\_GALAXY\_SERVER\_TIMEOUT  
> ANSIBLE\_GALAXY\_TOKEN\_PATH  
> ANSIBLE\_GATHERING  
> ANSIBLE\_GATHER\_SUBSET  
> ANSIBLE\_GATHER\_TIMEOUT  
> ANSIBLE\_HASH\_BEHAVIOUR  
> ANSIBLE\_HOME  
> ANSIBLE\_HOST\_KEY\_CHECKING  
> ANSIBLE\_HOST\_PATTERN\_MISMATCH  
> ANSIBLE\_HTTPAPI\_PLUGINS  
> ANSIBLE\_INJECT\_FACT\_VARS  
> ANSIBLE\_INVALID\_TASK\_ATTRIBUTE\_FAILED  
> ANSIBLE\_INVENTORY  
> ANSIBLE\_INVENTORY\_ANY\_UNPARSED\_IS\_FAILED  
> ANSIBLE\_INVENTORY\_CACHE  
> ANSIBLE\_INVENTORY\_CACHE\_CONNECTION  
> ANSIBLE\_INVENTORY\_CACHE\_PLUGIN  
> ANSIBLE\_INVENTORY\_CACHE\_PLUGIN\_PREFIX  
> ANSIBLE\_INVENTORY\_CACHE\_TIMEOUT  
> ANSIBLE\_INVENTORY\_ENABLED  
> ANSIBLE\_INVENTORY\_EXPORT  
> ANSIBLE\_INVENTORY\_IGNORE  
> ANSIBLE\_INVENTORY\_IGNORE\_REGEX  
> ANSIBLE\_INVENTORY\_PLUGINS  
> ANSIBLE\_INVENTORY\_UNPARSED\_FAILED  
> ANSIBLE\_INVENTORY\_UNPARSED\_WARNING  
> ANSIBLE\_JINJA2\_EXTENSIONS  
> ANSIBLE\_JINJA2\_NATIVE  
> ANSIBLE\_KEEP\_REMOTE\_FILES  
> ANSIBLE\_LIBRARY  
> ANSIBLE\_LIBVIRT\_LXC\_NOSECLABEL  
> ANSIBLE\_LOAD\_CALLBACK\_PLUGINS  
> ANSIBLE\_LOCALHOST\_WARNING  
> ANSIBLE\_LOCAL\_TEMP  
> ANSIBLE\_LOG\_FILTER  
> ANSIBLE\_LOG\_PATH  
> ANSIBLE\_LOG\_VERBOSITY  
> ANSIBLE\_LOOKUP\_PLUGINS  
> ANSIBLE\_MAX\_DIFF\_SIZE  
> ANSIBLE\_MODULE\_ARGS  
> ANSIBLE\_MODULE\_IGNORE\_EXTS  
> ANSIBLE\_MODULE\_STRICT\_UTF8\_RESPONSE  
> ANSIBLE\_MODULE\_UTILS  
> ANSIBLE\_NETCONF\_PLUGINS  
> ANSIBLE\_NETCONF\_SSH\_CONFIG  
> ANSIBLE\_NETWORK\_GROUP\_MODULES  
> ANSIBLE\_NOCOLOR  
> ANSIBLE\_NOCOWS  
> ANSIBLE\_NO\_LOG  
> ANSIBLE\_NO\_TARGET\_SYSLOG  
> ANSIBLE\_NULL\_REPRESENTATION  
> ANSIBLE\_OLD\_PLUGIN\_CACHE\_CLEAR  
> ANSIBLE\_PAGER  
> ANSIBLE\_PARAMIKO\_HOST\_KEY\_AUTO\_ADD  
> ANSIBLE\_PARAMIKO\_LOOK\_FOR\_KEYS  
> ANSIBLE\_PERSISTENT\_COMMAND\_TIMEOUT  
> ANSIBLE\_PERSISTENT\_CONNECT\_RETRY\_TIMEOUT  
> ANSIBLE\_PERSISTENT\_CONNECT\_TIMEOUT  
> ANSIBLE\_PERSISTENT\_CONTROL\_PATH\_DIR  
> ANSIBLE\_PIPELINING  
> ANSIBLE\_PLAYBOOK\_DIR  
> ANSIBLE\_PLAYBOOK\_VARS\_ROOT  
> ANSIBLE\_POLL\_INTERVAL  
> ANSIBLE\_PRECEDENCE  
> ANSIBLE\_PRIVATE\_KEY\_FILE  
> ANSIBLE\_PRIVATE\_ROLE\_VARS  
> ANSIBLE\_PYTHON\_INTERPRETER  
> ANSIBLE\_PYTHON\_MODULE\_RLIMIT\_NOFILE  
> ANSIBLE\_REMOTE\_PORT  
> ANSIBLE\_REMOTE\_USER  
> ANSIBLE\_RETRY\_FILES\_ENABLED  
> ANSIBLE\_RETRY\_FILES\_SAVE\_PATH  
> ANSIBLE\_ROLES\_PATH  
> ANSIBLE\_RUN\_TAGS  
> ANSIBLE\_RUN\_VARS\_PLUGINS  
> ANSIBLE\_SELINUX\_SPECIAL\_FS  
> ANSIBLE\_SHOW\_CUSTOM\_STATS  
> ANSIBLE\_SKIP\_TAGS  
> ANSIBLE\_STDOUT\_CALLBACK  
> ANSIBLE\_STRATEGY  
> ANSIBLE\_STRATEGY\_PLUGINS  
> ANSIBLE\_STRING\_CONVERSION\_ACTION  
> ANSIBLE\_STRING\_TYPE\_FILTERS  
> ANSIBLE\_SU  
> ANSIBLE\_SYSLOG\_FACILITY  
> ANSIBLE\_SYSTEM\_WARNINGS  
> ANSIBLE\_TARGET\_LOG\_INFO  
> ANSIBLE\_TASK\_DEBUGGER\_IGNORE\_ERRORS  
> ANSIBLE\_TASK\_TIMEOUT  
> ANSIBLE\_TERMINAL\_PLUGINS  
> ANSIBLE\_TEST\_PLUGINS  
> ANSIBLE\_TIMEOUT  
> ANSIBLE\_TRANSFORM\_INVALID\_GROUP\_CHARS  
> ANSIBLE\_TRANSPORT  
> ANSIBLE\_USE\_PERSISTENT\_CONNECTIONS  
> ANSIBLE\_VALIDATE\_ACTION\_GROUP\_METADATA  
> ANSIBLE\_VARS\_ENABLED  
> ANSIBLE\_VARS\_PLUGINS  
> ANSIBLE\_VAULT\_ENCRYPT\_IDENTITY  
> ANSIBLE\_VAULT\_ENCRYPT\_SALT  
> ANSIBLE\_VAULT\_IDENTITY  
> ANSIBLE\_VAULT\_IDENTITY\_LIST  
> ANSIBLE\_VAULT\_ID\_MATCH  
> ANSIBLE\_VAULT\_PASSWORD\_FILE  
> ANSIBLE\_VERBOSE\_TO\_STDERR  
> ANSIBLE\_VERBOSITY  
> ANSIBLE\_WIN\_ASYNC\_STARTUP\_TIMEOUT  
> ANSIBLE\_WORKER\_SHUTDOWN\_POLL\_COUNT  
> ANSIBLE\_WORKER\_SHUTDOWN\_POLL\_DELAY  
> ANSIBLE\_YAML\_FILENAME\_EXT  
> EDITOR  
> NO\_COLOR  
> PAGER

---

<div class="post-metadata">

**Author:** ![felixfontein](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/felixfontein/32/7530_2.png) [@felixfontein](https://forum.ansible.com/u/felixfontein)\
**Post date:** [September 25, 2024, 3:40pm UTC](https://forum.ansible.com/t/environment-variables-prefix-with-ansible-and-awx/5737/29 "2024-09-25T15:40:33Z")

</div>

I’m still looking forward for [@AWX](https://forum.ansible.com/groups/awx) taking part in this discussion.

---

<div class="post-metadata">

**Author:** ![Denney-tech](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/denney-tech/32/1556_2.png) [@Denney-tech](https://forum.ansible.com/u/Denney-tech)\
**Post date:** [September 25, 2024, 3:47pm UTC](https://forum.ansible.com/t/environment-variables-prefix-with-ansible-and-awx/5737/30 "2024-09-25T15:47:42Z")

</div>

I have a funny feeling that the new credential plugin architecture won’t have this issue. Even if it still does this for “custom credential types” in the UI, you could just go create a named plugin instead. How we go about adding 3rd party plugins is another matter. It may need to be added to the official credential plugins repo until some other installable method becomes available.

---

<div class="post-metadata">

**Author:** ![felixfontein](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/felixfontein/32/7530_2.png) [@felixfontein](https://forum.ansible.com/u/felixfontein)\
**Post date:** [September 5, 2026, 9:49am UTC](https://forum.ansible.com/t/environment-variables-prefix-with-ansible-and-awx/5737/31 "2026-09-05T09:49:06Z")

</div>

While this thread has several ideas of how to improve the situation, there has never been any feedback from the AWX team. I’m really not sure how to continue, except maybe suggesting users to stop using AWX if they encounter this problem.

Is it possible to make _any_ progress here, or is this a lost cause?

(And I really should have included this in my CfgMgmtCamp list, I guess I forgot since there was no activity for years, while the underlying problem is still there and **hurting users**.)

---

<div class="post-metadata">

**Author:** ![russoz](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/russoz/32/127_2.png) [@russoz](https://forum.ansible.com/u/russoz)\
**Post date:** [September 5, 2026, 10:39am UTC](https://forum.ansible.com/t/environment-variables-prefix-with-ansible-and-awx/5737/32 "2026-09-05T10:39:05Z")

</div>

There are modules for which the underlying backend, be it a CLI command or a Python library, has its own env vars. Some modules use those vars as fallback to parameters and it really makes sense, since they are using the same vars and content that the would be used otherwise. It makes no sense IMHO to force these modules to prefix all their vars with `ANSIBLE_` across _all collections_ in the fold.

I much prefer the approach taken by Molecule, in which the docs (last I read and not lazily checking now) state that env vars named `MOLECULE_xxx` are reserved for Molecule itself and should not be used by anyone else.

If, and that’s a very humongous _if_, we _really_ want to force a prefix on the vars, my suggestion would be for: each collection should take their pick. The only thing we can do is enforce this at the collections’ CI, ensuring the consistency within that domain. Even then, we might want to have exception cases.

---

<div class="post-metadata">

**Author:** ![felixfontein](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/felixfontein/32/7530_2.png) [@felixfontein](https://forum.ansible.com/u/felixfontein)\
**Post date:** [September 5, 2026, 10:54am UTC](https://forum.ansible.com/t/environment-variables-prefix-with-ansible-and-awx/5737/33 "2026-09-05T10:54:16Z")

</div>

> [@russoz](#):
>
> There are modules for which the underlying backend, be it a CLI command or a Python library, has its own env vars. Some modules use those vars as fallback to parameters and it really makes sense, since they are using the same vars and content that the would be used otherwise. It makes no sense IMHO to force these modules to prefix all their vars with `ANSIBLE_` across _all collections_ in the fold.

These modules were never required to ues the `ANSIBLE_` prefix, and I don’t think anyone is suggesting that they should use it.

> [@russoz](#):
>
> If, and that’s a very humongous _if_, we _really_ want to force a prefix on the vars, my suggestion would be for: each collection should take their pick. The only thing we can do is enforce this at the collections’ CI, ensuring the consistency within that domain. Even then, we might want to have exception cases.

I think there should be at least a guideline for how these should look like. And they really should start with `ANSIBLE_` IMO, since they are about configuring **Ansible** collections, and **Ansible** roles and **Ansible** playbooks using these, and not random other software that has nothing to do with Ansible.

---

<div class="post-metadata">

**Author:** ![russoz](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/russoz/32/127_2.png) [@russoz](https://forum.ansible.com/u/russoz)\
**Post date:** [September 6, 2026, 12:10am UTC](https://forum.ansible.com/t/environment-variables-prefix-with-ansible-and-awx/5737/34 "2026-09-06T00:10:48Z")

</div>

> [@felixfontein](#):
>
> it was decided project wide in 2019 that **all** environment variables defined by plugins or modules for configuration should use the prefix `ANSIBLE_`.

> [@felixfontein](#):
>
> These modules were never required to ues the `ANSIBLE_` prefix, and I don’t think anyone is suggesting that they should use it.

Unless there is a hidden qualifier somewhere, one of these statements seems to be incorrect.

---

<div class="post-metadata">

**Author:** ![russoz](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/russoz/32/127_2.png) [@russoz](https://forum.ansible.com/u/russoz)\
**Post date:** [September 6, 2026, 12:41am UTC](https://forum.ansible.com/t/environment-variables-prefix-with-ansible-and-awx/5737/35 "2026-09-06T00:41:30Z")

</div>

> [@felixfontein](#):
>
> I think there should be at least a guideline for how these should look like. And they really should start with `ANSIBLE_` IMO, since they are about configuring **Ansible** collections, and **Ansible** roles and **Ansible** playbooks using these, and not random other software that has nothing to do with Ansible.

Well, IMO there is a philosophical conundrum here: whilst we may choose to see things from that perspective you present, I would argue that most of them are not _about Ansible_ but rather they are _about the thing we are using Ansible to configure_. Ansible is (mostly) a means to an end, not the end itself.

Moreover, there is this old principle from Software Engineering where we should group things by their functional cohesion, and though naming vars is not exactly the same thing, with some indulgence that principle could be used here. For full disclosure, I cheated with the LLM to remember its name and logic : [https://share.gemini.google/GpvkEO8LaE5n](https://share.gemini.google/GpvkEO8LaE5n)  
(And I do break that principle sometimes, because it is very easy to group by logical cohesion, so it takes some self-policing to abide by it).

My $0.02

---

<div class="post-metadata">

**Author:** ![bcoca](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/bcoca/32/9269_2.png) [@bcoca](https://forum.ansible.com/u/bcoca)\
**Post date:** [September 6, 2026, 1:34am UTC](https://forum.ansible.com/t/environment-variables-prefix-with-ansible-and-awx/5737/36 "2026-09-06T01:34:24Z")

</div>

Both statements about the `ANSiBLE_` prefix are not in conflict, the first is about core authored plugins/modules, which are not going to have 3rd party libraries or APIs, and then a subsequent related decision in the AWX project.

The second statement is about restrictions to the modules/plugins in general. If this had been made a requirement, it would have been enforced in the code, if not the runtime (ConfigManager), at least in the validation (validate-modules), as it is done for many other requirements.

---

<div class="post-metadata">

**Author:** ![felixfontein](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/felixfontein/32/7530_2.png) [@felixfontein](https://forum.ansible.com/u/felixfontein)\
**Post date:** [September 6, 2026, 5:50am UTC](https://forum.ansible.com/t/environment-variables-prefix-with-ansible-and-awx/5737/37 "2026-09-06T05:50:27Z")

</div>

> [@russoz](#):
>
> > [@felixfontein](#):
> >
> > it was decided project wide in 2019 that **all** environment variables defined by plugins or modules for configuration should use the prefix `ANSIBLE_`.
> 
> > [@felixfontein](#):
> >
> > These modules were never required to ues the `ANSIBLE_` prefix, and I don’t think anyone is suggesting that they should use it.
> 
> Unless there is a hidden qualifier somewhere, one of these statements seems to be incorrect.

I don’t see a problem here. All environment variables defined by plugins or modules should use the `ANSIBLE_` prefix, unless there are common environment variables for the ecosystem these plugins/modules are about that the modules/plugins are using in the same way than other members of the ecosystem. This is how I understand [the discussion from back then](https://meetbot.fedoraproject.org/ansible-meeting/2019-02-26/ansible_core_irc_public_meeting.2019-02-26-19.02.log.html#l-121), and [the excerpt in the issue the discussion was about](https://github.com/ansible/ansible/issues/52967#issuecomment-467588878).

Since back then, _all_ development happened inside ansible/ansible and thus inside the `ansible` package, I can see that some people interpret the discussion and the excerpt differently by focussing on ansible-core, but I don’t think my interpretation (and it wasn’t only mine) is any less valid than the other interpretation.

Edit: if you look at the implementation PR for that issue, you can also see that it deprecated `LIBVIRT_LXC_NOSECLABEL` and added `ANSIBLE_LIBVIRT_LXC_NOSECLABEL` as a replacement. That configuration was used by the `libvirt_lxc` connection plugin, which is part of the `community.libvirt` collection ([community.libvirt/plugins/connection/libvirt\_lxc.py at main · ansible-collections/community.libvirt · GitHub](https://github.com/ansible-collections/community.libvirt/blob/main/plugins/connection/libvirt_lxc.py#L38)). (The `version_added` in the plugin is misleading, before version 1.4.0 of the collection it was [accessing the global ansible-core config `DEFAULT_LIBVIRT_LXC_NOSECLABEL`](https://github.com/ansible-collections/community.libvirt/blob/d065e52ca78cb37ccbda8463ab84f3c682f06643/plugins/connection/libvirt_lxc.py#L93).)

[Previous page](https://forum.ansible.com/t/environment-variables-prefix-with-ansible-and-awx/5737.md?page=1)
