1# Copyright (c) 2017 Ansible Project
2# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
3---
4ALLOW_WORLD_READABLE_TMPFILES:
5  name: Allow world-readable temporary files
6  description:
7    - This setting has been moved to the individual shell plugins as a plugin option :ref:`shell_plugins`.
8    - The existing configuration settings are still accepted with the shell plugin adding additional options, like variables.
9    - This message will be removed in 2.14.
10  type: boolean
11  default: False
12  deprecated:  # (kept for autodetection and removal, deprecation is irrelevant since w/o settings this can never show runtime msg)
13      why: moved to shell plugins
14      version: "2.14"
15      alternatives: 'world_readable_tmp'
16ANSIBLE_CONNECTION_PATH:
17  name: Path of ansible-connection script
18  default: null
19  description:
20    - Specify where to look for the ansible-connection script. This location will be checked before searching $PATH.
21    - If null, ansible will start with the same directory as the ansible script.
22  type: path
23  env: [{name: ANSIBLE_CONNECTION_PATH}]
24  ini:
25  - {key: ansible_connection_path, section: persistent_connection}
26  yaml: {key: persistent_connection.ansible_connection_path}
27  version_added: "2.8"
28ANSIBLE_COW_SELECTION:
29  name: Cowsay filter selection
30  default: default
31  description: This allows you to chose a specific cowsay stencil for the banners or use 'random' to cycle through them.
32  env: [{name: ANSIBLE_COW_SELECTION}]
33  ini:
34  - {key: cow_selection, section: defaults}
35ANSIBLE_COW_ACCEPTLIST:
36  name: Cowsay filter acceptance list
37  default: ['bud-frogs', 'bunny', 'cheese', 'daemon', 'default', 'dragon', 'elephant-in-snake', 'elephant', 'eyes', 'hellokitty', 'kitty', 'luke-koala', 'meow', 'milk', 'moofasa', 'moose', 'ren', 'sheep', 'small', 'stegosaurus', 'stimpy', 'supermilker', 'three-eyes', 'turkey', 'turtle', 'tux', 'udder', 'vader-koala', 'vader', 'www']
38  description: White list of cowsay templates that are 'safe' to use, set to empty list if you want to enable all installed templates.
39  env:
40  - name: ANSIBLE_COW_WHITELIST
41    deprecated:
42      why: normalizing names to new standard
43      version: "2.15"
44      alternatives: 'ANSIBLE_COW_ACCEPTLIST'
45  - name: ANSIBLE_COW_ACCEPTLIST
46    version_added: '2.11'
47  ini:
48  - key: cow_whitelist
49    section: defaults
50    deprecated:
51      why: normalizing names to new standard
52      version: "2.15"
53      alternatives: 'cowsay_enabled_stencils'
54  - key: cowsay_enabled_stencils
55    section: defaults
56    version_added: '2.11'
57  type: list
58ANSIBLE_FORCE_COLOR:
59  name: Force color output
60  default: False
61  description: This option forces color mode even when running without a TTY or the "nocolor" setting is True.
62  env: [{name: ANSIBLE_FORCE_COLOR}]
63  ini:
64  - {key: force_color, section: defaults}
65  type: boolean
66  yaml: {key: display.force_color}
67ANSIBLE_NOCOLOR:
68  name: Suppress color output
69  default: False
70  description: This setting allows suppressing colorizing output, which is used to give a better indication of failure and status information.
71  env:
72    - name: ANSIBLE_NOCOLOR
73      # this is generic convention for CLI programs
74    - name: NO_COLOR
75      version_added: '2.11'
76  ini:
77  - {key: nocolor, section: defaults}
78  type: boolean
79  yaml: {key: display.nocolor}
80ANSIBLE_NOCOWS:
81  name: Suppress cowsay output
82  default: False
83  description: If you have cowsay installed but want to avoid the 'cows' (why????), use this.
84  env: [{name: ANSIBLE_NOCOWS}]
85  ini:
86  - {key: nocows, section: defaults}
87  type: boolean
88  yaml: {key: display.i_am_no_fun}
89ANSIBLE_COW_PATH:
90  name: Set path to cowsay command
91  default: null
92  description: Specify a custom cowsay path or swap in your cowsay implementation of choice
93  env: [{name: ANSIBLE_COW_PATH}]
94  ini:
95  - {key: cowpath, section: defaults}
96  type: string
97  yaml: {key: display.cowpath}
98ANSIBLE_PIPELINING:
99  name: Connection pipelining
100  default: False
101  description:
102    - Pipelining, if supported by the connection plugin, reduces the number of network operations required to execute a module on the remote server,
103      by executing many Ansible modules without actual file transfer.
104    - This can result in a very significant performance improvement when enabled.
105    - "However this conflicts with privilege escalation (become). For example, when using 'sudo:' operations you must first
106      disable 'requiretty' in /etc/sudoers on all managed hosts, which is why it is disabled by default."
107    - This option is disabled if ``ANSIBLE_KEEP_REMOTE_FILES`` is enabled.
108    - This is a global option, each connection plugin can override either by having more specific options or not supporting pipelining at all.
109  env:
110    - name: ANSIBLE_PIPELINING
111  ini:
112  - section: defaults
113    key: pipelining
114  - section: connection
115    key: pipelining
116  type: boolean
117ANY_ERRORS_FATAL:
118  name: Make Task failures fatal
119  default: False
120  description: Sets the default value for the any_errors_fatal keyword, if True, Task failures will be considered fatal errors.
121  env:
122    - name: ANSIBLE_ANY_ERRORS_FATAL
123  ini:
124    - section:  defaults
125      key: any_errors_fatal
126  type: boolean
127  yaml: {key: errors.any_task_errors_fatal}
128  version_added: "2.4"
129BECOME_ALLOW_SAME_USER:
130  name: Allow becoming the same user
131  default: False
132  description: This setting controls if become is skipped when remote user and become user are the same. I.E root sudo to root.
133  env: [{name: ANSIBLE_BECOME_ALLOW_SAME_USER}]
134  ini:
135  - {key: become_allow_same_user, section: privilege_escalation}
136  type: boolean
137  yaml: {key: privilege_escalation.become_allow_same_user}
138AGNOSTIC_BECOME_PROMPT:
139  name: Display an agnostic become prompt
140  default: True
141  type: boolean
142  description: Display an agnostic become prompt instead of displaying a prompt containing the command line supplied become method
143  env: [{name: ANSIBLE_AGNOSTIC_BECOME_PROMPT}]
144  ini:
145    - {key: agnostic_become_prompt, section: privilege_escalation}
146  yaml: {key: privilege_escalation.agnostic_become_prompt}
147  version_added: "2.5"
148CACHE_PLUGIN:
149  name: Persistent Cache plugin
150  default: memory
151  description: Chooses which cache plugin to use, the default 'memory' is ephemeral.
152  env: [{name: ANSIBLE_CACHE_PLUGIN}]
153  ini:
154  - {key: fact_caching, section: defaults}
155  yaml: {key: facts.cache.plugin}
156CACHE_PLUGIN_CONNECTION:
157  name: Cache Plugin URI
158  default: ~
159  description: Defines connection or path information for the cache plugin
160  env: [{name: ANSIBLE_CACHE_PLUGIN_CONNECTION}]
161  ini:
162  - {key: fact_caching_connection, section: defaults}
163  yaml: {key: facts.cache.uri}
164CACHE_PLUGIN_PREFIX:
165  name: Cache Plugin table prefix
166  default: ansible_facts
167  description: Prefix to use for cache plugin files/tables
168  env: [{name: ANSIBLE_CACHE_PLUGIN_PREFIX}]
169  ini:
170  - {key: fact_caching_prefix, section: defaults}
171  yaml: {key: facts.cache.prefix}
172CACHE_PLUGIN_TIMEOUT:
173  name: Cache Plugin expiration timeout
174  default: 86400
175  description: Expiration timeout for the cache plugin data
176  env: [{name: ANSIBLE_CACHE_PLUGIN_TIMEOUT}]
177  ini:
178  - {key: fact_caching_timeout, section: defaults}
179  type: integer
180  yaml: {key: facts.cache.timeout}
181COLLECTIONS_SCAN_SYS_PATH:
182  name: Scan PYTHONPATH for installed collections
183  description: A boolean to enable or disable scanning the sys.path for installed collections
184  default: true
185  type: boolean
186  env:
187  - {name: ANSIBLE_COLLECTIONS_SCAN_SYS_PATH}
188  ini:
189  - {key: collections_scan_sys_path, section: defaults}
190COLLECTIONS_PATHS:
191  name: ordered list of root paths for loading installed Ansible collections content
192  description: >
193    Colon separated paths in which Ansible will search for collections content.
194    Collections must be in nested *subdirectories*, not directly in these directories.
195    For example, if ``COLLECTIONS_PATHS`` includes ``~/.ansible/collections``,
196    and you want to add ``my.collection`` to that directory, it must be saved as
197    ``~/.ansible/collections/ansible_collections/my/collection``.
198  default: ~/.ansible/collections:/usr/local/share/py38-ansible/collections
199  type: pathspec
200  env:
201  - name: ANSIBLE_COLLECTIONS_PATHS  # TODO: Deprecate this and ini once PATH has been in a few releases.
202  - name: ANSIBLE_COLLECTIONS_PATH
203    version_added: '2.10'
204  ini:
205  - key: collections_paths
206    section: defaults
207  - key: collections_path
208    section: defaults
209    version_added: '2.10'
210COLLECTIONS_ON_ANSIBLE_VERSION_MISMATCH:
211  name: Defines behavior when loading a collection that does not support the current Ansible version
212  description:
213  - When a collection is loaded that does not support the running Ansible version (via the collection metadata key
214    `requires_ansible`), the default behavior is to issue a warning and continue anyway. Setting this value to `ignore`
215    skips the warning entirely, while setting it to `fatal` will immediately halt Ansible execution.
216  env: [{name: ANSIBLE_COLLECTIONS_ON_ANSIBLE_VERSION_MISMATCH}]
217  ini: [{key: collections_on_ansible_version_mismatch, section: defaults}]
218  choices: [error, warning, ignore]
219  default: warning
220_COLOR_DEFAULTS: &color
221  name: placeholder for color settings' defaults
222  choices: ['black', 'bright gray', 'blue', 'white', 'green', 'bright blue', 'cyan', 'bright green', 'red', 'bright cyan', 'purple', 'bright red', 'yellow', 'bright purple', 'dark gray', 'bright yellow', 'magenta', 'bright magenta', 'normal']
223COLOR_CHANGED:
224  <<: *color
225  name: Color for 'changed' task status
226  default: yellow
227  description: Defines the color to use on 'Changed' task status
228  env: [{name: ANSIBLE_COLOR_CHANGED}]
229  ini:
230  - {key: changed, section: colors}
231COLOR_CONSOLE_PROMPT:
232  <<: *color
233  name: "Color for ansible-console's prompt task status"
234  default: white
235  description: Defines the default color to use for ansible-console
236  env: [{name: ANSIBLE_COLOR_CONSOLE_PROMPT}]
237  ini:
238  - {key: console_prompt, section: colors}
239  version_added: "2.7"
240COLOR_DEBUG:
241  <<: *color
242  name: Color for debug statements
243  default: dark gray
244  description: Defines the color to use when emitting debug messages
245  env: [{name: ANSIBLE_COLOR_DEBUG}]
246  ini:
247  - {key: debug, section: colors}
248COLOR_DEPRECATE:
249  <<: *color
250  name: Color for deprecation messages
251  default: purple
252  description: Defines the color to use when emitting deprecation messages
253  env: [{name: ANSIBLE_COLOR_DEPRECATE}]
254  ini:
255  - {key: deprecate, section: colors}
256COLOR_DIFF_ADD:
257  <<: *color
258  name: Color for diff added display
259  default: green
260  description: Defines the color to use when showing added lines in diffs
261  env: [{name: ANSIBLE_COLOR_DIFF_ADD}]
262  ini:
263  - {key: diff_add, section: colors}
264  yaml: {key: display.colors.diff.add}
265COLOR_DIFF_LINES:
266  <<: *color
267  name: Color for diff lines display
268  default: cyan
269  description: Defines the color to use when showing diffs
270  env: [{name: ANSIBLE_COLOR_DIFF_LINES}]
271  ini:
272  - {key: diff_lines, section: colors}
273COLOR_DIFF_REMOVE:
274  <<: *color
275  name: Color for diff removed display
276  default: red
277  description: Defines the color to use when showing removed lines in diffs
278  env: [{name: ANSIBLE_COLOR_DIFF_REMOVE}]
279  ini:
280  - {key: diff_remove, section: colors}
281COLOR_ERROR:
282  <<: *color
283  name: Color for error messages
284  default: red
285  description: Defines the color to use when emitting error messages
286  env: [{name: ANSIBLE_COLOR_ERROR}]
287  ini:
288  - {key: error, section: colors}
289  yaml: {key: colors.error}
290COLOR_HIGHLIGHT:
291  <<: *color
292  name: Color for highlighting
293  default: white
294  description: Defines the color to use for highlighting
295  env: [{name: ANSIBLE_COLOR_HIGHLIGHT}]
296  ini:
297  - {key: highlight, section: colors}
298COLOR_OK:
299  <<: *color
300  name: Color for 'ok' task status
301  default: green
302  description: Defines the color to use when showing 'OK' task status
303  env: [{name: ANSIBLE_COLOR_OK}]
304  ini:
305  - {key: ok, section: colors}
306COLOR_SKIP:
307  <<: *color
308  name: Color for 'skip' task status
309  default: cyan
310  description: Defines the color to use when showing 'Skipped' task status
311  env: [{name: ANSIBLE_COLOR_SKIP}]
312  ini:
313  - {key: skip, section: colors}
314COLOR_UNREACHABLE:
315  <<: *color
316  name: Color for 'unreachable' host state
317  default: bright red
318  description: Defines the color to use on 'Unreachable' status
319  env: [{name: ANSIBLE_COLOR_UNREACHABLE}]
320  ini:
321  - {key: unreachable, section: colors}
322COLOR_VERBOSE:
323  <<: *color
324  name: Color for verbose messages
325  default: blue
326  description: Defines the color to use when emitting verbose messages. i.e those that show with '-v's.
327  env: [{name: ANSIBLE_COLOR_VERBOSE}]
328  ini:
329  - {key: verbose, section: colors}
330COLOR_WARN:
331  <<: *color
332  name: Color for warning messages
333  default: bright purple
334  description: Defines the color to use when emitting warning messages
335  env: [{name: ANSIBLE_COLOR_WARN}]
336  ini:
337  - {key: warn, section: colors}
338CONDITIONAL_BARE_VARS:
339  name: Allow bare variable evaluation in conditionals
340  default: False
341  type: boolean
342  description:
343    - With this setting on (True), running conditional evaluation 'var' is treated differently than 'var.subkey' as the first is evaluated
344      directly while the second goes through the Jinja2 parser. But 'false' strings in 'var' get evaluated as booleans.
345    - With this setting off they both evaluate the same but in cases in which 'var' was 'false' (a string) it won't get evaluated as a boolean anymore.
346    - Currently this setting defaults to 'True' but will soon change to 'False' and the setting itself will be removed in the future.
347    - Expect that this setting eventually will be deprecated after 2.12
348  env: [{name: ANSIBLE_CONDITIONAL_BARE_VARS}]
349  ini:
350  - {key: conditional_bare_variables, section: defaults}
351  version_added: "2.8"
352COVERAGE_REMOTE_OUTPUT:
353  name: Sets the output directory and filename prefix to generate coverage run info.
354  description:
355    - Sets the output directory on the remote host to generate coverage reports to.
356    - Currently only used for remote coverage on PowerShell modules.
357    - This is for internal use only.
358  env:
359  - {name: _ANSIBLE_COVERAGE_REMOTE_OUTPUT}
360  vars:
361  - {name: _ansible_coverage_remote_output}
362  type: str
363  version_added: '2.9'
364COVERAGE_REMOTE_PATHS:
365  name: Sets the list of paths to run coverage for.
366  description:
367  - A list of paths for files on the Ansible controller to run coverage for when executing on the remote host.
368  - Only files that match the path glob will have its coverage collected.
369  - Multiple path globs can be specified and are separated by ``:``.
370  - Currently only used for remote coverage on PowerShell modules.
371  - This is for internal use only.
372  default: '*'
373  env:
374  - {name: _ANSIBLE_COVERAGE_REMOTE_PATH_FILTER}
375  type: str
376  version_added: '2.9'
377ACTION_WARNINGS:
378  name: Toggle action warnings
379  default: True
380  description:
381    - By default Ansible will issue a warning when received from a task action (module or action plugin)
382    - These warnings can be silenced by adjusting this setting to False.
383  env: [{name: ANSIBLE_ACTION_WARNINGS}]
384  ini:
385  - {key: action_warnings, section: defaults}
386  type: boolean
387  version_added: "2.5"
388COMMAND_WARNINGS:
389  name: Command module warnings
390  default: False
391  description:
392    - Ansible can issue a warning when the shell or command module is used and the command appears to be similar to an existing Ansible module.
393    - These warnings can be silenced by adjusting this setting to False. You can also control this at the task level with the module option ``warn``.
394    - As of version 2.11, this is disabled by default.
395  env: [{name: ANSIBLE_COMMAND_WARNINGS}]
396  ini:
397  - {key: command_warnings, section: defaults}
398  type: boolean
399  version_added: "1.8"
400  deprecated:
401    why: the command warnings feature is being removed
402    version: "2.14"
403LOCALHOST_WARNING:
404  name: Warning when using implicit inventory with only localhost
405  default: True
406  description:
407    - By default Ansible will issue a warning when there are no hosts in the
408      inventory.
409    - These warnings can be silenced by adjusting this setting to False.
410  env: [{name: ANSIBLE_LOCALHOST_WARNING}]
411  ini:
412  - {key: localhost_warning, section: defaults}
413  type: boolean
414  version_added: "2.6"
415DOC_FRAGMENT_PLUGIN_PATH:
416  name: documentation fragment plugins path
417  default: ~/.ansible/plugins/doc_fragments:/usr/local/share/py38-ansible/plugins/doc_fragments
418  description: Colon separated paths in which Ansible will search for Documentation Fragments Plugins.
419  env: [{name: ANSIBLE_DOC_FRAGMENT_PLUGINS}]
420  ini:
421  - {key: doc_fragment_plugins, section: defaults}
422  type: pathspec
423DEFAULT_ACTION_PLUGIN_PATH:
424  name: Action plugins path
425  default: ~/.ansible/plugins/action:/usr/local/share/py38-ansible/plugins/action
426  description: Colon separated paths in which Ansible will search for Action Plugins.
427  env: [{name: ANSIBLE_ACTION_PLUGINS}]
428  ini:
429  - {key: action_plugins, section: defaults}
430  type: pathspec
431  yaml: {key: plugins.action.path}
432DEFAULT_ALLOW_UNSAFE_LOOKUPS:
433  name: Allow unsafe lookups
434  default: False
435  description:
436    - "When enabled, this option allows lookup plugins (whether used in variables as ``{{lookup('foo')}}`` or as a loop as with_foo)
437      to return data that is not marked 'unsafe'."
438    - By default, such data is marked as unsafe to prevent the templating engine from evaluating any jinja2 templating language,
439      as this could represent a security risk.  This option is provided to allow for backwards-compatibility,
440      however users should first consider adding allow_unsafe=True to any lookups which may be expected to contain data which may be run
441      through the templating engine late
442  env: []
443  ini:
444  - {key: allow_unsafe_lookups, section: defaults}
445  type: boolean
446  version_added: "2.2.3"
447DEFAULT_ASK_PASS:
448  name: Ask for the login password
449  default: False
450  description:
451    - This controls whether an Ansible playbook should prompt for a login password.
452      If using SSH keys for authentication, you probably do not needed to change this setting.
453  env: [{name: ANSIBLE_ASK_PASS}]
454  ini:
455  - {key: ask_pass, section: defaults}
456  type: boolean
457  yaml: {key: defaults.ask_pass}
458DEFAULT_ASK_VAULT_PASS:
459  name: Ask for the vault password(s)
460  default: False
461  description:
462    - This controls whether an Ansible playbook should prompt for a vault password.
463  env: [{name: ANSIBLE_ASK_VAULT_PASS}]
464  ini:
465  - {key: ask_vault_pass, section: defaults}
466  type: boolean
467DEFAULT_BECOME:
468  name: Enable privilege escalation (become)
469  default: False
470  description: Toggles the use of privilege escalation, allowing you to 'become' another user after login.
471  env: [{name: ANSIBLE_BECOME}]
472  ini:
473  - {key: become, section: privilege_escalation}
474  type: boolean
475DEFAULT_BECOME_ASK_PASS:
476  name: Ask for the privilege escalation (become) password
477  default: False
478  description: Toggle to prompt for privilege escalation password.
479  env: [{name: ANSIBLE_BECOME_ASK_PASS}]
480  ini:
481  - {key: become_ask_pass, section: privilege_escalation}
482  type: boolean
483DEFAULT_BECOME_METHOD:
484  name: Choose privilege escalation method
485  default: 'sudo'
486  description: Privilege escalation method to use when `become` is enabled.
487  env: [{name: ANSIBLE_BECOME_METHOD}]
488  ini:
489    - {section: privilege_escalation, key: become_method}
490DEFAULT_BECOME_EXE:
491  name: Choose 'become' executable
492  default: ~
493  description: 'executable to use for privilege escalation, otherwise Ansible will depend on PATH'
494  env: [{name: ANSIBLE_BECOME_EXE}]
495  ini:
496  - {key: become_exe, section: privilege_escalation}
497DEFAULT_BECOME_FLAGS:
498  name: Set 'become' executable options
499  default: ''
500  description: Flags to pass to the privilege escalation executable.
501  env: [{name: ANSIBLE_BECOME_FLAGS}]
502  ini:
503  - {key: become_flags, section: privilege_escalation}
504BECOME_PLUGIN_PATH:
505  name: Become plugins path
506  default: ~/.ansible/plugins/become:/usr/local/share/py38-ansible/plugins/become
507  description: Colon separated paths in which Ansible will search for Become Plugins.
508  env: [{name: ANSIBLE_BECOME_PLUGINS}]
509  ini:
510  - {key: become_plugins, section: defaults}
511  type: pathspec
512  version_added: "2.8"
513DEFAULT_BECOME_USER:
514  # FIXME: should really be blank and make -u passing optional depending on it
515  name: Set the user you 'become' via privilege escalation
516  default: root
517  description: The user your login/remote user 'becomes' when using privilege escalation, most systems will use 'root' when no user is specified.
518  env: [{name: ANSIBLE_BECOME_USER}]
519  ini:
520  - {key: become_user, section: privilege_escalation}
521  yaml: {key: become.user}
522DEFAULT_CACHE_PLUGIN_PATH:
523  name: Cache Plugins Path
524  default: ~/.ansible/plugins/cache:/usr/local/share/py38-ansible/plugins/cache
525  description: Colon separated paths in which Ansible will search for Cache Plugins.
526  env: [{name: ANSIBLE_CACHE_PLUGINS}]
527  ini:
528  - {key: cache_plugins, section: defaults}
529  type: pathspec
530CALLABLE_ACCEPT_LIST:
531  name: Template 'callable' accept list
532  default: []
533  description: Whitelist of callable methods to be made available to template evaluation
534  env:
535  - name: ANSIBLE_CALLABLE_WHITELIST
536    deprecated:
537      why: normalizing names to new standard
538      version: "2.15"
539      alternatives: 'ANSIBLE_CALLABLE_ENABLED'
540  - name: ANSIBLE_CALLABLE_ENABLED
541    version_added: '2.11'
542  ini:
543  - key: callable_whitelist
544    section: defaults
545    deprecated:
546      why: normalizing names to new standard
547      version: "2.15"
548      alternatives: 'callable_enabled'
549  - key: callable_enabled
550    section: defaults
551    version_added: '2.11'
552  type: list
553CONTROLLER_PYTHON_WARNING:
554  name: Running Older than Python 3.8 Warning
555  default: True
556  description: Toggle to control showing warnings related to running a Python version
557               older than Python 3.8 on the controller
558  env: [{name: ANSIBLE_CONTROLLER_PYTHON_WARNING}]
559  ini:
560  - {key: controller_python_warning, section: defaults}
561  type: boolean
562DEFAULT_CALLBACK_PLUGIN_PATH:
563  name: Callback Plugins Path
564  default: ~/.ansible/plugins/callback:/usr/local/share/py38-ansible/plugins/callback
565  description: Colon separated paths in which Ansible will search for Callback Plugins.
566  env: [{name: ANSIBLE_CALLBACK_PLUGINS}]
567  ini:
568  - {key: callback_plugins, section: defaults}
569  type: pathspec
570  yaml: {key: plugins.callback.path}
571CALLBACKS_ENABLED:
572  name: Enable callback plugins that require it.
573  default: []
574  description:
575    - "List of enabled callbacks, not all callbacks need enabling,
576      but many of those shipped with Ansible do as we don't want them activated by default."
577  env:
578  - name: ANSIBLE_CALLBACK_WHITELIST
579    deprecated:
580      why: normalizing names to new standard
581      version: "2.15"
582      alternatives: 'ANSIBLE_CALLBACKS_ENABLED'
583  - name: ANSIBLE_CALLBACKS_ENABLED
584    version_added: '2.11'
585  ini:
586  - key: callback_whitelist
587    section: defaults
588    deprecated:
589      why: normalizing names to new standard
590      version: "2.15"
591      alternatives: 'callbacks_enabled'
592  - key: callbacks_enabled
593    section: defaults
594    version_added: '2.11'
595  type: list
596DEFAULT_CLICONF_PLUGIN_PATH:
597  name: Cliconf Plugins Path
598  default: ~/.ansible/plugins/cliconf:/usr/local/share/py38-ansible/plugins/cliconf
599  description: Colon separated paths in which Ansible will search for Cliconf Plugins.
600  env: [{name: ANSIBLE_CLICONF_PLUGINS}]
601  ini:
602  - {key: cliconf_plugins, section: defaults}
603  type: pathspec
604DEFAULT_CONNECTION_PLUGIN_PATH:
605  name: Connection Plugins Path
606  default: ~/.ansible/plugins/connection:/usr/local/share/py38-ansible/plugins/connection
607  description: Colon separated paths in which Ansible will search for Connection Plugins.
608  env: [{name: ANSIBLE_CONNECTION_PLUGINS}]
609  ini:
610  - {key: connection_plugins, section: defaults}
611  type: pathspec
612  yaml: {key: plugins.connection.path}
613DEFAULT_DEBUG:
614  name: Debug mode
615  default: False
616  description:
617    - "Toggles debug output in Ansible. This is *very* verbose and can hinder
618      multiprocessing.  Debug output can also include secret information
619      despite no_log settings being enabled, which means debug mode should not be used in
620      production."
621  env: [{name: ANSIBLE_DEBUG}]
622  ini:
623  - {key: debug, section: defaults}
624  type: boolean
625DEFAULT_EXECUTABLE:
626  name: Target shell executable
627  default: /bin/sh
628  description:
629    - "This indicates the command to use to spawn a shell under for Ansible's execution needs on a target.
630      Users may need to change this in rare instances when shell usage is constrained, but in most cases it may be left as is."
631  env: [{name: ANSIBLE_EXECUTABLE}]
632  ini:
633  - {key: executable, section: defaults}
634DEFAULT_FACT_PATH:
635  name: local fact path
636  default: ~
637  description:
638    - "This option allows you to globally configure a custom path for 'local_facts' for the implied M(ansible.builtin.setup) task when using fact gathering."
639    - "If not set, it will fallback to the default from the M(ansible.builtin.setup) module: ``/usr/local/etc/ansible/facts.d``."
640    - "This does **not** affect  user defined tasks that use the M(ansible.builtin.setup) module."
641  env: [{name: ANSIBLE_FACT_PATH}]
642  ini:
643  - {key: fact_path, section: defaults}
644  type: string
645  yaml: {key: facts.gathering.fact_path}
646DEFAULT_FILTER_PLUGIN_PATH:
647  name: Jinja2 Filter Plugins Path
648  default: ~/.ansible/plugins/filter:/usr/local/share/py38-ansible/plugins/filter
649  description: Colon separated paths in which Ansible will search for Jinja2 Filter Plugins.
650  env: [{name: ANSIBLE_FILTER_PLUGINS}]
651  ini:
652  - {key: filter_plugins, section: defaults}
653  type: pathspec
654DEFAULT_FORCE_HANDLERS:
655  name: Force handlers to run after failure
656  default: False
657  description:
658    - This option controls if notified handlers run on a host even if a failure occurs on that host.
659    - When false, the handlers will not run if a failure has occurred on a host.
660    - This can also be set per play or on the command line. See Handlers and Failure for more details.
661  env: [{name: ANSIBLE_FORCE_HANDLERS}]
662  ini:
663  - {key: force_handlers, section: defaults}
664  type: boolean
665  version_added: "1.9.1"
666DEFAULT_FORKS:
667  name: Number of task forks
668  default: 5
669  description: Maximum number of forks Ansible will use to execute tasks on target hosts.
670  env: [{name: ANSIBLE_FORKS}]
671  ini:
672  - {key: forks, section: defaults}
673  type: integer
674DEFAULT_GATHERING:
675  name: Gathering behaviour
676  default: 'implicit'
677  description:
678    - This setting controls the default policy of fact gathering (facts discovered about remote systems).
679    - "When 'implicit' (the default), the cache plugin will be ignored and facts will be gathered per play unless 'gather_facts: False' is set."
680    - "When 'explicit' the inverse is true, facts will not be gathered unless directly requested in the play."
681    - "The 'smart' value means each new host that has no facts discovered will be scanned,
682      but if the same host is addressed in multiple plays it will not be contacted again in the playbook run."
683    - "This option can be useful for those wishing to save fact gathering time. Both 'smart' and 'explicit' will use the cache plugin."
684  env: [{name: ANSIBLE_GATHERING}]
685  ini:
686    - key: gathering
687      section: defaults
688  version_added: "1.6"
689  choices: ['smart', 'explicit', 'implicit']
690DEFAULT_GATHER_SUBSET:
691  name: Gather facts subset
692  default: ['all']
693  description:
694      - Set the `gather_subset` option for the M(ansible.builtin.setup) task in the implicit fact gathering.
695        See the module documentation for specifics.
696      - "It does **not** apply to user defined M(ansible.builtin.setup) tasks."
697  env: [{name: ANSIBLE_GATHER_SUBSET}]
698  ini:
699    - key: gather_subset
700      section: defaults
701  version_added: "2.1"
702  type: list
703DEFAULT_GATHER_TIMEOUT:
704  name: Gather facts timeout
705  default: 10
706  description:
707    - Set the timeout in seconds for the implicit fact gathering.
708    - "It does **not** apply to user defined M(ansible.builtin.setup) tasks."
709  env: [{name: ANSIBLE_GATHER_TIMEOUT}]
710  ini:
711  - {key: gather_timeout, section: defaults}
712  type: integer
713  yaml: {key: defaults.gather_timeout}
714DEFAULT_HANDLER_INCLUDES_STATIC:
715  name: Make handler M(ansible.builtin.include) static
716  default: False
717  description:
718    - "Since 2.0 M(ansible.builtin.include) can be 'dynamic', this setting (if True) forces that if the include appears in a ``handlers`` section to be 'static'."
719  env: [{name: ANSIBLE_HANDLER_INCLUDES_STATIC}]
720  ini:
721  - {key: handler_includes_static, section: defaults}
722  type: boolean
723  deprecated:
724    why: include itself is deprecated and this setting will not matter in the future
725    version: "2.12"
726    alternatives: none as its already built into the decision between include_tasks and import_tasks
727DEFAULT_HASH_BEHAVIOUR:
728  name: Hash merge behaviour
729  default: replace
730  type: string
731  choices:
732    replace: Any variable that is defined more than once is overwritten using the order from variable precedence rules (highest wins).
733    merge: Any dictionary variable will be recursively merged with new definitions across the different variable definition sources.
734  description:
735    - This setting controls how duplicate definitions of dictionary variables (aka hash, map, associative array) are handled in Ansible.
736    - This does not affect variables whose values are scalars (integers, strings) or arrays.
737    - "**WARNING**, changing this setting is not recommended as this is fragile and makes your content (plays, roles, collections) non portable,
738      leading to continual confusion and misuse. Don't change this setting unless you think you have an absolute need for it."
739    - We recommend avoiding reusing variable names and relying on the ``combine`` filter and ``vars`` and ``varnames`` lookups
740      to create merged versions of the individual variables. In our experience this is rarely really needed and a sign that too much
741      complexity has been introduced into the data structures and plays.
742    - For some uses you can also look into custom vars_plugins to merge on input, even substituting the default ``host_group_vars``
743      that is in charge of parsing the ``host_vars/`` and ``group_vars/`` directories. Most users of this setting are only interested in inventory scope,
744      but the setting itself affects all sources and makes debugging even harder.
745    - All playbooks and roles in the official examples repos assume the default for this setting.
746    - Changing the setting to ``merge`` applies across variable sources, but many sources will internally still overwrite the variables.
747      For example ``include_vars`` will dedupe variables internally before updating Ansible, with 'last defined' overwriting previous definitions in same file.
748    - The Ansible project recommends you **avoid ``merge`` for new projects.**
749    - It is the intention of the Ansible developers to eventually deprecate and remove this setting, but it is being kept as some users do heavily rely on it.
750      New projects should **avoid 'merge'**.
751  env: [{name: ANSIBLE_HASH_BEHAVIOUR}]
752  ini:
753  - {key: hash_behaviour, section: defaults}
754DEFAULT_HOST_LIST:
755  name: Inventory Source
756  default: /usr/local/etc/ansible/hosts
757  description: Comma separated list of Ansible inventory sources
758  env:
759    - name: ANSIBLE_INVENTORY
760  expand_relative_paths: True
761  ini:
762    - key: inventory
763      section: defaults
764  type: pathlist
765  yaml: {key: defaults.inventory}
766DEFAULT_HTTPAPI_PLUGIN_PATH:
767  name: HttpApi Plugins Path
768  default: ~/.ansible/plugins/httpapi:/usr/local/share/py38-ansible/plugins/httpapi
769  description: Colon separated paths in which Ansible will search for HttpApi Plugins.
770  env: [{name: ANSIBLE_HTTPAPI_PLUGINS}]
771  ini:
772  - {key: httpapi_plugins, section: defaults}
773  type: pathspec
774DEFAULT_INTERNAL_POLL_INTERVAL:
775  name: Internal poll interval
776  default: 0.001
777  env: []
778  ini:
779  - {key: internal_poll_interval, section: defaults}
780  type: float
781  version_added: "2.2"
782  description:
783    - This sets the interval (in seconds) of Ansible internal processes polling each other.
784      Lower values improve performance with large playbooks at the expense of extra CPU load.
785      Higher values are more suitable for Ansible usage in automation scenarios,
786      when UI responsiveness is not required but CPU usage might be a concern.
787    - "The default corresponds to the value hardcoded in Ansible <= 2.1"
788DEFAULT_INVENTORY_PLUGIN_PATH:
789  name: Inventory Plugins Path
790  default: ~/.ansible/plugins/inventory:/usr/local/share/py38-ansible/plugins/inventory
791  description: Colon separated paths in which Ansible will search for Inventory Plugins.
792  env: [{name: ANSIBLE_INVENTORY_PLUGINS}]
793  ini:
794  - {key: inventory_plugins, section: defaults}
795  type: pathspec
796DEFAULT_JINJA2_EXTENSIONS:
797  name: Enabled Jinja2 extensions
798  default: []
799  description:
800    - This is a developer-specific feature that allows enabling additional Jinja2 extensions.
801    - "See the Jinja2 documentation for details. If you do not know what these do, you probably don't need to change this setting :)"
802  env: [{name: ANSIBLE_JINJA2_EXTENSIONS}]
803  ini:
804  - {key: jinja2_extensions, section: defaults}
805DEFAULT_JINJA2_NATIVE:
806  name: Use Jinja2's NativeEnvironment for templating
807  default: False
808  description: This option preserves variable types during template operations. This requires Jinja2 >= 2.10.
809  env: [{name: ANSIBLE_JINJA2_NATIVE}]
810  ini:
811  - {key: jinja2_native, section: defaults}
812  type: boolean
813  yaml: {key: jinja2_native}
814  version_added: 2.7
815DEFAULT_KEEP_REMOTE_FILES:
816  name: Keep remote files
817  default: False
818  description:
819    - Enables/disables the cleaning up of the temporary files Ansible used to execute the tasks on the remote.
820    - If this option is enabled it will disable ``ANSIBLE_PIPELINING``.
821  env: [{name: ANSIBLE_KEEP_REMOTE_FILES}]
822  ini:
823  - {key: keep_remote_files, section: defaults}
824  type: boolean
825DEFAULT_LIBVIRT_LXC_NOSECLABEL:
826  # TODO: move to plugin
827  name: No security label on Lxc
828  default: False
829  description:
830    - "This setting causes libvirt to connect to lxc containers by passing --noseclabel to virsh.
831      This is necessary when running on systems which do not have SELinux."
832  env:
833  - name: LIBVIRT_LXC_NOSECLABEL
834    deprecated:
835      why: environment variables without ``ANSIBLE_`` prefix are deprecated
836      version: "2.12"
837      alternatives: the ``ANSIBLE_LIBVIRT_LXC_NOSECLABEL`` environment variable
838  - name: ANSIBLE_LIBVIRT_LXC_NOSECLABEL
839  ini:
840  - {key: libvirt_lxc_noseclabel, section: selinux}
841  type: boolean
842  version_added: "2.1"
843DEFAULT_LOAD_CALLBACK_PLUGINS:
844  name: Load callbacks for adhoc
845  default: False
846  description:
847    - Controls whether callback plugins are loaded when running /usr/bin/ansible.
848      This may be used to log activity from the command line, send notifications, and so on.
849      Callback plugins are always loaded for ``ansible-playbook``.
850  env: [{name: ANSIBLE_LOAD_CALLBACK_PLUGINS}]
851  ini:
852  - {key: bin_ansible_callbacks, section: defaults}
853  type: boolean
854  version_added: "1.8"
855DEFAULT_LOCAL_TMP:
856  name: Controller temporary directory
857  default: ~/.ansible/tmp
858  description: Temporary directory for Ansible to use on the controller.
859  env: [{name: ANSIBLE_LOCAL_TEMP}]
860  ini:
861  - {key: local_tmp, section: defaults}
862  type: tmppath
863DEFAULT_LOG_PATH:
864  name: Ansible log file path
865  default: ~
866  description: File to which Ansible will log on the controller. When empty logging is disabled.
867  env: [{name: ANSIBLE_LOG_PATH}]
868  ini:
869  - {key: log_path, section: defaults}
870  type: path
871DEFAULT_LOG_FILTER:
872  name: Name filters for python logger
873  default: []
874  description: List of logger names to filter out of the log file
875  env: [{name: ANSIBLE_LOG_FILTER}]
876  ini:
877    - {key: log_filter, section: defaults}
878  type: list
879DEFAULT_LOOKUP_PLUGIN_PATH:
880  name: Lookup Plugins Path
881  description: Colon separated paths in which Ansible will search for Lookup Plugins.
882  default: ~/.ansible/plugins/lookup:/usr/local/share/py38-ansible/plugins/lookup
883  env: [{name: ANSIBLE_LOOKUP_PLUGINS}]
884  ini:
885  - {key: lookup_plugins, section: defaults}
886  type: pathspec
887  yaml: {key: defaults.lookup_plugins}
888DEFAULT_MANAGED_STR:
889  name: Ansible managed
890  default: 'Ansible managed'
891  description: Sets the macro for the 'ansible_managed' variable available for M(ansible.builtin.template) and M(ansible.windows.win_template) modules.  This is only relevant for those two modules.
892  env: []
893  ini:
894  - {key: ansible_managed, section: defaults}
895  yaml: {key: defaults.ansible_managed}
896DEFAULT_MODULE_ARGS:
897  name: Adhoc default arguments
898  default: ''
899  description:
900    - This sets the default arguments to pass to the ``ansible`` adhoc binary if no ``-a`` is specified.
901  env: [{name: ANSIBLE_MODULE_ARGS}]
902  ini:
903  - {key: module_args, section: defaults}
904DEFAULT_MODULE_COMPRESSION:
905  name: Python module compression
906  default: ZIP_DEFLATED
907  description: Compression scheme to use when transferring Python modules to the target.
908  env: []
909  ini:
910  - {key: module_compression, section: defaults}
911# vars:
912#   - name: ansible_module_compression
913DEFAULT_MODULE_NAME:
914  name: Default adhoc module
915  default: command
916  description: "Module to use with the ``ansible`` AdHoc command, if none is specified via ``-m``."
917  env: []
918  ini:
919  - {key: module_name, section: defaults}
920DEFAULT_MODULE_PATH:
921  name: Modules Path
922  description: Colon separated paths in which Ansible will search for Modules.
923  default: ~/.ansible/plugins/modules:/usr/local/share/py38-ansible/plugins/modules
924  env: [{name: ANSIBLE_LIBRARY}]
925  ini:
926  - {key: library, section: defaults}
927  type: pathspec
928DEFAULT_MODULE_UTILS_PATH:
929  name: Module Utils Path
930  description: Colon separated paths in which Ansible will search for Module utils files, which are shared by modules.
931  default: ~/.ansible/plugins/module_utils:/usr/local/share/py38-ansible/plugins/module_utils
932  env: [{name: ANSIBLE_MODULE_UTILS}]
933  ini:
934  - {key: module_utils, section: defaults}
935  type: pathspec
936DEFAULT_NETCONF_PLUGIN_PATH:
937  name: Netconf Plugins Path
938  default: ~/.ansible/plugins/netconf:/usr/local/share/py38-ansible/plugins/netconf
939  description: Colon separated paths in which Ansible will search for Netconf Plugins.
940  env: [{name: ANSIBLE_NETCONF_PLUGINS}]
941  ini:
942  - {key: netconf_plugins, section: defaults}
943  type: pathspec
944DEFAULT_NO_LOG:
945  name: No log
946  default: False
947  description: "Toggle Ansible's display and logging of task details, mainly used to avoid security disclosures."
948  env: [{name: ANSIBLE_NO_LOG}]
949  ini:
950  - {key: no_log, section: defaults}
951  type: boolean
952DEFAULT_NO_TARGET_SYSLOG:
953  name: No syslog on target
954  default: False
955  description:
956  - Toggle Ansible logging to syslog on the target when it executes tasks. On Windows hosts this will disable a newer
957    style PowerShell modules from writting to the event log.
958  env: [{name: ANSIBLE_NO_TARGET_SYSLOG}]
959  ini:
960  - {key: no_target_syslog, section: defaults}
961  vars:
962  - name: ansible_no_target_syslog
963    version_added: '2.10'
964  type: boolean
965  yaml: {key: defaults.no_target_syslog}
966DEFAULT_NULL_REPRESENTATION:
967  name: Represent a null
968  default: ~
969  description: What templating should return as a 'null' value. When not set it will let Jinja2 decide.
970  env: [{name: ANSIBLE_NULL_REPRESENTATION}]
971  ini:
972  - {key: null_representation, section: defaults}
973  type: none
974DEFAULT_POLL_INTERVAL:
975  name: Async poll interval
976  default: 15
977  description:
978    - For asynchronous tasks in Ansible (covered in Asynchronous Actions and Polling),
979      this is how often to check back on the status of those tasks when an explicit poll interval is not supplied.
980      The default is a reasonably moderate 15 seconds which is a tradeoff between checking in frequently and
981      providing a quick turnaround when something may have completed.
982  env: [{name: ANSIBLE_POLL_INTERVAL}]
983  ini:
984  - {key: poll_interval, section: defaults}
985  type: integer
986DEFAULT_PRIVATE_KEY_FILE:
987  name: Private key file
988  default: ~
989  description:
990    - Option for connections using a certificate or key file to authenticate, rather than an agent or passwords,
991      you can set the default value here to avoid re-specifying --private-key with every invocation.
992  env: [{name: ANSIBLE_PRIVATE_KEY_FILE}]
993  ini:
994  - {key: private_key_file, section: defaults}
995  type: path
996DEFAULT_PRIVATE_ROLE_VARS:
997  name: Private role variables
998  default: False
999  description:
1000    - Makes role variables inaccessible from other roles.
1001    - This was introduced as a way to reset role variables to default values if
1002      a role is used more than once in a playbook.
1003  env: [{name: ANSIBLE_PRIVATE_ROLE_VARS}]
1004  ini:
1005  - {key: private_role_vars, section: defaults}
1006  type: boolean
1007  yaml: {key: defaults.private_role_vars}
1008DEFAULT_REMOTE_PORT:
1009  name: Remote port
1010  default: ~
1011  description: Port to use in remote connections, when blank it will use the connection plugin default.
1012  env: [{name: ANSIBLE_REMOTE_PORT}]
1013  ini:
1014  - {key: remote_port, section: defaults}
1015  type: integer
1016  yaml: {key: defaults.remote_port}
1017DEFAULT_REMOTE_USER:
1018  name: Login/Remote User
1019  default:
1020  description:
1021    - Sets the login user for the target machines
1022    - "When blank it uses the connection plugin's default, normally the user currently executing Ansible."
1023  env: [{name: ANSIBLE_REMOTE_USER}]
1024  ini:
1025  - {key: remote_user, section: defaults}
1026DEFAULT_ROLES_PATH:
1027  name: Roles path
1028  default: ~/.ansible/roles:/usr/local/share/py38-ansible/roles:/usr/local/etc/ansible/roles
1029  description: Colon separated paths in which Ansible will search for Roles.
1030  env: [{name: ANSIBLE_ROLES_PATH}]
1031  expand_relative_paths: True
1032  ini:
1033  - {key: roles_path, section: defaults}
1034  type: pathspec
1035  yaml: {key: defaults.roles_path}
1036DEFAULT_SELINUX_SPECIAL_FS:
1037  name: Problematic file systems
1038  default: fuse, nfs, vboxsf, ramfs, 9p, vfat
1039  description:
1040    - "Some filesystems do not support safe operations and/or return inconsistent errors,
1041       this setting makes Ansible 'tolerate' those in the list w/o causing fatal errors."
1042    - Data corruption may occur and writes are not always verified when a filesystem is in the list.
1043  env:
1044  - name: ANSIBLE_SELINUX_SPECIAL_FS
1045    version_added: "2.9"
1046  ini:
1047  - {key: special_context_filesystems, section: selinux}
1048  type: list
1049DEFAULT_STDOUT_CALLBACK:
1050  name: Main display callback plugin
1051  default: default
1052  description:
1053    - "Set the main callback used to display Ansible output, you can only have one at a time."
1054    - You can have many other callbacks, but just one can be in charge of stdout.
1055  env: [{name: ANSIBLE_STDOUT_CALLBACK}]
1056  ini:
1057  - {key: stdout_callback, section: defaults}
1058ENABLE_TASK_DEBUGGER:
1059  name: Whether to enable the task debugger
1060  default: False
1061  description:
1062    - Whether or not to enable the task debugger, this previously was done as a strategy plugin.
1063    - Now all strategy plugins can inherit this behavior. The debugger defaults to activating when
1064    - a task is failed on unreachable. Use the debugger keyword for more flexibility.
1065  type: boolean
1066  env: [{name: ANSIBLE_ENABLE_TASK_DEBUGGER}]
1067  ini:
1068    - {key: enable_task_debugger, section: defaults}
1069  version_added: "2.5"
1070TASK_DEBUGGER_IGNORE_ERRORS:
1071  name: Whether a failed task with ignore_errors=True will still invoke the debugger
1072  default: True
1073  description:
1074    - This option defines whether the task debugger will be invoked on a failed task when ignore_errors=True
1075      is specified.
1076    - True specifies that the debugger will honor ignore_errors, False will not honor ignore_errors.
1077  type: boolean
1078  env: [{name: ANSIBLE_TASK_DEBUGGER_IGNORE_ERRORS}]
1079  ini:
1080    - {key: task_debugger_ignore_errors, section: defaults}
1081  version_added: "2.7"
1082DEFAULT_STRATEGY:
1083  name: Implied strategy
1084  default: 'linear'
1085  description: Set the default strategy used for plays.
1086  env: [{name: ANSIBLE_STRATEGY}]
1087  ini:
1088  - {key: strategy, section: defaults}
1089  version_added: "2.3"
1090DEFAULT_STRATEGY_PLUGIN_PATH:
1091  name: Strategy Plugins Path
1092  description: Colon separated paths in which Ansible will search for Strategy Plugins.
1093  default: ~/.ansible/plugins/strategy:/usr/local/share/py38-ansible/plugins/strategy
1094  env: [{name: ANSIBLE_STRATEGY_PLUGINS}]
1095  ini:
1096  - {key: strategy_plugins, section: defaults}
1097  type: pathspec
1098DEFAULT_SU:
1099  default: False
1100  description: 'Toggle the use of "su" for tasks.'
1101  env: [{name: ANSIBLE_SU}]
1102  ini:
1103  - {key: su, section: defaults}
1104  type: boolean
1105  yaml: {key: defaults.su}
1106DEFAULT_SYSLOG_FACILITY:
1107  name: syslog facility
1108  default: LOG_USER
1109  description: Syslog facility to use when Ansible logs to the remote target
1110  env: [{name: ANSIBLE_SYSLOG_FACILITY}]
1111  ini:
1112  - {key: syslog_facility, section: defaults}
1113DEFAULT_TASK_INCLUDES_STATIC:
1114  name: Task include static
1115  default: False
1116  description:
1117    - The `include` tasks can be static or dynamic, this toggles the default expected behaviour if autodetection fails and it is not explicitly set in task.
1118  env: [{name: ANSIBLE_TASK_INCLUDES_STATIC}]
1119  ini:
1120  - {key: task_includes_static, section: defaults}
1121  type: boolean
1122  version_added: "2.1"
1123  deprecated:
1124    why: include itself is deprecated and this setting will not matter in the future
1125    version: "2.12"
1126    alternatives: None, as its already built into the decision between include_tasks and import_tasks
1127DEFAULT_TERMINAL_PLUGIN_PATH:
1128  name: Terminal Plugins Path
1129  default: ~/.ansible/plugins/terminal:/usr/local/share/py38-ansible/plugins/terminal
1130  description: Colon separated paths in which Ansible will search for Terminal Plugins.
1131  env: [{name: ANSIBLE_TERMINAL_PLUGINS}]
1132  ini:
1133  - {key: terminal_plugins, section: defaults}
1134  type: pathspec
1135DEFAULT_TEST_PLUGIN_PATH:
1136  name: Jinja2 Test Plugins Path
1137  description: Colon separated paths in which Ansible will search for Jinja2 Test Plugins.
1138  default: ~/.ansible/plugins/test:/usr/local/share/py38-ansible/plugins/test
1139  env: [{name: ANSIBLE_TEST_PLUGINS}]
1140  ini:
1141  - {key: test_plugins, section: defaults}
1142  type: pathspec
1143DEFAULT_TIMEOUT:
1144  name: Connection timeout
1145  default: 10
1146  description: This is the default timeout for connection plugins to use.
1147  env: [{name: ANSIBLE_TIMEOUT}]
1148  ini:
1149  - {key: timeout, section: defaults}
1150  type: integer
1151DEFAULT_TRANSPORT:
1152  # note that ssh_utils refs this and needs to be updated if removed
1153  name: Connection plugin
1154  default: smart
1155  description: "Default connection plugin to use, the 'smart' option will toggle between 'ssh' and 'paramiko' depending on controller OS and ssh versions"
1156  env: [{name: ANSIBLE_TRANSPORT}]
1157  ini:
1158  - {key: transport, section: defaults}
1159DEFAULT_UNDEFINED_VAR_BEHAVIOR:
1160  name: Jinja2 fail on undefined
1161  default: True
1162  version_added: "1.3"
1163  description:
1164    - When True, this causes ansible templating to fail steps that reference variable names that are likely typoed.
1165    - "Otherwise, any '{{ template_expression }}' that contains undefined variables will be rendered in a template or ansible action line exactly as written."
1166  env: [{name: ANSIBLE_ERROR_ON_UNDEFINED_VARS}]
1167  ini:
1168  - {key: error_on_undefined_vars, section: defaults}
1169  type: boolean
1170DEFAULT_VARS_PLUGIN_PATH:
1171  name: Vars Plugins Path
1172  default: ~/.ansible/plugins/vars:/usr/local/share/py38-ansible/plugins/vars
1173  description: Colon separated paths in which Ansible will search for Vars Plugins.
1174  env: [{name: ANSIBLE_VARS_PLUGINS}]
1175  ini:
1176  - {key: vars_plugins, section: defaults}
1177  type: pathspec
1178# TODO: unused?
1179#DEFAULT_VAR_COMPRESSION_LEVEL:
1180#  default: 0
1181#  description: 'TODO: write it'
1182#  env: [{name: ANSIBLE_VAR_COMPRESSION_LEVEL}]
1183#  ini:
1184#  - {key: var_compression_level, section: defaults}
1185#  type: integer
1186#  yaml: {key: defaults.var_compression_level}
1187DEFAULT_VAULT_ID_MATCH:
1188  name: Force vault id match
1189  default: False
1190  description: 'If true, decrypting vaults with a vault id will only try the password from the matching vault-id'
1191  env: [{name: ANSIBLE_VAULT_ID_MATCH}]
1192  ini:
1193  - {key: vault_id_match, section: defaults}
1194  yaml: {key: defaults.vault_id_match}
1195DEFAULT_VAULT_IDENTITY:
1196  name: Vault id label
1197  default: default
1198  description: 'The label to use for the default vault id label in cases where a vault id label is not provided'
1199  env: [{name: ANSIBLE_VAULT_IDENTITY}]
1200  ini:
1201  - {key: vault_identity, section: defaults}
1202  yaml: {key: defaults.vault_identity}
1203DEFAULT_VAULT_ENCRYPT_IDENTITY:
1204  name: Vault id to use for encryption
1205  default:
1206  description: 'The vault_id to use for encrypting by default. If multiple vault_ids are provided, this specifies which to use for encryption. The --encrypt-vault-id cli option overrides the configured value.'
1207  env: [{name: ANSIBLE_VAULT_ENCRYPT_IDENTITY}]
1208  ini:
1209  - {key: vault_encrypt_identity, section: defaults}
1210  yaml: {key: defaults.vault_encrypt_identity}
1211DEFAULT_VAULT_IDENTITY_LIST:
1212  name: Default vault ids
1213  default: []
1214  description: 'A list of vault-ids to use by default. Equivalent to multiple --vault-id args. Vault-ids are tried in order.'
1215  env: [{name: ANSIBLE_VAULT_IDENTITY_LIST}]
1216  ini:
1217  - {key: vault_identity_list, section: defaults}
1218  type: list
1219  yaml: {key: defaults.vault_identity_list}
1220DEFAULT_VAULT_PASSWORD_FILE:
1221  name: Vault password file
1222  default: ~
1223  description: 'The vault password file to use. Equivalent to --vault-password-file or --vault-id'
1224  env: [{name: ANSIBLE_VAULT_PASSWORD_FILE}]
1225  ini:
1226  - {key: vault_password_file, section: defaults}
1227  type: path
1228  yaml: {key: defaults.vault_password_file}
1229DEFAULT_VERBOSITY:
1230  name: Verbosity
1231  default: 0
1232  description: Sets the default verbosity, equivalent to the number of ``-v`` passed in the command line.
1233  env: [{name: ANSIBLE_VERBOSITY}]
1234  ini:
1235  - {key: verbosity, section: defaults}
1236  type: integer
1237DEPRECATION_WARNINGS:
1238  name: Deprecation messages
1239  default: True
1240  description: "Toggle to control the showing of deprecation warnings"
1241  env: [{name: ANSIBLE_DEPRECATION_WARNINGS}]
1242  ini:
1243  - {key: deprecation_warnings, section: defaults}
1244  type: boolean
1245DEVEL_WARNING:
1246  name: Running devel warning
1247  default: True
1248  description: Toggle to control showing warnings related to running devel
1249  env: [{name: ANSIBLE_DEVEL_WARNING}]
1250  ini:
1251  - {key: devel_warning, section: defaults}
1252  type: boolean
1253DIFF_ALWAYS:
1254  name: Show differences
1255  default: False
1256  description: Configuration toggle to tell modules to show differences when in 'changed' status, equivalent to ``--diff``.
1257  env: [{name: ANSIBLE_DIFF_ALWAYS}]
1258  ini:
1259  - {key: always, section: diff}
1260  type: bool
1261DIFF_CONTEXT:
1262  name: Difference context
1263  default: 3
1264  description: How many lines of context to show when displaying the differences between files.
1265  env: [{name: ANSIBLE_DIFF_CONTEXT}]
1266  ini:
1267  - {key: context, section: diff}
1268  type: integer
1269DISPLAY_ARGS_TO_STDOUT:
1270  name: Show task arguments
1271  default: False
1272  description:
1273    - "Normally ``ansible-playbook`` will print a header for each task that is run.
1274      These headers will contain the name: field from the task if you specified one.
1275      If you didn't then ``ansible-playbook`` uses the task's action to help you tell which task is presently running.
1276      Sometimes you run many of the same action and so you want more information about the task to differentiate it from others of the same action.
1277      If you set this variable to True in the config then ``ansible-playbook`` will also include the task's arguments in the header."
1278    - "This setting defaults to False because there is a chance that you have sensitive values in your parameters and
1279      you do not want those to be printed."
1280    - "If you set this to True you should be sure that you have secured your environment's stdout
1281      (no one can shoulder surf your screen and you aren't saving stdout to an insecure file) or
1282      made sure that all of your playbooks explicitly added the ``no_log: True`` parameter to tasks which have sensitive values
1283      See How do I keep secret data in my playbook? for more information."
1284  env: [{name: ANSIBLE_DISPLAY_ARGS_TO_STDOUT}]
1285  ini:
1286  - {key: display_args_to_stdout, section: defaults}
1287  type: boolean
1288  version_added: "2.1"
1289DISPLAY_SKIPPED_HOSTS:
1290  name: Show skipped results
1291  default: True
1292  description: "Toggle to control displaying skipped task/host entries in a task in the default callback"
1293  env:
1294  - name: DISPLAY_SKIPPED_HOSTS
1295    deprecated:
1296      why: environment variables without ``ANSIBLE_`` prefix are deprecated
1297      version: "2.12"
1298      alternatives: the ``ANSIBLE_DISPLAY_SKIPPED_HOSTS`` environment variable
1299  - name: ANSIBLE_DISPLAY_SKIPPED_HOSTS
1300  ini:
1301  - {key: display_skipped_hosts, section: defaults}
1302  type: boolean
1303DOCSITE_ROOT_URL:
1304  name: Root docsite URL
1305  default: https://docs.ansible.com/ansible-core/
1306  description: Root docsite URL used to generate docs URLs in warning/error text;
1307               must be an absolute URL with valid scheme and trailing slash.
1308  ini:
1309  - {key: docsite_root_url, section: defaults}
1310  version_added: "2.8"
1311DUPLICATE_YAML_DICT_KEY:
1312  name: Controls ansible behaviour when finding duplicate keys in YAML.
1313  default: warn
1314  description:
1315    - By default Ansible will issue a warning when a duplicate dict key is encountered in YAML.
1316    - These warnings can be silenced by adjusting this setting to False.
1317  env: [{name: ANSIBLE_DUPLICATE_YAML_DICT_KEY}]
1318  ini:
1319  - {key: duplicate_dict_key, section: defaults}
1320  type: string
1321  choices: ['warn', 'error', 'ignore']
1322  version_added: "2.9"
1323ERROR_ON_MISSING_HANDLER:
1324  name: Missing handler error
1325  default: True
1326  description: "Toggle to allow missing handlers to become a warning instead of an error when notifying."
1327  env: [{name: ANSIBLE_ERROR_ON_MISSING_HANDLER}]
1328  ini:
1329  - {key: error_on_missing_handler, section: defaults}
1330  type: boolean
1331CONNECTION_FACTS_MODULES:
1332  name: Map of connections to fact modules
1333  default:
1334    # use ansible.legacy names on unqualified facts modules to allow library/ overrides
1335    asa: ansible.legacy.asa_facts
1336    cisco.asa.asa: cisco.asa.asa_facts
1337    eos: ansible.legacy.eos_facts
1338    arista.eos.eos: arista.eos.eos_facts
1339    frr: ansible.legacy.frr_facts
1340    frr.frr.frr: frr.frr.frr_facts
1341    ios: ansible.legacy.ios_facts
1342    cisco.ios.ios: cisco.ios.ios_facts
1343    iosxr: ansible.legacy.iosxr_facts
1344    cisco.iosxr.iosxr: cisco.iosxr.iosxr_facts
1345    junos: ansible.legacy.junos_facts
1346    junipernetworks.junos.junos: junipernetworks.junos.junos_facts
1347    nxos: ansible.legacy.nxos_facts
1348    cisco.nxos.nxos: cisco.nxos.nxos_facts
1349    vyos: ansible.legacy.vyos_facts
1350    vyos.vyos.vyos: vyos.vyos.vyos_facts
1351    exos: ansible.legacy.exos_facts
1352    extreme.exos.exos: extreme.exos.exos_facts
1353    slxos: ansible.legacy.slxos_facts
1354    extreme.slxos.slxos: extreme.slxos.slxos_facts
1355    voss: ansible.legacy.voss_facts
1356    extreme.voss.voss: extreme.voss.voss_facts
1357    ironware: ansible.legacy.ironware_facts
1358    community.network.ironware: community.network.ironware_facts
1359  description: "Which modules to run during a play's fact gathering stage based on connection"
1360  type: dict
1361FACTS_MODULES:
1362  name: Gather Facts Modules
1363  default:
1364    - smart
1365  description: "Which modules to run during a play's fact gathering stage, using the default of 'smart' will try to figure it out based on connection type."
1366  env: [{name: ANSIBLE_FACTS_MODULES}]
1367  ini:
1368    - {key: facts_modules, section: defaults}
1369  type: list
1370  vars:
1371    - name: ansible_facts_modules
1372GALAXY_IGNORE_CERTS:
1373  name: Galaxy validate certs
1374  default: False
1375  description:
1376    - If set to yes, ansible-galaxy will not validate TLS certificates.
1377      This can be useful for testing against a server with a self-signed certificate.
1378  env: [{name: ANSIBLE_GALAXY_IGNORE}]
1379  ini:
1380  - {key: ignore_certs, section: galaxy}
1381  type: boolean
1382GALAXY_ROLE_SKELETON:
1383  name: Galaxy role or collection skeleton directory
1384  default:
1385  description: Role or collection skeleton directory to use as a template for the ``init`` action in ``ansible-galaxy``, same as ``--role-skeleton``.
1386  env: [{name: ANSIBLE_GALAXY_ROLE_SKELETON}]
1387  ini:
1388  - {key: role_skeleton, section: galaxy}
1389  type: path
1390GALAXY_ROLE_SKELETON_IGNORE:
1391  name: Galaxy skeleton ignore
1392  default: ["^.git$", "^.*/.git_keep$"]
1393  description: patterns of files to ignore inside a Galaxy role or collection skeleton directory
1394  env: [{name: ANSIBLE_GALAXY_ROLE_SKELETON_IGNORE}]
1395  ini:
1396  - {key: role_skeleton_ignore, section: galaxy}
1397  type: list
1398# TODO: unused?
1399#GALAXY_SCMS:
1400#  name: Galaxy SCMS
1401#  default: git, hg
1402#  description: Available galaxy source control management systems.
1403#  env: [{name: ANSIBLE_GALAXY_SCMS}]
1404#  ini:
1405#  - {key: scms, section: galaxy}
1406#  type: list
1407GALAXY_SERVER:
1408  default: https://galaxy.ansible.com
1409  description: "URL to prepend when roles don't specify the full URI, assume they are referencing this server as the source."
1410  env: [{name: ANSIBLE_GALAXY_SERVER}]
1411  ini:
1412  - {key: server, section: galaxy}
1413  yaml: {key: galaxy.server}
1414GALAXY_SERVER_LIST:
1415  description:
1416  - A list of Galaxy servers to use when installing a collection.
1417  - The value corresponds to the config ini header ``[galaxy_server.{{item}}]`` which defines the server details.
1418  - 'See :ref:`galaxy_server_config` for more details on how to define a Galaxy server.'
1419  - The order of servers in this list is used to as the order in which a collection is resolved.
1420  - Setting this config option will ignore the :ref:`galaxy_server` config option.
1421  env: [{name: ANSIBLE_GALAXY_SERVER_LIST}]
1422  ini:
1423  - {key: server_list, section: galaxy}
1424  type: list
1425  version_added: "2.9"
1426GALAXY_TOKEN_PATH:
1427  default: ~/.ansible/galaxy_token
1428  description: "Local path to galaxy access token file"
1429  env: [{name: ANSIBLE_GALAXY_TOKEN_PATH}]
1430  ini:
1431  - {key: token_path, section: galaxy}
1432  type: path
1433  version_added: "2.9"
1434GALAXY_DISPLAY_PROGRESS:
1435  default: ~
1436  description:
1437  - Some steps in ``ansible-galaxy`` display a progress wheel which can cause issues on certain displays or when
1438    outputing the stdout to a file.
1439  - This config option controls whether the display wheel is shown or not.
1440  - The default is to show the display wheel if stdout has a tty.
1441  env: [{name: ANSIBLE_GALAXY_DISPLAY_PROGRESS}]
1442  ini:
1443  - {key: display_progress, section: galaxy}
1444  type: bool
1445  version_added: "2.10"
1446GALAXY_CACHE_DIR:
1447  default: ~/.ansible/galaxy_cache
1448  description:
1449  - The directory that stores cached responses from a Galaxy server.
1450  - This is only used by the ``ansible-galaxy collection install`` and ``download`` commands.
1451  - Cache files inside this dir will be ignored if they are world writable.
1452  env:
1453  - name: ANSIBLE_GALAXY_CACHE_DIR
1454  ini:
1455  - section: galaxy
1456    key: cache_dir
1457  type: path
1458  version_added: '2.11'
1459HOST_KEY_CHECKING:
1460  # note: constant not in use by ssh plugin anymore
1461  # TODO: check non ssh connection plugins for use/migration
1462  name: Check host keys
1463  default: True
1464  description: 'Set this to "False" if you want to avoid host key checking by the underlying tools Ansible uses to connect to the host'
1465  env: [{name: ANSIBLE_HOST_KEY_CHECKING}]
1466  ini:
1467  - {key: host_key_checking, section: defaults}
1468  type: boolean
1469HOST_PATTERN_MISMATCH:
1470  name: Control host pattern mismatch behaviour
1471  default: 'warning'
1472  description: This setting changes the behaviour of mismatched host patterns, it allows you to force a fatal error, a warning or just ignore it
1473  env: [{name: ANSIBLE_HOST_PATTERN_MISMATCH}]
1474  ini:
1475  - {key: host_pattern_mismatch, section: inventory}
1476  choices: ['warning', 'error', 'ignore']
1477  version_added: "2.8"
1478INTERPRETER_PYTHON:
1479  name: Python interpreter path (or automatic discovery behavior) used for module execution
1480  default: auto_legacy
1481  env: [{name: ANSIBLE_PYTHON_INTERPRETER}]
1482  ini:
1483  - {key: interpreter_python, section: defaults}
1484  vars:
1485  - {name: ansible_python_interpreter}
1486  version_added: "2.8"
1487  description:
1488  - Path to the Python interpreter to be used for module execution on remote targets, or an automatic discovery mode.
1489    Supported discovery modes are ``auto``, ``auto_silent``, and ``auto_legacy`` (the default). All discovery modes
1490    employ a lookup table to use the included system Python (on distributions known to include one), falling back to a
1491    fixed ordered list of well-known Python interpreter locations if a platform-specific default is not available. The
1492    fallback behavior will issue a warning that the interpreter should be set explicitly (since interpreters installed
1493    later may change which one is used). This warning behavior can be disabled by setting ``auto_silent``. The default
1494    value of ``auto_legacy`` provides all the same behavior, but for backwards-compatibility with older Ansible releases
1495    that always defaulted to ``/usr/bin/python``, will use that interpreter if present (and issue a warning that the
1496    default behavior will change to that of ``auto`` in a future Ansible release.
1497INTERPRETER_PYTHON_DISTRO_MAP:
1498  name: Mapping of known included platform pythons for various Linux distros
1499  default:
1500    centos: &rhelish
1501      '6': /usr/bin/python
1502      '8': /usr/libexec/platform-python
1503    debian:
1504      '8': /usr/bin/python
1505      '10': /usr/bin/python3
1506    fedora:
1507      '23': /usr/bin/python3
1508    oracle: *rhelish
1509    redhat: *rhelish
1510    rhel: *rhelish
1511    ubuntu:
1512      '14': /usr/bin/python
1513      '16': /usr/bin/python3
1514  version_added: "2.8"
1515  # FUTURE: add inventory override once we're sure it can't be abused by a rogue target
1516  # FUTURE: add a platform layer to the map so we could use for, eg, freebsd/macos/etc?
1517INTERPRETER_PYTHON_FALLBACK:
1518  name: Ordered list of Python interpreters to check for in discovery
1519  default:
1520  - /usr/bin/python
1521  - python3.9
1522  - python3.8
1523  - python3.7
1524  - python3.6
1525  - python3.5
1526  - python2.7
1527  - python2.6
1528  - /usr/libexec/platform-python
1529  - /usr/bin/python3
1530  - python
1531  # FUTURE: add inventory override once we're sure it can't be abused by a rogue target
1532  version_added: "2.8"
1533TRANSFORM_INVALID_GROUP_CHARS:
1534  name: Transform invalid characters in group names
1535  default: 'never'
1536  description:
1537    - Make ansible transform invalid characters in group names supplied by inventory sources.
1538    - If 'never' it will allow for the group name but warn about the issue.
1539    - When 'ignore', it does the same as 'never', without issuing a warning.
1540    - When 'always' it will replace any invalid characters with '_' (underscore) and warn the user
1541    - When 'silently', it does the same as 'always', without issuing a warning.
1542  env: [{name: ANSIBLE_TRANSFORM_INVALID_GROUP_CHARS}]
1543  ini:
1544  - {key: force_valid_group_names, section: defaults}
1545  type: string
1546  choices: ['always', 'never', 'ignore', 'silently']
1547  version_added: '2.8'
1548INVALID_TASK_ATTRIBUTE_FAILED:
1549  name: Controls whether invalid attributes for a task result in errors instead of warnings
1550  default: True
1551  description: If 'false', invalid attributes for a task will result in warnings instead of errors
1552  type: boolean
1553  env:
1554    - name: ANSIBLE_INVALID_TASK_ATTRIBUTE_FAILED
1555  ini:
1556    - key: invalid_task_attribute_failed
1557      section: defaults
1558  version_added: "2.7"
1559INVENTORY_ANY_UNPARSED_IS_FAILED:
1560  name: Controls whether any unparseable inventory source is a fatal error
1561  default: False
1562  description: >
1563    If 'true', it is a fatal error when any given inventory source
1564    cannot be successfully parsed by any available inventory plugin;
1565    otherwise, this situation only attracts a warning.
1566  type: boolean
1567  env: [{name: ANSIBLE_INVENTORY_ANY_UNPARSED_IS_FAILED}]
1568  ini:
1569    - {key: any_unparsed_is_failed, section: inventory}
1570  version_added: "2.7"
1571INVENTORY_CACHE_ENABLED:
1572  name: Inventory caching enabled
1573  default: False
1574  description: Toggle to turn on inventory caching
1575  env: [{name: ANSIBLE_INVENTORY_CACHE}]
1576  ini:
1577  - {key: cache, section: inventory}
1578  type: bool
1579INVENTORY_CACHE_PLUGIN:
1580  name: Inventory cache plugin
1581  description: The plugin for caching inventory. If INVENTORY_CACHE_PLUGIN is not provided CACHE_PLUGIN can be used instead.
1582  env: [{name: ANSIBLE_INVENTORY_CACHE_PLUGIN}]
1583  ini:
1584  - {key: cache_plugin, section: inventory}
1585INVENTORY_CACHE_PLUGIN_CONNECTION:
1586  name: Inventory cache plugin URI to override the defaults section
1587  description: The inventory cache connection. If INVENTORY_CACHE_PLUGIN_CONNECTION is not provided CACHE_PLUGIN_CONNECTION can be used instead.
1588  env: [{name: ANSIBLE_INVENTORY_CACHE_CONNECTION}]
1589  ini:
1590  - {key: cache_connection, section: inventory}
1591INVENTORY_CACHE_PLUGIN_PREFIX:
1592  name: Inventory cache plugin table prefix
1593  description: The table prefix for the cache plugin. If INVENTORY_CACHE_PLUGIN_PREFIX is not provided CACHE_PLUGIN_PREFIX can be used instead.
1594  env: [{name: ANSIBLE_INVENTORY_CACHE_PLUGIN_PREFIX}]
1595  default: ansible_facts
1596  ini:
1597  - {key: cache_prefix, section: inventory}
1598INVENTORY_CACHE_TIMEOUT:
1599  name: Inventory cache plugin expiration timeout
1600  description: Expiration timeout for the inventory cache plugin data. If INVENTORY_CACHE_TIMEOUT is not provided CACHE_TIMEOUT can be used instead.
1601  default: 3600
1602  env: [{name: ANSIBLE_INVENTORY_CACHE_TIMEOUT}]
1603  ini:
1604  - {key: cache_timeout, section: inventory}
1605INVENTORY_ENABLED:
1606  name: Active Inventory plugins
1607  default: ['host_list', 'script', 'auto', 'yaml', 'ini', 'toml']
1608  description: List of enabled inventory plugins, it also determines the order in which they are used.
1609  env: [{name: ANSIBLE_INVENTORY_ENABLED}]
1610  ini:
1611  - {key: enable_plugins, section: inventory}
1612  type: list
1613INVENTORY_EXPORT:
1614  name: Set ansible-inventory into export mode
1615  default: False
1616  description: Controls if ansible-inventory will accurately reflect Ansible's view into inventory or its optimized for exporting.
1617  env: [{name: ANSIBLE_INVENTORY_EXPORT}]
1618  ini:
1619  - {key: export, section: inventory}
1620  type: bool
1621INVENTORY_IGNORE_EXTS:
1622  name: Inventory ignore extensions
1623  default: "{{(REJECT_EXTS + ('.orig', '.ini', '.cfg', '.retry'))}}"
1624  description: List of extensions to ignore when using a directory as an inventory source
1625  env: [{name: ANSIBLE_INVENTORY_IGNORE}]
1626  ini:
1627  - {key: inventory_ignore_extensions, section: defaults}
1628  - {key: ignore_extensions, section: inventory}
1629  type: list
1630INVENTORY_IGNORE_PATTERNS:
1631  name: Inventory ignore patterns
1632  default: []
1633  description: List of patterns to ignore when using a directory as an inventory source
1634  env: [{name: ANSIBLE_INVENTORY_IGNORE_REGEX}]
1635  ini:
1636  - {key: inventory_ignore_patterns, section: defaults}
1637  - {key: ignore_patterns, section: inventory}
1638  type: list
1639INVENTORY_UNPARSED_IS_FAILED:
1640  name: Unparsed Inventory failure
1641  default: False
1642  description: >
1643    If 'true' it is a fatal error if every single potential inventory
1644    source fails to parse, otherwise this situation will only attract a
1645    warning.
1646  env: [{name: ANSIBLE_INVENTORY_UNPARSED_FAILED}]
1647  ini:
1648  - {key: unparsed_is_failed, section: inventory}
1649  type: bool
1650MAX_FILE_SIZE_FOR_DIFF:
1651  name: Diff maximum file size
1652  default: 104448
1653  description: Maximum size of files to be considered for diff display
1654  env: [{name: ANSIBLE_MAX_DIFF_SIZE}]
1655  ini:
1656  - {key: max_diff_size, section: defaults}
1657  type: int
1658NETWORK_GROUP_MODULES:
1659  name: Network module families
1660  default: [eos, nxos, ios, iosxr, junos, enos, ce, vyos, sros, dellos9, dellos10, dellos6, asa, aruba, aireos, bigip, ironware, onyx, netconf, exos, voss, slxos]
1661  description: 'TODO: write it'
1662  env:
1663  - name: NETWORK_GROUP_MODULES
1664    deprecated:
1665      why: environment variables without ``ANSIBLE_`` prefix are deprecated
1666      version: "2.12"
1667      alternatives: the ``ANSIBLE_NETWORK_GROUP_MODULES`` environment variable
1668  - name: ANSIBLE_NETWORK_GROUP_MODULES
1669  ini:
1670  - {key: network_group_modules, section: defaults}
1671  type: list
1672  yaml: {key: defaults.network_group_modules}
1673INJECT_FACTS_AS_VARS:
1674  default: True
1675  description:
1676    - Facts are available inside the `ansible_facts` variable, this setting also pushes them as their own vars in the main namespace.
1677    - Unlike inside the `ansible_facts` dictionary, these will have an `ansible_` prefix.
1678  env: [{name: ANSIBLE_INJECT_FACT_VARS}]
1679  ini:
1680  - {key: inject_facts_as_vars, section: defaults}
1681  type: boolean
1682  version_added: "2.5"
1683MODULE_IGNORE_EXTS:
1684  name: Module ignore extensions
1685  default: "{{(REJECT_EXTS + ('.yaml', '.yml', '.ini'))}}"
1686  description:
1687    - List of extensions to ignore when looking for modules to load
1688    - This is for rejecting script and binary module fallback extensions
1689  env: [{name: ANSIBLE_MODULE_IGNORE_EXTS}]
1690  ini:
1691  - {key: module_ignore_exts, section: defaults}
1692  type: list
1693OLD_PLUGIN_CACHE_CLEARING:
1694  description: Previouslly Ansible would only clear some of the plugin loading caches when loading new roles, this led to some behaviours in which a plugin loaded in prevoius plays would be unexpectedly 'sticky'. This setting allows to return to that behaviour.
1695  env: [{name: ANSIBLE_OLD_PLUGIN_CACHE_CLEAR}]
1696  ini:
1697  - {key: old_plugin_cache_clear, section: defaults}
1698  type: boolean
1699  default: False
1700  version_added: "2.8"
1701PARAMIKO_HOST_KEY_AUTO_ADD:
1702  # TODO: move to plugin
1703  default: False
1704  description: 'TODO: write it'
1705  env: [{name: ANSIBLE_PARAMIKO_HOST_KEY_AUTO_ADD}]
1706  ini:
1707  - {key: host_key_auto_add, section: paramiko_connection}
1708  type: boolean
1709PARAMIKO_LOOK_FOR_KEYS:
1710  name: look for keys
1711  default: True
1712  description: 'TODO: write it'
1713  env: [{name: ANSIBLE_PARAMIKO_LOOK_FOR_KEYS}]
1714  ini:
1715  - {key: look_for_keys, section: paramiko_connection}
1716  type: boolean
1717PERSISTENT_CONTROL_PATH_DIR:
1718  name: Persistence socket path
1719  default: ~/.ansible/pc
1720  description: Path to socket to be used by the connection persistence system.
1721  env: [{name: ANSIBLE_PERSISTENT_CONTROL_PATH_DIR}]
1722  ini:
1723  - {key: control_path_dir, section: persistent_connection}
1724  type: path
1725PERSISTENT_CONNECT_TIMEOUT:
1726  name: Persistence timeout
1727  default: 30
1728  description: This controls how long the persistent connection will remain idle before it is destroyed.
1729  env: [{name: ANSIBLE_PERSISTENT_CONNECT_TIMEOUT}]
1730  ini:
1731  - {key: connect_timeout, section: persistent_connection}
1732  type: integer
1733PERSISTENT_CONNECT_RETRY_TIMEOUT:
1734  name: Persistence connection retry timeout
1735  default: 15
1736  description: This controls the retry timeout for persistent connection to connect to the local domain socket.
1737  env: [{name: ANSIBLE_PERSISTENT_CONNECT_RETRY_TIMEOUT}]
1738  ini:
1739  - {key: connect_retry_timeout, section: persistent_connection}
1740  type: integer
1741PERSISTENT_COMMAND_TIMEOUT:
1742  name: Persistence command timeout
1743  default: 30
1744  description: This controls the amount of time to wait for response from remote device before timing out persistent connection.
1745  env: [{name: ANSIBLE_PERSISTENT_COMMAND_TIMEOUT}]
1746  ini:
1747  - {key: command_timeout, section: persistent_connection}
1748  type: int
1749PLAYBOOK_DIR:
1750  name: playbook dir override for non-playbook CLIs (ala --playbook-dir)
1751  version_added: "2.9"
1752  description:
1753    - A number of non-playbook CLIs have a ``--playbook-dir`` argument; this sets the default value for it.
1754  env: [{name: ANSIBLE_PLAYBOOK_DIR}]
1755  ini: [{key: playbook_dir, section: defaults}]
1756  type: path
1757PLAYBOOK_VARS_ROOT:
1758  name: playbook vars files root
1759  default: top
1760  version_added: "2.4.1"
1761  description:
1762    - This sets which playbook dirs will be used as a root to process vars plugins, which includes finding host_vars/group_vars
1763    - The ``top`` option follows the traditional behaviour of using the top playbook in the chain to find the root directory.
1764    - The ``bottom`` option follows the 2.4.0 behaviour of using the current playbook to find the root directory.
1765    - The ``all`` option examines from the first parent to the current playbook.
1766  env: [{name: ANSIBLE_PLAYBOOK_VARS_ROOT}]
1767  ini:
1768  - {key: playbook_vars_root, section: defaults}
1769  choices: [ top, bottom, all ]
1770PLUGIN_FILTERS_CFG:
1771  name: Config file for limiting valid plugins
1772  default: null
1773  version_added: "2.5.0"
1774  description:
1775    - "A path to configuration for filtering which plugins installed on the system are allowed to be used."
1776    - "See :ref:`plugin_filtering_config` for details of the filter file's format."
1777    - " The default is /usr/local/etc/ansible/plugin_filters.yml"
1778  ini:
1779  - key: plugin_filters_cfg
1780    section: default
1781    deprecated:
1782      why: specifying "plugin_filters_cfg" under the "default" section is deprecated
1783      version: "2.12"
1784      alternatives: the "defaults" section instead
1785  - key: plugin_filters_cfg
1786    section: defaults
1787  type: path
1788PYTHON_MODULE_RLIMIT_NOFILE:
1789  name: Adjust maximum file descriptor soft limit during Python module execution
1790  description:
1791  - Attempts to set RLIMIT_NOFILE soft limit to the specified value when executing Python modules (can speed up subprocess usage on
1792    Python 2.x. See https://bugs.python.org/issue11284). The value will be limited by the existing hard limit. Default
1793    value of 0 does not attempt to adjust existing system-defined limits.
1794  default: 0
1795  env:
1796  - {name: ANSIBLE_PYTHON_MODULE_RLIMIT_NOFILE}
1797  ini:
1798  - {key: python_module_rlimit_nofile, section: defaults}
1799  vars:
1800  - {name: ansible_python_module_rlimit_nofile}
1801  version_added: '2.8'
1802RETRY_FILES_ENABLED:
1803  name: Retry files
1804  default: False
1805  description: This controls whether a failed Ansible playbook should create a .retry file.
1806  env: [{name: ANSIBLE_RETRY_FILES_ENABLED}]
1807  ini:
1808  - {key: retry_files_enabled, section: defaults}
1809  type: bool
1810RETRY_FILES_SAVE_PATH:
1811  name: Retry files path
1812  default: ~
1813  description:
1814    - This sets the path in which Ansible will save .retry files when a playbook fails and retry files are enabled.
1815    - This file will be overwritten after each run with the list of failed hosts from all plays.
1816  env: [{name: ANSIBLE_RETRY_FILES_SAVE_PATH}]
1817  ini:
1818  - {key: retry_files_save_path, section: defaults}
1819  type: path
1820RUN_VARS_PLUGINS:
1821  name: When should vars plugins run relative to inventory
1822  default: demand
1823  description:
1824    - This setting can be used to optimize vars_plugin usage depending on user's inventory size and play selection.
1825    - Setting to C(demand) will run vars_plugins relative to inventory sources anytime vars are 'demanded' by tasks.
1826    - Setting to C(start) will run vars_plugins relative to inventory sources after importing that inventory source.
1827  env: [{name: ANSIBLE_RUN_VARS_PLUGINS}]
1828  ini:
1829  - {key: run_vars_plugins, section: defaults}
1830  type: str
1831  choices: ['demand', 'start']
1832  version_added: "2.10"
1833SHOW_CUSTOM_STATS:
1834  name: Display custom stats
1835  default: False
1836  description: 'This adds the custom stats set via the set_stats plugin to the default output'
1837  env: [{name: ANSIBLE_SHOW_CUSTOM_STATS}]
1838  ini:
1839  - {key: show_custom_stats, section: defaults}
1840  type: bool
1841STRING_TYPE_FILTERS:
1842  name: Filters to preserve strings
1843  default: [string, to_json, to_nice_json, to_yaml, to_nice_yaml, ppretty, json]
1844  description:
1845    - "This list of filters avoids 'type conversion' when templating variables"
1846    - Useful when you want to avoid conversion into lists or dictionaries for JSON strings, for example.
1847  env: [{name: ANSIBLE_STRING_TYPE_FILTERS}]
1848  ini:
1849  - {key: dont_type_filters, section: jinja2}
1850  type: list
1851SYSTEM_WARNINGS:
1852  name: System warnings
1853  default: True
1854  description:
1855    - Allows disabling of warnings related to potential issues on the system running ansible itself (not on the managed hosts)
1856    - These may include warnings about 3rd party packages or other conditions that should be resolved if possible.
1857  env: [{name: ANSIBLE_SYSTEM_WARNINGS}]
1858  ini:
1859  - {key: system_warnings, section: defaults}
1860  type: boolean
1861TAGS_RUN:
1862  name: Run Tags
1863  default: []
1864  type: list
1865  description: default list of tags to run in your plays, Skip Tags has precedence.
1866  env: [{name: ANSIBLE_RUN_TAGS}]
1867  ini:
1868  - {key: run, section: tags}
1869  version_added: "2.5"
1870TAGS_SKIP:
1871  name: Skip Tags
1872  default: []
1873  type: list
1874  description: default list of tags to skip in your plays, has precedence over Run Tags
1875  env: [{name: ANSIBLE_SKIP_TAGS}]
1876  ini:
1877  - {key: skip, section: tags}
1878  version_added: "2.5"
1879TASK_TIMEOUT:
1880  name: Task Timeout
1881  default: 0
1882  description:
1883    - Set the maximum time (in seconds) that a task can run for.
1884    - If set to 0 (the default) there is no timeout.
1885  env: [{name: ANSIBLE_TASK_TIMEOUT}]
1886  ini:
1887  - {key: task_timeout, section: defaults}
1888  type: integer
1889  version_added: '2.10'
1890WORKER_SHUTDOWN_POLL_COUNT:
1891  name: Worker Shutdown Poll Count
1892  default: 0
1893  description:
1894    - The maximum number of times to check Task Queue Manager worker processes to verify they have exited cleanly.
1895    - After this limit is reached any worker processes still running will be terminated.
1896    - This is for internal use only.
1897  env: [{name: ANSIBLE_WORKER_SHUTDOWN_POLL_COUNT}]
1898  type: integer
1899  version_added: '2.10'
1900WORKER_SHUTDOWN_POLL_DELAY:
1901  name: Worker Shutdown Poll Delay
1902  default: 0.1
1903  description:
1904    - The number of seconds to sleep between polling loops when checking Task Queue Manager worker processes to verify they have exited cleanly.
1905    - This is for internal use only.
1906  env: [{name: ANSIBLE_WORKER_SHUTDOWN_POLL_DELAY}]
1907  type: float
1908  version_added: '2.10'
1909USE_PERSISTENT_CONNECTIONS:
1910  name: Persistence
1911  default: False
1912  description: Toggles the use of persistence for connections.
1913  env: [{name: ANSIBLE_USE_PERSISTENT_CONNECTIONS}]
1914  ini:
1915  - {key: use_persistent_connections, section: defaults}
1916  type: boolean
1917VARIABLE_PLUGINS_ENABLED:
1918  name: Vars plugin enabled list
1919  default: ['host_group_vars']
1920  description: Whitelist for variable plugins that require it.
1921  env: [{name: ANSIBLE_VARS_ENABLED}]
1922  ini:
1923  - {key: vars_plugins_enabled, section: defaults}
1924  type: list
1925  version_added: "2.10"
1926VARIABLE_PRECEDENCE:
1927  name: Group variable precedence
1928  default: ['all_inventory', 'groups_inventory', 'all_plugins_inventory', 'all_plugins_play', 'groups_plugins_inventory', 'groups_plugins_play']
1929  description: Allows to change the group variable precedence merge order.
1930  env: [{name: ANSIBLE_PRECEDENCE}]
1931  ini:
1932  - {key: precedence, section: defaults}
1933  type: list
1934  version_added: "2.4"
1935WIN_ASYNC_STARTUP_TIMEOUT:
1936  name: Windows Async Startup Timeout
1937  default: 5
1938  description:
1939    - For asynchronous tasks in Ansible (covered in Asynchronous Actions and Polling),
1940      this is how long, in seconds, to wait for the task spawned by Ansible to connect back to the named pipe used
1941      on Windows systems. The default is 5 seconds. This can be too low on slower systems, or systems under heavy load.
1942    - This is not the total time an async command can run for, but is a separate timeout to wait for an async command to
1943      start. The task will only start to be timed against its async_timeout once it has connected to the pipe, so the
1944      overall maximum duration the task can take will be extended by the amount specified here.
1945  env: [{name: ANSIBLE_WIN_ASYNC_STARTUP_TIMEOUT}]
1946  ini:
1947    - {key: win_async_startup_timeout, section: defaults}
1948  type: integer
1949  vars:
1950    - {name: ansible_win_async_startup_timeout}
1951  version_added: '2.10'
1952YAML_FILENAME_EXTENSIONS:
1953  name: Valid YAML extensions
1954  default: [".yml", ".yaml", ".json"]
1955  description:
1956    - "Check all of these extensions when looking for 'variable' files which should be YAML or JSON or vaulted versions of these."
1957    - 'This affects vars_files, include_vars, inventory and vars plugins among others.'
1958  env:
1959    - name: ANSIBLE_YAML_FILENAME_EXT
1960  ini:
1961    - section: defaults
1962      key: yaml_valid_extensions
1963  type: list
1964NETCONF_SSH_CONFIG:
1965  description: This variable is used to enable bastion/jump host with netconf connection. If set to True the bastion/jump
1966               host ssh settings should be present in ~/.ssh/config file, alternatively it can be set
1967               to custom ssh configuration file path to read the bastion/jump host settings.
1968  env: [{name: ANSIBLE_NETCONF_SSH_CONFIG}]
1969  ini:
1970  - {key: ssh_config, section: netconf_connection}
1971  yaml: {key: netconf_connection.ssh_config}
1972  default: null
1973STRING_CONVERSION_ACTION:
1974  version_added: '2.8'
1975  description:
1976    - Action to take when a module parameter value is converted to a string (this does not affect variables).
1977      For string parameters, values such as '1.00', "['a', 'b',]", and 'yes', 'y', etc.
1978      will be converted by the YAML parser unless fully quoted.
1979    - Valid options are 'error', 'warn', and 'ignore'.
1980    - Since 2.8, this option defaults to 'warn' but will change to 'error' in 2.12.
1981  default: 'warn'
1982  env:
1983    - name: ANSIBLE_STRING_CONVERSION_ACTION
1984  ini:
1985    - section: defaults
1986      key: string_conversion_action
1987  type: string
1988VERBOSE_TO_STDERR:
1989  version_added: '2.8'
1990  description:
1991    - Force 'verbose' option to use stderr instead of stdout
1992  default: False
1993  env:
1994    - name: ANSIBLE_VERBOSE_TO_STDERR
1995  ini:
1996    - section: defaults
1997      key: verbose_to_stderr
1998  type: bool
1999...
2000