ansible-core 2.18.5rc1__py3-none-any.whl → 2.19.0b2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (710) hide show
  1. ansible/_internal/__init__.py +53 -0
  2. ansible/_internal/_ansiballz.py +265 -0
  3. ansible/_internal/_collection_proxy.py +47 -0
  4. ansible/_internal/_datatag/__init__.py +0 -0
  5. ansible/_internal/_datatag/_tags.py +130 -0
  6. ansible/_internal/_datatag/_utils.py +19 -0
  7. ansible/_internal/_datatag/_wrappers.py +33 -0
  8. ansible/_internal/_errors/__init__.py +0 -0
  9. ansible/_internal/_errors/_captured.py +128 -0
  10. ansible/_internal/_errors/_handler.py +91 -0
  11. ansible/_internal/_errors/_utils.py +310 -0
  12. ansible/_internal/_json/__init__.py +203 -0
  13. ansible/_internal/_json/_legacy_encoder.py +34 -0
  14. ansible/_internal/_json/_profiles/__init__.py +0 -0
  15. ansible/_internal/_json/_profiles/_cache_persistence.py +55 -0
  16. ansible/_internal/_json/_profiles/_inventory_legacy.py +40 -0
  17. ansible/_internal/_json/_profiles/_legacy.py +197 -0
  18. ansible/_internal/_locking.py +21 -0
  19. ansible/_internal/_plugins/__init__.py +0 -0
  20. ansible/_internal/_plugins/_cache.py +57 -0
  21. ansible/_internal/_task.py +78 -0
  22. ansible/_internal/_templating/__init__.py +10 -0
  23. ansible/_internal/_templating/_access.py +86 -0
  24. ansible/_internal/_templating/_chain_templar.py +63 -0
  25. ansible/_internal/_templating/_datatag.py +95 -0
  26. ansible/_internal/_templating/_engine.py +588 -0
  27. ansible/_internal/_templating/_errors.py +28 -0
  28. ansible/_internal/_templating/_jinja_bits.py +1066 -0
  29. ansible/_internal/_templating/_jinja_common.py +332 -0
  30. ansible/_internal/_templating/_jinja_patches.py +44 -0
  31. ansible/_internal/_templating/_jinja_plugins.py +345 -0
  32. ansible/_internal/_templating/_lazy_containers.py +633 -0
  33. ansible/_internal/_templating/_marker_behaviors.py +103 -0
  34. ansible/_internal/_templating/_transform.py +63 -0
  35. ansible/_internal/_templating/_utils.py +107 -0
  36. ansible/_internal/_wrapt.py +1052 -0
  37. ansible/_internal/_yaml/__init__.py +0 -0
  38. ansible/_internal/_yaml/_constructor.py +240 -0
  39. ansible/_internal/_yaml/_dumper.py +62 -0
  40. ansible/_internal/_yaml/_errors.py +166 -0
  41. ansible/_internal/_yaml/_loader.py +66 -0
  42. ansible/_internal/ansible_collections/ansible/_protomatter/README.md +11 -0
  43. ansible/_internal/ansible_collections/ansible/_protomatter/plugins/action/debug.py +36 -0
  44. ansible/_internal/ansible_collections/ansible/_protomatter/plugins/filter/apply_trust.py +19 -0
  45. ansible/_internal/ansible_collections/ansible/_protomatter/plugins/filter/dump_object.py +18 -0
  46. ansible/_internal/ansible_collections/ansible/_protomatter/plugins/filter/finalize.py +16 -0
  47. ansible/_internal/ansible_collections/ansible/_protomatter/plugins/filter/origin.py +18 -0
  48. ansible/_internal/ansible_collections/ansible/_protomatter/plugins/filter/python_literal_eval.py +24 -0
  49. ansible/_internal/ansible_collections/ansible/_protomatter/plugins/filter/python_literal_eval.yml +33 -0
  50. ansible/_internal/ansible_collections/ansible/_protomatter/plugins/filter/tag_names.py +16 -0
  51. ansible/_internal/ansible_collections/ansible/_protomatter/plugins/filter/true_type.py +17 -0
  52. ansible/_internal/ansible_collections/ansible/_protomatter/plugins/filter/unmask.py +49 -0
  53. ansible/_internal/ansible_collections/ansible/_protomatter/plugins/lookup/config.py +21 -0
  54. ansible/_internal/ansible_collections/ansible/_protomatter/plugins/lookup/config.yml +2 -0
  55. ansible/_internal/ansible_collections/ansible/_protomatter/plugins/test/tagged.py +15 -0
  56. ansible/_internal/ansible_collections/ansible/_protomatter/plugins/test/tagged.yml +19 -0
  57. ansible/_internal/ansible_collections/ansible/_protomatter/plugins/test/tagged_with.py +18 -0
  58. ansible/_internal/ansible_collections/ansible/_protomatter/plugins/test/tagged_with.yml +19 -0
  59. ansible/cli/__init__.py +159 -89
  60. ansible/cli/_ssh_askpass.py +47 -0
  61. ansible/cli/adhoc.py +14 -7
  62. ansible/cli/arguments/option_helpers.py +154 -7
  63. ansible/cli/config.py +43 -68
  64. ansible/cli/console.py +10 -8
  65. ansible/cli/doc.py +62 -53
  66. ansible/cli/galaxy.py +27 -20
  67. ansible/cli/inventory.py +28 -26
  68. ansible/cli/playbook.py +4 -12
  69. ansible/cli/pull.py +51 -11
  70. ansible/cli/scripts/ansible_connection_cli_stub.py +7 -7
  71. ansible/cli/vault.py +12 -11
  72. ansible/compat/__init__.py +2 -2
  73. ansible/config/base.yml +166 -112
  74. ansible/config/manager.py +52 -49
  75. ansible/constants.py +3 -4
  76. ansible/errors/__init__.py +277 -235
  77. ansible/executor/interpreter_discovery.py +28 -149
  78. ansible/executor/module_common.py +426 -493
  79. ansible/executor/play_iterator.py +22 -27
  80. ansible/executor/playbook_executor.py +11 -11
  81. ansible/executor/powershell/async_watchdog.ps1 +97 -102
  82. ansible/executor/powershell/async_wrapper.ps1 +202 -151
  83. ansible/executor/powershell/become_wrapper.ps1 +89 -144
  84. ansible/executor/powershell/bootstrap_wrapper.ps1 +24 -9
  85. ansible/executor/powershell/coverage_wrapper.ps1 +82 -135
  86. ansible/executor/powershell/exec_wrapper.ps1 +462 -196
  87. ansible/executor/powershell/module_manifest.py +417 -265
  88. ansible/executor/powershell/module_wrapper.ps1 +169 -186
  89. ansible/executor/powershell/psrp_fetch_file.ps1 +41 -0
  90. ansible/executor/powershell/psrp_put_file.ps1 +122 -0
  91. ansible/executor/powershell/winrm_fetch_file.ps1 +46 -0
  92. ansible/executor/powershell/winrm_put_file.ps1 +36 -0
  93. ansible/executor/process/worker.py +161 -96
  94. ansible/executor/stats.py +5 -5
  95. ansible/executor/task_executor.py +268 -258
  96. ansible/executor/task_queue_manager.py +124 -90
  97. ansible/executor/task_result.py +183 -78
  98. ansible/galaxy/__init__.py +2 -2
  99. ansible/galaxy/api.py +22 -18
  100. ansible/galaxy/collection/__init__.py +1 -1
  101. ansible/galaxy/collection/concrete_artifact_manager.py +8 -11
  102. ansible/galaxy/dependency_resolution/dataclasses.py +14 -4
  103. ansible/galaxy/dependency_resolution/providers.py +1 -1
  104. ansible/galaxy/dependency_resolution/reporters.py +81 -0
  105. ansible/galaxy/role.py +4 -8
  106. ansible/galaxy/token.py +28 -21
  107. ansible/inventory/data.py +47 -57
  108. ansible/inventory/group.py +44 -72
  109. ansible/inventory/helpers.py +9 -0
  110. ansible/inventory/host.py +32 -54
  111. ansible/inventory/manager.py +78 -34
  112. ansible/keyword_desc.yml +1 -1
  113. ansible/module_utils/_internal/__init__.py +55 -0
  114. ansible/module_utils/_internal/_ambient_context.py +58 -0
  115. ansible/module_utils/_internal/_ansiballz.py +133 -0
  116. ansible/module_utils/_internal/_concurrent/_daemon_threading.py +1 -0
  117. ansible/module_utils/_internal/_dataclass_annotation_patch.py +64 -0
  118. ansible/module_utils/_internal/_dataclass_validation.py +217 -0
  119. ansible/module_utils/_internal/_datatag/__init__.py +928 -0
  120. ansible/module_utils/_internal/_datatag/_tags.py +38 -0
  121. ansible/module_utils/_internal/_debugging.py +31 -0
  122. ansible/module_utils/_internal/_errors.py +30 -0
  123. ansible/module_utils/_internal/_json/__init__.py +63 -0
  124. ansible/module_utils/_internal/_json/_legacy_encoder.py +26 -0
  125. ansible/module_utils/_internal/_json/_profiles/__init__.py +410 -0
  126. ansible/module_utils/_internal/_json/_profiles/_fallback_to_str.py +73 -0
  127. ansible/module_utils/_internal/_json/_profiles/_module_legacy_c2m.py +31 -0
  128. ansible/module_utils/_internal/_json/_profiles/_module_legacy_m2c.py +35 -0
  129. ansible/module_utils/_internal/_json/_profiles/_module_modern_c2m.py +35 -0
  130. ansible/module_utils/_internal/_json/_profiles/_module_modern_m2c.py +33 -0
  131. ansible/module_utils/_internal/_json/_profiles/_tagless.py +50 -0
  132. ansible/module_utils/_internal/_patches/__init__.py +66 -0
  133. ansible/module_utils/_internal/_patches/_dataclass_annotation_patch.py +55 -0
  134. ansible/module_utils/_internal/_patches/_socket_patch.py +34 -0
  135. ansible/module_utils/_internal/_patches/_sys_intern_patch.py +34 -0
  136. ansible/module_utils/_internal/_plugin_exec_context.py +49 -0
  137. ansible/module_utils/_internal/_testing.py +0 -0
  138. ansible/module_utils/_internal/_traceback.py +89 -0
  139. ansible/module_utils/ansible_release.py +2 -2
  140. ansible/module_utils/api.py +1 -2
  141. ansible/module_utils/basic.py +152 -120
  142. ansible/module_utils/common/_utils.py +24 -28
  143. ansible/module_utils/common/collections.py +1 -2
  144. ansible/module_utils/common/dict_transformations.py +2 -2
  145. ansible/module_utils/common/file.py +2 -2
  146. ansible/module_utils/common/json.py +90 -84
  147. ansible/module_utils/common/locale.py +2 -2
  148. ansible/module_utils/common/messages.py +108 -0
  149. ansible/module_utils/common/parameters.py +27 -24
  150. ansible/module_utils/common/process.py +2 -2
  151. ansible/module_utils/common/respawn.py +41 -19
  152. ansible/module_utils/common/sentinel.py +66 -0
  153. ansible/module_utils/common/sys_info.py +8 -8
  154. ansible/module_utils/common/text/converters.py +16 -37
  155. ansible/module_utils/common/validation.py +35 -24
  156. ansible/module_utils/common/warnings.py +86 -25
  157. ansible/module_utils/common/yaml.py +29 -3
  158. ansible/module_utils/compat/datetime.py +33 -21
  159. ansible/module_utils/compat/paramiko.py +21 -10
  160. ansible/module_utils/compat/typing.py +6 -5
  161. ansible/module_utils/connection.py +2 -2
  162. ansible/module_utils/csharp/Ansible.Basic.cs +14 -11
  163. ansible/module_utils/csharp/Ansible.Become.cs +1 -0
  164. ansible/module_utils/csharp/Ansible._Async.cs +517 -0
  165. ansible/module_utils/datatag.py +46 -0
  166. ansible/module_utils/distro/__init__.py +2 -2
  167. ansible/module_utils/facts/ansible_collector.py +4 -5
  168. ansible/module_utils/facts/collector.py +13 -14
  169. ansible/module_utils/facts/compat.py +4 -4
  170. ansible/module_utils/facts/default_collectors.py +1 -1
  171. ansible/module_utils/facts/hardware/aix.py +34 -0
  172. ansible/module_utils/facts/hardware/base.py +1 -1
  173. ansible/module_utils/facts/hardware/darwin.py +1 -3
  174. ansible/module_utils/facts/hardware/freebsd.py +2 -2
  175. ansible/module_utils/facts/hardware/linux.py +4 -4
  176. ansible/module_utils/facts/namespace.py +1 -1
  177. ansible/module_utils/facts/network/base.py +1 -1
  178. ansible/module_utils/facts/network/fc_wwn.py +1 -2
  179. ansible/module_utils/facts/network/iscsi.py +1 -2
  180. ansible/module_utils/facts/network/nvme.py +1 -2
  181. ansible/module_utils/facts/other/facter.py +1 -2
  182. ansible/module_utils/facts/other/ohai.py +2 -3
  183. ansible/module_utils/facts/system/apparmor.py +1 -2
  184. ansible/module_utils/facts/system/caps.py +1 -1
  185. ansible/module_utils/facts/system/chroot.py +1 -2
  186. ansible/module_utils/facts/system/cmdline.py +1 -2
  187. ansible/module_utils/facts/system/date_time.py +5 -3
  188. ansible/module_utils/facts/system/distribution.py +9 -8
  189. ansible/module_utils/facts/system/dns.py +1 -1
  190. ansible/module_utils/facts/system/env.py +1 -2
  191. ansible/module_utils/facts/system/fips.py +7 -20
  192. ansible/module_utils/facts/system/loadavg.py +1 -2
  193. ansible/module_utils/facts/system/local.py +1 -2
  194. ansible/module_utils/facts/system/lsb.py +1 -2
  195. ansible/module_utils/facts/system/pkg_mgr.py +1 -2
  196. ansible/module_utils/facts/system/platform.py +1 -2
  197. ansible/module_utils/facts/system/python.py +1 -2
  198. ansible/module_utils/facts/system/selinux.py +1 -1
  199. ansible/module_utils/facts/system/service_mgr.py +1 -2
  200. ansible/module_utils/facts/system/ssh_pub_keys.py +1 -1
  201. ansible/module_utils/facts/system/systemd.py +1 -1
  202. ansible/module_utils/facts/system/user.py +1 -2
  203. ansible/module_utils/facts/utils.py +3 -3
  204. ansible/module_utils/facts/virtual/base.py +1 -1
  205. ansible/module_utils/facts/virtual/sunos.py +3 -15
  206. ansible/module_utils/facts/virtual/sysctl.py +3 -16
  207. ansible/module_utils/json_utils.py +2 -2
  208. ansible/module_utils/parsing/convert_bool.py +1 -1
  209. ansible/module_utils/service.py +18 -21
  210. ansible/module_utils/splitter.py +7 -7
  211. ansible/module_utils/testing.py +31 -0
  212. ansible/module_utils/urls.py +60 -31
  213. ansible/modules/add_host.py +4 -4
  214. ansible/modules/apt.py +60 -46
  215. ansible/modules/apt_key.py +19 -12
  216. ansible/modules/apt_repository.py +19 -16
  217. ansible/modules/assemble.py +6 -6
  218. ansible/modules/assert.py +4 -4
  219. ansible/modules/async_status.py +10 -12
  220. ansible/modules/async_wrapper.py +8 -3
  221. ansible/modules/blockinfile.py +6 -7
  222. ansible/modules/command.py +10 -17
  223. ansible/modules/copy.py +57 -144
  224. ansible/modules/cron.py +20 -15
  225. ansible/modules/deb822_repository.py +8 -9
  226. ansible/modules/debconf.py +5 -5
  227. ansible/modules/debug.py +4 -4
  228. ansible/modules/dnf.py +8 -8
  229. ansible/modules/dnf5.py +39 -13
  230. ansible/modules/dpkg_selections.py +4 -4
  231. ansible/modules/expect.py +8 -10
  232. ansible/modules/fail.py +4 -4
  233. ansible/modules/fetch.py +4 -4
  234. ansible/modules/file.py +174 -133
  235. ansible/modules/find.py +19 -17
  236. ansible/modules/gather_facts.py +3 -3
  237. ansible/modules/get_url.py +59 -53
  238. ansible/modules/getent.py +7 -9
  239. ansible/modules/git.py +28 -25
  240. ansible/modules/group.py +6 -6
  241. ansible/modules/group_by.py +4 -4
  242. ansible/modules/hostname.py +13 -29
  243. ansible/modules/import_playbook.py +6 -6
  244. ansible/modules/import_role.py +6 -6
  245. ansible/modules/import_tasks.py +6 -6
  246. ansible/modules/include_role.py +6 -6
  247. ansible/modules/include_tasks.py +6 -6
  248. ansible/modules/include_vars.py +6 -6
  249. ansible/modules/iptables.py +86 -73
  250. ansible/modules/known_hosts.py +10 -10
  251. ansible/modules/lineinfile.py +5 -5
  252. ansible/modules/meta.py +4 -4
  253. ansible/modules/mount_facts.py +2 -2
  254. ansible/modules/package.py +4 -4
  255. ansible/modules/package_facts.py +22 -10
  256. ansible/modules/pause.py +6 -6
  257. ansible/modules/ping.py +6 -6
  258. ansible/modules/pip.py +10 -11
  259. ansible/modules/raw.py +4 -4
  260. ansible/modules/reboot.py +6 -6
  261. ansible/modules/replace.py +9 -13
  262. ansible/modules/rpm_key.py +7 -8
  263. ansible/modules/script.py +4 -4
  264. ansible/modules/service.py +7 -8
  265. ansible/modules/service_facts.py +87 -10
  266. ansible/modules/set_fact.py +5 -5
  267. ansible/modules/set_stats.py +4 -4
  268. ansible/modules/setup.py +2 -2
  269. ansible/modules/shell.py +6 -6
  270. ansible/modules/slurp.py +6 -6
  271. ansible/modules/stat.py +9 -23
  272. ansible/modules/subversion.py +15 -15
  273. ansible/modules/systemd.py +6 -6
  274. ansible/modules/systemd_service.py +6 -6
  275. ansible/modules/sysvinit.py +6 -6
  276. ansible/modules/tempfile.py +5 -6
  277. ansible/modules/template.py +6 -6
  278. ansible/modules/unarchive.py +32 -11
  279. ansible/modules/uri.py +33 -26
  280. ansible/modules/user.py +53 -34
  281. ansible/modules/validate_argument_spec.py +10 -7
  282. ansible/modules/wait_for.py +32 -27
  283. ansible/modules/wait_for_connection.py +6 -6
  284. ansible/modules/yum_repository.py +6 -6
  285. ansible/parsing/ajson.py +14 -32
  286. ansible/parsing/dataloader.py +99 -54
  287. ansible/parsing/mod_args.py +28 -44
  288. ansible/parsing/plugin_docs.py +21 -86
  289. ansible/parsing/quoting.py +1 -1
  290. ansible/parsing/splitter.py +27 -12
  291. ansible/parsing/utils/addresses.py +24 -24
  292. ansible/parsing/utils/jsonify.py +5 -1
  293. ansible/parsing/utils/yaml.py +32 -61
  294. ansible/parsing/vault/__init__.py +319 -87
  295. ansible/parsing/yaml/__init__.py +0 -18
  296. ansible/parsing/yaml/dumper.py +6 -120
  297. ansible/parsing/yaml/loader.py +6 -39
  298. ansible/parsing/yaml/objects.py +43 -335
  299. ansible/playbook/__init__.py +1 -1
  300. ansible/playbook/attribute.py +8 -3
  301. ansible/playbook/base.py +182 -132
  302. ansible/playbook/block.py +26 -24
  303. ansible/playbook/collectionsearch.py +1 -15
  304. ansible/playbook/conditional.py +3 -77
  305. ansible/playbook/handler.py +8 -2
  306. ansible/playbook/helpers.py +41 -53
  307. ansible/playbook/included_file.py +31 -27
  308. ansible/playbook/loop_control.py +2 -2
  309. ansible/playbook/play.py +85 -44
  310. ansible/playbook/play_context.py +12 -17
  311. ansible/playbook/playbook_include.py +14 -15
  312. ansible/playbook/role/__init__.py +24 -26
  313. ansible/playbook/role/definition.py +15 -17
  314. ansible/playbook/role/include.py +2 -4
  315. ansible/playbook/role/metadata.py +10 -11
  316. ansible/playbook/role_include.py +3 -3
  317. ansible/playbook/taggable.py +13 -8
  318. ansible/playbook/task.py +188 -118
  319. ansible/playbook/task_include.py +5 -5
  320. ansible/plugins/__init__.py +68 -21
  321. ansible/plugins/action/__init__.py +209 -176
  322. ansible/plugins/action/add_host.py +1 -1
  323. ansible/plugins/action/assemble.py +1 -1
  324. ansible/plugins/action/assert.py +54 -66
  325. ansible/plugins/action/copy.py +7 -11
  326. ansible/plugins/action/debug.py +37 -31
  327. ansible/plugins/action/dnf.py +3 -4
  328. ansible/plugins/action/fail.py +1 -1
  329. ansible/plugins/action/fetch.py +4 -5
  330. ansible/plugins/action/gather_facts.py +7 -6
  331. ansible/plugins/action/group_by.py +1 -1
  332. ansible/plugins/action/include_vars.py +10 -11
  333. ansible/plugins/action/package.py +3 -6
  334. ansible/plugins/action/pause.py +2 -2
  335. ansible/plugins/action/script.py +15 -8
  336. ansible/plugins/action/service.py +6 -11
  337. ansible/plugins/action/set_fact.py +3 -12
  338. ansible/plugins/action/set_stats.py +3 -8
  339. ansible/plugins/action/template.py +35 -59
  340. ansible/plugins/action/unarchive.py +1 -1
  341. ansible/plugins/action/validate_argument_spec.py +5 -5
  342. ansible/plugins/action/wait_for_connection.py +1 -1
  343. ansible/plugins/become/__init__.py +31 -8
  344. ansible/plugins/become/runas.py +71 -0
  345. ansible/plugins/become/su.py +13 -8
  346. ansible/plugins/become/sudo.py +19 -0
  347. ansible/plugins/cache/__init__.py +35 -44
  348. ansible/plugins/cache/base.py +8 -0
  349. ansible/plugins/cache/jsonfile.py +10 -16
  350. ansible/plugins/cache/memory.py +6 -12
  351. ansible/plugins/callback/__init__.py +284 -179
  352. ansible/plugins/callback/default.py +99 -92
  353. ansible/plugins/callback/junit.py +44 -39
  354. ansible/plugins/callback/minimal.py +28 -25
  355. ansible/plugins/callback/oneline.py +28 -21
  356. ansible/plugins/callback/tree.py +16 -11
  357. ansible/plugins/connection/__init__.py +47 -34
  358. ansible/plugins/connection/local.py +150 -54
  359. ansible/plugins/connection/paramiko_ssh.py +21 -18
  360. ansible/plugins/connection/psrp.py +76 -165
  361. ansible/plugins/connection/ssh.py +301 -78
  362. ansible/plugins/connection/winrm.py +58 -140
  363. ansible/plugins/doc_fragments/action_common_attributes.py +14 -14
  364. ansible/plugins/doc_fragments/action_core.py +6 -6
  365. ansible/plugins/doc_fragments/backup.py +2 -2
  366. ansible/plugins/doc_fragments/checksum_common.py +27 -0
  367. ansible/plugins/doc_fragments/constructed.py +6 -2
  368. ansible/plugins/doc_fragments/decrypt.py +2 -2
  369. ansible/plugins/doc_fragments/default_callback.py +2 -2
  370. ansible/plugins/doc_fragments/files.py +2 -2
  371. ansible/plugins/doc_fragments/inventory_cache.py +2 -2
  372. ansible/plugins/doc_fragments/result_format_callback.py +2 -2
  373. ansible/plugins/doc_fragments/return_common.py +2 -2
  374. ansible/plugins/doc_fragments/template_common.py +4 -4
  375. ansible/plugins/doc_fragments/url.py +17 -1
  376. ansible/plugins/doc_fragments/url_windows.py +2 -2
  377. ansible/plugins/doc_fragments/validate.py +2 -2
  378. ansible/plugins/doc_fragments/vars_plugin_staging.py +2 -2
  379. ansible/plugins/filter/__init__.py +6 -2
  380. ansible/plugins/filter/b64decode.yml +22 -0
  381. ansible/plugins/filter/b64encode.yml +22 -0
  382. ansible/plugins/filter/bool.yml +11 -4
  383. ansible/plugins/filter/core.py +225 -108
  384. ansible/plugins/filter/encryption.py +32 -32
  385. ansible/plugins/filter/flatten.yml +3 -2
  386. ansible/plugins/filter/human_to_bytes.yml +1 -1
  387. ansible/plugins/filter/mathstuff.py +30 -37
  388. ansible/plugins/filter/password_hash.yml +8 -0
  389. ansible/plugins/filter/regex_search.yml +1 -4
  390. ansible/plugins/filter/split.yml +1 -1
  391. ansible/plugins/filter/to_nice_yaml.yml +0 -4
  392. ansible/plugins/filter/to_yaml.yml +0 -4
  393. ansible/plugins/filter/unvault.yml +1 -1
  394. ansible/plugins/filter/urls.py +1 -1
  395. ansible/plugins/filter/urlsplit.py +8 -9
  396. ansible/plugins/filter/vault.yml +14 -9
  397. ansible/plugins/filter/win_basename.yml +6 -1
  398. ansible/plugins/filter/win_dirname.yml +5 -0
  399. ansible/plugins/inventory/__init__.py +97 -77
  400. ansible/plugins/inventory/advanced_host_list.py +7 -5
  401. ansible/plugins/inventory/auto.py +11 -4
  402. ansible/plugins/inventory/constructed.py +21 -24
  403. ansible/plugins/inventory/generator.py +16 -11
  404. ansible/plugins/inventory/host_list.py +7 -5
  405. ansible/plugins/inventory/ini.py +78 -44
  406. ansible/plugins/inventory/script.py +189 -119
  407. ansible/plugins/inventory/toml.py +16 -126
  408. ansible/plugins/inventory/yaml.py +10 -8
  409. ansible/plugins/list.py +3 -3
  410. ansible/plugins/loader.py +197 -82
  411. ansible/plugins/lookup/__init__.py +21 -4
  412. ansible/plugins/lookup/config.py +21 -35
  413. ansible/plugins/lookup/csvfile.py +3 -2
  414. ansible/plugins/lookup/dict.py +1 -6
  415. ansible/plugins/lookup/env.py +12 -9
  416. ansible/plugins/lookup/file.py +5 -8
  417. ansible/plugins/lookup/first_found.py +86 -55
  418. ansible/plugins/lookup/indexed_items.py +1 -10
  419. ansible/plugins/lookup/ini.py +14 -13
  420. ansible/plugins/lookup/items.py +1 -1
  421. ansible/plugins/lookup/lines.py +8 -1
  422. ansible/plugins/lookup/list.py +1 -1
  423. ansible/plugins/lookup/nested.py +2 -18
  424. ansible/plugins/lookup/password.py +5 -5
  425. ansible/plugins/lookup/pipe.py +5 -7
  426. ansible/plugins/lookup/sequence.py +18 -8
  427. ansible/plugins/lookup/subelements.py +1 -4
  428. ansible/plugins/lookup/template.py +42 -36
  429. ansible/plugins/lookup/together.py +0 -12
  430. ansible/plugins/lookup/unvault.py +1 -5
  431. ansible/plugins/lookup/url.py +2 -8
  432. ansible/plugins/lookup/vars.py +16 -24
  433. ansible/plugins/shell/__init__.py +2 -2
  434. ansible/plugins/shell/cmd.py +2 -2
  435. ansible/plugins/shell/powershell.py +39 -22
  436. ansible/plugins/shell/sh.py +3 -2
  437. ansible/plugins/strategy/__init__.py +159 -184
  438. ansible/plugins/strategy/debug.py +2 -2
  439. ansible/plugins/strategy/free.py +16 -31
  440. ansible/plugins/strategy/host_pinned.py +2 -2
  441. ansible/plugins/strategy/linear.py +41 -41
  442. ansible/plugins/terminal/__init__.py +4 -4
  443. ansible/plugins/test/__init__.py +7 -2
  444. ansible/plugins/test/core.py +55 -21
  445. ansible/plugins/test/files.py +1 -1
  446. ansible/plugins/test/mathstuff.py +3 -3
  447. ansible/plugins/test/uri.py +3 -3
  448. ansible/plugins/vars/host_group_vars.py +7 -14
  449. ansible/release.py +2 -2
  450. ansible/template/__init__.py +370 -944
  451. ansible/utils/__init__.py +0 -18
  452. ansible/utils/_ssh_agent.py +657 -0
  453. ansible/utils/collection_loader/__init__.py +52 -5
  454. ansible/utils/collection_loader/_collection_config.py +5 -6
  455. ansible/utils/collection_loader/_collection_finder.py +79 -93
  456. ansible/utils/collection_loader/_collection_meta.py +13 -8
  457. ansible/utils/display.py +433 -63
  458. ansible/utils/encrypt.py +27 -19
  459. ansible/utils/fqcn.py +2 -2
  460. ansible/utils/hashing.py +2 -2
  461. ansible/utils/helpers.py +2 -2
  462. ansible/utils/listify.py +8 -8
  463. ansible/utils/lock.py +2 -2
  464. ansible/utils/path.py +4 -4
  465. ansible/utils/plugin_docs.py +14 -13
  466. ansible/utils/sentinel.py +4 -62
  467. ansible/utils/singleton.py +2 -0
  468. ansible/utils/ssh_functions.py +1 -1
  469. ansible/utils/unsafe_proxy.py +23 -332
  470. ansible/utils/vars.py +51 -8
  471. ansible/utils/version.py +2 -2
  472. ansible/vars/clean.py +5 -5
  473. ansible/vars/hostvars.py +60 -90
  474. ansible/vars/manager.py +206 -282
  475. ansible/vars/reserved.py +8 -9
  476. ansible_core-2.19.0b2.dist-info/BSD-3-Clause.txt +28 -0
  477. {ansible_core-2.18.5rc1.dist-info → ansible_core-2.19.0b2.dist-info}/METADATA +5 -4
  478. ansible_core-2.19.0b2.dist-info/RECORD +1072 -0
  479. {ansible_core-2.18.5rc1.dist-info → ansible_core-2.19.0b2.dist-info}/WHEEL +1 -1
  480. ansible_test/_data/completion/docker.txt +7 -7
  481. ansible_test/_data/completion/remote.txt +6 -6
  482. ansible_test/_data/completion/windows.txt +1 -0
  483. ansible_test/_data/requirements/ansible.txt +2 -2
  484. ansible_test/_data/requirements/sanity.ansible-doc.txt +3 -3
  485. ansible_test/_data/requirements/sanity.changelog.txt +1 -1
  486. ansible_test/_data/requirements/sanity.import.plugin.txt +2 -2
  487. ansible_test/_data/requirements/sanity.pylint.txt +4 -4
  488. ansible_test/_data/requirements/sanity.validate-modules.txt +2 -2
  489. ansible_test/_data/requirements/sanity.yamllint.txt +1 -1
  490. ansible_test/_data/requirements/units.txt +1 -0
  491. ansible_test/_internal/__init__.py +1 -0
  492. ansible_test/_internal/ansible_util.py +2 -0
  493. ansible_test/_internal/become.py +1 -0
  494. ansible_test/_internal/bootstrap.py +1 -0
  495. ansible_test/_internal/cache.py +1 -0
  496. ansible_test/_internal/cgroup.py +1 -0
  497. ansible_test/_internal/ci/__init__.py +1 -0
  498. ansible_test/_internal/ci/azp.py +1 -0
  499. ansible_test/_internal/ci/local.py +1 -0
  500. ansible_test/_internal/classification/__init__.py +1 -0
  501. ansible_test/_internal/classification/common.py +1 -0
  502. ansible_test/_internal/classification/csharp.py +1 -0
  503. ansible_test/_internal/classification/powershell.py +1 -0
  504. ansible_test/_internal/classification/python.py +1 -0
  505. ansible_test/_internal/cli/__init__.py +1 -0
  506. ansible_test/_internal/cli/actions.py +1 -0
  507. ansible_test/_internal/cli/argparsing/__init__.py +1 -0
  508. ansible_test/_internal/cli/argparsing/actions.py +1 -0
  509. ansible_test/_internal/cli/argparsing/argcompletion.py +1 -0
  510. ansible_test/_internal/cli/argparsing/parsers.py +1 -0
  511. ansible_test/_internal/cli/commands/__init__.py +11 -0
  512. ansible_test/_internal/cli/commands/coverage/__init__.py +1 -0
  513. ansible_test/_internal/cli/commands/coverage/analyze/__init__.py +1 -0
  514. ansible_test/_internal/cli/commands/coverage/analyze/targets/__init__.py +1 -0
  515. ansible_test/_internal/cli/commands/coverage/analyze/targets/combine.py +1 -0
  516. ansible_test/_internal/cli/commands/coverage/analyze/targets/expand.py +1 -0
  517. ansible_test/_internal/cli/commands/coverage/analyze/targets/filter.py +1 -0
  518. ansible_test/_internal/cli/commands/coverage/analyze/targets/generate.py +1 -0
  519. ansible_test/_internal/cli/commands/coverage/analyze/targets/missing.py +1 -0
  520. ansible_test/_internal/cli/commands/coverage/combine.py +1 -0
  521. ansible_test/_internal/cli/commands/coverage/erase.py +1 -0
  522. ansible_test/_internal/cli/commands/coverage/html.py +1 -0
  523. ansible_test/_internal/cli/commands/coverage/report.py +1 -0
  524. ansible_test/_internal/cli/commands/coverage/xml.py +1 -0
  525. ansible_test/_internal/cli/commands/env.py +1 -0
  526. ansible_test/_internal/cli/commands/integration/__init__.py +1 -0
  527. ansible_test/_internal/cli/commands/integration/network.py +1 -0
  528. ansible_test/_internal/cli/commands/integration/posix.py +1 -0
  529. ansible_test/_internal/cli/commands/integration/windows.py +1 -0
  530. ansible_test/_internal/cli/commands/sanity.py +9 -0
  531. ansible_test/_internal/cli/commands/shell.py +1 -0
  532. ansible_test/_internal/cli/commands/units.py +1 -0
  533. ansible_test/_internal/cli/compat.py +1 -0
  534. ansible_test/_internal/cli/completers.py +1 -0
  535. ansible_test/_internal/cli/converters.py +1 -0
  536. ansible_test/_internal/cli/environments.py +1 -0
  537. ansible_test/_internal/cli/epilog.py +1 -0
  538. ansible_test/_internal/cli/parsers/__init__.py +1 -0
  539. ansible_test/_internal/cli/parsers/base_argument_parsers.py +1 -0
  540. ansible_test/_internal/cli/parsers/helpers.py +1 -0
  541. ansible_test/_internal/cli/parsers/host_config_parsers.py +1 -0
  542. ansible_test/_internal/cli/parsers/key_value_parsers.py +1 -0
  543. ansible_test/_internal/cli/parsers/value_parsers.py +1 -0
  544. ansible_test/_internal/commands/__init__.py +1 -0
  545. ansible_test/_internal/commands/coverage/__init__.py +2 -1
  546. ansible_test/_internal/commands/coverage/analyze/__init__.py +1 -0
  547. ansible_test/_internal/commands/coverage/analyze/targets/__init__.py +1 -0
  548. ansible_test/_internal/commands/coverage/analyze/targets/combine.py +1 -0
  549. ansible_test/_internal/commands/coverage/analyze/targets/expand.py +1 -0
  550. ansible_test/_internal/commands/coverage/analyze/targets/filter.py +1 -0
  551. ansible_test/_internal/commands/coverage/analyze/targets/generate.py +1 -0
  552. ansible_test/_internal/commands/coverage/analyze/targets/missing.py +1 -0
  553. ansible_test/_internal/commands/coverage/combine.py +2 -1
  554. ansible_test/_internal/commands/coverage/erase.py +1 -0
  555. ansible_test/_internal/commands/coverage/html.py +1 -0
  556. ansible_test/_internal/commands/coverage/report.py +1 -0
  557. ansible_test/_internal/commands/coverage/xml.py +1 -0
  558. ansible_test/_internal/commands/env/__init__.py +2 -0
  559. ansible_test/_internal/commands/integration/__init__.py +4 -0
  560. ansible_test/_internal/commands/integration/cloud/__init__.py +1 -0
  561. ansible_test/_internal/commands/integration/cloud/acme.py +2 -1
  562. ansible_test/_internal/commands/integration/cloud/aws.py +1 -0
  563. ansible_test/_internal/commands/integration/cloud/azure.py +1 -0
  564. ansible_test/_internal/commands/integration/cloud/cs.py +1 -0
  565. ansible_test/_internal/commands/integration/cloud/digitalocean.py +1 -0
  566. ansible_test/_internal/commands/integration/cloud/galaxy.py +3 -2
  567. ansible_test/_internal/commands/integration/cloud/hcloud.py +1 -0
  568. ansible_test/_internal/commands/integration/cloud/httptester.py +2 -1
  569. ansible_test/_internal/commands/integration/cloud/nios.py +2 -1
  570. ansible_test/_internal/commands/integration/cloud/opennebula.py +1 -0
  571. ansible_test/_internal/commands/integration/cloud/openshift.py +1 -0
  572. ansible_test/_internal/commands/integration/cloud/scaleway.py +1 -0
  573. ansible_test/_internal/commands/integration/cloud/vcenter.py +1 -0
  574. ansible_test/_internal/commands/integration/cloud/vultr.py +1 -0
  575. ansible_test/_internal/commands/integration/coverage.py +1 -0
  576. ansible_test/_internal/commands/integration/filters.py +1 -0
  577. ansible_test/_internal/commands/integration/network.py +1 -0
  578. ansible_test/_internal/commands/integration/posix.py +1 -0
  579. ansible_test/_internal/commands/integration/windows.py +1 -0
  580. ansible_test/_internal/commands/sanity/__init__.py +16 -1
  581. ansible_test/_internal/commands/sanity/ansible_doc.py +1 -0
  582. ansible_test/_internal/commands/sanity/bin_symlinks.py +1 -0
  583. ansible_test/_internal/commands/sanity/compile.py +1 -0
  584. ansible_test/_internal/commands/sanity/ignores.py +1 -0
  585. ansible_test/_internal/commands/sanity/import.py +1 -0
  586. ansible_test/_internal/commands/sanity/integration_aliases.py +1 -0
  587. ansible_test/_internal/commands/sanity/pep8.py +1 -0
  588. ansible_test/_internal/commands/sanity/pslint.py +1 -0
  589. ansible_test/_internal/commands/sanity/pylint.py +24 -26
  590. ansible_test/_internal/commands/sanity/shellcheck.py +1 -0
  591. ansible_test/_internal/commands/sanity/validate_modules.py +1 -0
  592. ansible_test/_internal/commands/sanity/yamllint.py +1 -0
  593. ansible_test/_internal/commands/shell/__init__.py +1 -0
  594. ansible_test/_internal/commands/units/__init__.py +1 -0
  595. ansible_test/_internal/compat/__init__.py +1 -0
  596. ansible_test/_internal/compat/packaging.py +1 -0
  597. ansible_test/_internal/compat/yaml.py +1 -0
  598. ansible_test/_internal/completion.py +1 -0
  599. ansible_test/_internal/config.py +2 -0
  600. ansible_test/_internal/connections.py +1 -0
  601. ansible_test/_internal/constants.py +1 -0
  602. ansible_test/_internal/containers.py +1 -0
  603. ansible_test/_internal/content_config.py +1 -0
  604. ansible_test/_internal/core_ci.py +1 -0
  605. ansible_test/_internal/coverage_util.py +11 -10
  606. ansible_test/_internal/data.py +1 -0
  607. ansible_test/_internal/delegation.py +1 -0
  608. ansible_test/_internal/dev/__init__.py +1 -0
  609. ansible_test/_internal/dev/container_probe.py +1 -0
  610. ansible_test/_internal/diff.py +3 -2
  611. ansible_test/_internal/docker_util.py +2 -1
  612. ansible_test/_internal/encoding.py +1 -0
  613. ansible_test/_internal/executor.py +1 -0
  614. ansible_test/_internal/git.py +1 -0
  615. ansible_test/_internal/host_configs.py +1 -0
  616. ansible_test/_internal/host_profiles.py +1 -0
  617. ansible_test/_internal/http.py +1 -0
  618. ansible_test/_internal/init.py +1 -0
  619. ansible_test/_internal/inventory.py +35 -3
  620. ansible_test/_internal/io.py +1 -0
  621. ansible_test/_internal/metadata.py +1 -0
  622. ansible_test/_internal/payload.py +1 -0
  623. ansible_test/_internal/provider/__init__.py +1 -0
  624. ansible_test/_internal/provider/layout/__init__.py +1 -0
  625. ansible_test/_internal/provider/layout/ansible.py +1 -0
  626. ansible_test/_internal/provider/layout/collection.py +1 -0
  627. ansible_test/_internal/provider/layout/unsupported.py +1 -0
  628. ansible_test/_internal/provider/source/__init__.py +1 -0
  629. ansible_test/_internal/provider/source/git.py +1 -0
  630. ansible_test/_internal/provider/source/installed.py +1 -0
  631. ansible_test/_internal/provider/source/unsupported.py +1 -0
  632. ansible_test/_internal/provider/source/unversioned.py +1 -0
  633. ansible_test/_internal/provisioning.py +1 -0
  634. ansible_test/_internal/pypi_proxy.py +6 -5
  635. ansible_test/_internal/python_requirements.py +1 -0
  636. ansible_test/_internal/ssh.py +1 -0
  637. ansible_test/_internal/target.py +1 -0
  638. ansible_test/_internal/test.py +3 -2
  639. ansible_test/_internal/thread.py +1 -0
  640. ansible_test/_internal/timeout.py +1 -0
  641. ansible_test/_internal/util.py +1 -0
  642. ansible_test/_internal/util_common.py +5 -2
  643. ansible_test/_internal/venv.py +1 -0
  644. ansible_test/_util/controller/sanity/code-smell/action-plugin-docs.py +1 -0
  645. ansible_test/_util/controller/sanity/code-smell/changelog/sphinx.py +1 -0
  646. ansible_test/_util/controller/sanity/code-smell/changelog.py +1 -0
  647. ansible_test/_util/controller/sanity/code-smell/empty-init.py +1 -0
  648. ansible_test/_util/controller/sanity/code-smell/line-endings.py +1 -0
  649. ansible_test/_util/controller/sanity/code-smell/no-assert.py +1 -0
  650. ansible_test/_util/controller/sanity/code-smell/no-get-exception.py +1 -0
  651. ansible_test/_util/controller/sanity/code-smell/no-illegal-filenames.py +1 -0
  652. ansible_test/_util/controller/sanity/code-smell/no-smart-quotes.py +1 -0
  653. ansible_test/_util/controller/sanity/code-smell/replace-urlopen.py +1 -0
  654. ansible_test/_util/controller/sanity/code-smell/runtime-metadata.py +28 -1
  655. ansible_test/_util/controller/sanity/code-smell/shebang.py +1 -0
  656. ansible_test/_util/controller/sanity/code-smell/symlinks.py +1 -0
  657. ansible_test/_util/controller/sanity/code-smell/use-argspec-type-path.py +1 -0
  658. ansible_test/_util/controller/sanity/code-smell/use-compat-six.py +1 -0
  659. ansible_test/_util/controller/sanity/integration-aliases/yaml_to_json.py +2 -1
  660. ansible_test/_util/controller/sanity/pep8/current-ignore.txt +4 -0
  661. ansible_test/_util/controller/sanity/pylint/config/ansible-test-target.cfg +7 -5
  662. ansible_test/_util/controller/sanity/pylint/config/ansible-test.cfg +7 -5
  663. ansible_test/_util/controller/sanity/pylint/config/code-smell.cfg +7 -5
  664. ansible_test/_util/controller/sanity/pylint/config/collection.cfg +3 -5
  665. ansible_test/_util/controller/sanity/pylint/config/default.cfg +7 -7
  666. ansible_test/_util/controller/sanity/pylint/plugins/deprecated.py +1 -13
  667. ansible_test/_util/controller/sanity/pylint/plugins/hide_unraisable.py +1 -0
  668. ansible_test/_util/controller/sanity/pylint/plugins/string_format.py +1 -8
  669. ansible_test/_util/controller/sanity/pylint/plugins/unwanted.py +1 -8
  670. ansible_test/_util/controller/sanity/validate-modules/validate_modules/main.py +55 -28
  671. ansible_test/_util/controller/sanity/validate-modules/validate_modules/module_args.py +12 -5
  672. ansible_test/_util/controller/sanity/validate-modules/validate_modules/schema.py +13 -2
  673. ansible_test/_util/controller/sanity/validate-modules/validate_modules/utils.py +1 -0
  674. ansible_test/_util/controller/sanity/yamllint/yamllinter.py +35 -17
  675. ansible_test/_util/controller/tools/collection_detail.py +1 -0
  676. ansible_test/_util/controller/tools/yaml_to_json.py +2 -1
  677. ansible_test/_util/target/pytest/plugins/ansible_forked.py +6 -1
  678. ansible_test/_util/target/pytest/plugins/ansible_pytest_collections.py +2 -1
  679. ansible_test/_util/target/pytest/plugins/ansible_pytest_coverage.py +1 -0
  680. ansible_test/_util/target/sanity/compile/compile.py +1 -0
  681. ansible_test/_util/target/sanity/import/importer.py +15 -16
  682. ansible_test/_util/target/setup/bootstrap.sh +9 -20
  683. ansible_test/_util/target/setup/probe_cgroups.py +1 -0
  684. ansible_test/_util/target/setup/quiet_pip.py +1 -0
  685. ansible_test/_util/target/setup/requirements.py +35 -27
  686. ansible_test/_util/target/tools/virtualenvcheck.py +2 -1
  687. ansible_test/_util/target/tools/yamlcheck.py +2 -1
  688. ansible/compat/selectors.py +0 -32
  689. ansible/errors/yaml_strings.py +0 -138
  690. ansible/executor/action_write_locks.py +0 -44
  691. ansible/executor/discovery/python_target.py +0 -47
  692. ansible/executor/powershell/module_powershell_wrapper.ps1 +0 -86
  693. ansible/executor/powershell/module_script_wrapper.ps1 +0 -22
  694. ansible/module_utils/compat/importlib.py +0 -26
  695. ansible/module_utils/compat/selectors.py +0 -32
  696. ansible/module_utils/pycompat24.py +0 -73
  697. ansible/parsing/yaml/constructor.py +0 -178
  698. ansible/template/native_helpers.py +0 -251
  699. ansible/template/template.py +0 -43
  700. ansible/template/vars.py +0 -77
  701. ansible/utils/native_jinja.py +0 -11
  702. ansible/vars/fact_cache.py +0 -71
  703. ansible_core-2.18.5rc1.dist-info/RECORD +0 -992
  704. {ansible_core-2.18.5rc1.dist-info → ansible_core-2.19.0b2.dist-info}/Apache-License.txt +0 -0
  705. {ansible_core-2.18.5rc1.dist-info → ansible_core-2.19.0b2.dist-info}/COPYING +0 -0
  706. {ansible_core-2.18.5rc1.dist-info → ansible_core-2.19.0b2.dist-info}/MIT-license.txt +0 -0
  707. {ansible_core-2.18.5rc1.dist-info → ansible_core-2.19.0b2.dist-info}/PSF-license.txt +0 -0
  708. {ansible_core-2.18.5rc1.dist-info → ansible_core-2.19.0b2.dist-info}/entry_points.txt +0 -0
  709. {ansible_core-2.18.5rc1.dist-info → ansible_core-2.19.0b2.dist-info}/simplified_bsd.txt +0 -0
  710. {ansible_core-2.18.5rc1.dist-info → ansible_core-2.19.0b2.dist-info}/top_level.txt +0 -0
ansible/config/base.yml CHANGED
@@ -9,6 +9,50 @@ _ANSIBLE_CONNECTION_PATH:
9
9
  - For internal use only.
10
10
  type: path
11
11
  version_added: "2.18"
12
+ _CALLBACK_DISPATCH_ERROR_BEHAVIOR:
13
+ name: Callback dispatch error behavior
14
+ default: warning
15
+ description:
16
+ - Action to take when a callback dispatch results in an error.
17
+ type: choices
18
+ choices: &basic_error
19
+ error: issue a 'fatal' error and stop the play
20
+ warning: issue a warning but continue
21
+ ignore: just continue silently
22
+ env: [ { name: _ANSIBLE_CALLBACK_DISPATCH_ERROR_BEHAVIOR } ]
23
+ version_added: '2.19'
24
+ ALLOW_BROKEN_CONDITIONALS:
25
+ # This config option will be deprecated once it no longer has any effect (2.23).
26
+ name: Allow broken conditionals
27
+ default: false
28
+ description:
29
+ - When enabled, this option allows conditionals with non-boolean results to be used.
30
+ - A deprecation warning will be emitted in these cases.
31
+ - By default, non-boolean conditionals result in an error.
32
+ - Such results often indicate unintentional use of templates where they are not supported, resulting in a conditional that is always true.
33
+ - When this option is enabled, conditional expressions which are a literal ``None`` or empty string will evaluate as true for backwards compatibility.
34
+ env: [{name: ANSIBLE_ALLOW_BROKEN_CONDITIONALS}]
35
+ ini:
36
+ - {key: allow_broken_conditionals, section: defaults}
37
+ type: boolean
38
+ version_added: "2.19"
39
+ ALLOW_EMBEDDED_TEMPLATES:
40
+ name: Allow embedded templates
41
+ default: true
42
+ description:
43
+ - When enabled, this option allows embedded templates to be used for specific backward compatibility scenarios.
44
+ - A deprecation warning will be emitted in these cases.
45
+ - First, conditionals (for example, ``failed_when``, ``until``, ``assert.that``) fully enclosed in template delimiters.
46
+ - "Second, string constants in conditionals (for example, ``when: some_var == '{{ some_other_var }}'``)."
47
+ - Finally, positional arguments to lookups (for example, ``lookup('pipe', 'echo {{ some_var }}')``).
48
+ - This feature is deprecated, since embedded templates are unnecessary in these cases.
49
+ - When disabled, use of embedded templates will result in an error.
50
+ - A future release will disable this feature by default.
51
+ env: [{name: ANSIBLE_ALLOW_EMBEDDED_TEMPLATES}]
52
+ ini:
53
+ - {key: allow_embedded_templates, section: defaults}
54
+ type: boolean
55
+ version_added: "2.19"
12
56
  ANSIBLE_HOME:
13
57
  name: The Ansible home path
14
58
  description:
@@ -160,33 +204,33 @@ AGNOSTIC_BECOME_PROMPT:
160
204
  yaml: {key: privilege_escalation.agnostic_become_prompt}
161
205
  version_added: "2.5"
162
206
  CACHE_PLUGIN:
163
- name: Persistent Cache plugin
207
+ name: Persistent Fact Cache plugin
164
208
  default: memory
165
- description: Chooses which cache plugin to use, the default 'memory' is ephemeral.
209
+ description: Chooses which fact cache plugin to use. By default, no cache is used and facts do not persist between runs.
166
210
  env: [{name: ANSIBLE_CACHE_PLUGIN}]
167
211
  ini:
168
212
  - {key: fact_caching, section: defaults}
169
213
  yaml: {key: facts.cache.plugin}
170
214
  CACHE_PLUGIN_CONNECTION:
171
- name: Cache Plugin URI
215
+ name: Fact Cache Plugin URI
172
216
  default: ~
173
- description: Defines connection or path information for the cache plugin.
217
+ description: Defines connection or path information for the fact cache plugin.
174
218
  env: [{name: ANSIBLE_CACHE_PLUGIN_CONNECTION}]
175
219
  ini:
176
220
  - {key: fact_caching_connection, section: defaults}
177
221
  yaml: {key: facts.cache.uri}
178
222
  CACHE_PLUGIN_PREFIX:
179
- name: Cache Plugin table prefix
223
+ name: Fact Cache Plugin table prefix
180
224
  default: ansible_facts
181
- description: Prefix to use for cache plugin files/tables.
225
+ description: Prefix to use for fact cache plugin files/tables.
182
226
  env: [{name: ANSIBLE_CACHE_PLUGIN_PREFIX}]
183
227
  ini:
184
228
  - {key: fact_caching_prefix, section: defaults}
185
229
  yaml: {key: facts.cache.prefix}
186
230
  CACHE_PLUGIN_TIMEOUT:
187
- name: Cache Plugin expiration timeout
231
+ name: Fact Cache Plugin expiration timeout
188
232
  default: 86400
189
- description: Expiration timeout for the cache plugin data.
233
+ description: Expiration timeout for the fact cache plugin data.
190
234
  env: [{name: ANSIBLE_CACHE_PLUGIN_TIMEOUT}]
191
235
  ini:
192
236
  - {key: fact_caching_timeout, section: defaults}
@@ -212,18 +256,9 @@ COLLECTIONS_PATHS:
212
256
  default: '{{ ANSIBLE_HOME ~ "/collections:/usr/share/ansible/collections" }}'
213
257
  type: pathspec
214
258
  env:
215
- - name: ANSIBLE_COLLECTIONS_PATHS
216
- deprecated:
217
- why: does not fit var naming standard, use the singular form ANSIBLE_COLLECTIONS_PATH instead
218
- version: "2.19"
219
259
  - name: ANSIBLE_COLLECTIONS_PATH
220
260
  version_added: '2.10'
221
261
  ini:
222
- - key: collections_paths
223
- section: defaults
224
- deprecated:
225
- why: does not fit var naming standard, use the singular form collections_path instead
226
- version: "2.19"
227
262
  - key: collections_path
228
263
  section: defaults
229
264
  version_added: '2.10'
@@ -233,10 +268,7 @@ COLLECTIONS_ON_ANSIBLE_VERSION_MISMATCH:
233
268
  - When a collection is loaded that does not support the running Ansible version (with the collection metadata key `requires_ansible`).
234
269
  env: [{name: ANSIBLE_COLLECTIONS_ON_ANSIBLE_VERSION_MISMATCH}]
235
270
  ini: [{key: collections_on_ansible_version_mismatch, section: defaults}]
236
- choices: &basic_error
237
- error: issue a 'fatal' error and stop the play
238
- warning: issue a warning but continue
239
- ignore: just continue silently
271
+ choices: *basic_error
240
272
  default: warning
241
273
  COLOR_CHANGED:
242
274
  name: Color for 'changed' task status
@@ -505,6 +537,10 @@ DEFAULT_ALLOW_UNSAFE_LOOKUPS:
505
537
  - {key: allow_unsafe_lookups, section: defaults}
506
538
  type: boolean
507
539
  version_added: "2.2.3"
540
+ deprecated:
541
+ why: This option is no longer used in the Ansible Core code base.
542
+ version: "2.23"
543
+ alternatives: Lookup plugins are responsible for tagging strings containing templates to allow evaluation as a template.
508
544
  DEFAULT_ASK_PASS:
509
545
  name: Ask for the login password
510
546
  default: False
@@ -764,15 +800,20 @@ DEFAULT_INVENTORY_PLUGIN_PATH:
764
800
  DEFAULT_JINJA2_EXTENSIONS:
765
801
  name: Enabled Jinja2 extensions
766
802
  default: []
803
+ type: list
767
804
  description:
768
805
  - This is a developer-specific feature that allows enabling additional Jinja2 extensions.
769
806
  - "See the Jinja2 documentation for details. If you do not know what these do, you probably don't need to change this setting :)"
770
807
  env: [{name: ANSIBLE_JINJA2_EXTENSIONS}]
771
808
  ini:
772
809
  - {key: jinja2_extensions, section: defaults}
810
+ deprecated:
811
+ why: Jinja2 extensions have been deprecated
812
+ version: "2.23"
813
+ alternatives: Ansible-supported Jinja plugins (tests, filters, lookups)
773
814
  DEFAULT_JINJA2_NATIVE:
774
815
  name: Use Jinja2's NativeEnvironment for templating
775
- default: False
816
+ default: True
776
817
  description: This option preserves variable types during template operations.
777
818
  env: [{name: ANSIBLE_JINJA2_NATIVE}]
778
819
  ini:
@@ -780,6 +821,10 @@ DEFAULT_JINJA2_NATIVE:
780
821
  type: boolean
781
822
  yaml: {key: jinja2_native}
782
823
  version_added: 2.7
824
+ deprecated:
825
+ why: This option is no longer used in the Ansible Core code base.
826
+ version: "2.23"
827
+ alternatives: Jinja2 native mode is now the default and only option.
783
828
  DEFAULT_KEEP_REMOTE_FILES:
784
829
  name: Keep remote files
785
830
  default: False
@@ -791,7 +836,6 @@ DEFAULT_KEEP_REMOTE_FILES:
791
836
  - {key: keep_remote_files, section: defaults}
792
837
  type: boolean
793
838
  DEFAULT_LIBVIRT_LXC_NOSECLABEL:
794
- # TODO: move to plugin
795
839
  name: No security label on Lxc
796
840
  default: False
797
841
  description:
@@ -803,6 +847,10 @@ DEFAULT_LIBVIRT_LXC_NOSECLABEL:
803
847
  - {key: libvirt_lxc_noseclabel, section: selinux}
804
848
  type: boolean
805
849
  version_added: "2.1"
850
+ deprecated:
851
+ why: This option was moved to the plugin itself
852
+ version: "2.22"
853
+ alternatives: Use the option from the plugin itself.
806
854
  DEFAULT_LOAD_CALLBACK_PLUGINS:
807
855
  name: Load callbacks for adhoc
808
856
  default: False
@@ -936,6 +984,10 @@ DEFAULT_NULL_REPRESENTATION:
936
984
  ini:
937
985
  - {key: null_representation, section: defaults}
938
986
  type: raw
987
+ deprecated:
988
+ why: This option is no longer used in the Ansible Core code base.
989
+ version: "2.23"
990
+ alternatives: There is no alternative at the moment. A different mechanism would have to be implemented in the current code base.
939
991
  DEFAULT_POLL_INTERVAL:
940
992
  name: Async poll interval
941
993
  default: 15
@@ -1135,6 +1187,10 @@ DEFAULT_UNDEFINED_VAR_BEHAVIOR:
1135
1187
  ini:
1136
1188
  - {key: error_on_undefined_vars, section: defaults}
1137
1189
  type: boolean
1190
+ deprecated:
1191
+ why: This option is no longer used in the Ansible Core code base.
1192
+ version: "2.23"
1193
+ alternatives: There is no alternative at the moment. A different mechanism would have to be implemented in the current code base.
1138
1194
  DEFAULT_VARS_PLUGIN_PATH:
1139
1195
  name: Vars Plugins Path
1140
1196
  default: '{{ ANSIBLE_HOME ~ "/plugins/vars:/usr/share/ansible/plugins/vars" }}'
@@ -1219,6 +1275,9 @@ DEPRECATION_WARNINGS:
1219
1275
  ini:
1220
1276
  - {key: deprecation_warnings, section: defaults}
1221
1277
  type: boolean
1278
+ vars:
1279
+ - name: ansible_deprecation_warnings
1280
+ version_added: '2.19'
1222
1281
  DEVEL_WARNING:
1223
1282
  name: Running devel warning
1224
1283
  default: True
@@ -1272,6 +1331,22 @@ DISPLAY_SKIPPED_HOSTS:
1272
1331
  ini:
1273
1332
  - {key: display_skipped_hosts, section: defaults}
1274
1333
  type: boolean
1334
+ DISPLAY_TRACEBACK:
1335
+ name: Control traceback display
1336
+ default: never
1337
+ description: When to include tracebacks in extended error messages
1338
+ env:
1339
+ - name: ANSIBLE_DISPLAY_TRACEBACK
1340
+ ini:
1341
+ - {key: display_traceback, section: defaults}
1342
+ type: list
1343
+ choices:
1344
+ - error
1345
+ - warning
1346
+ - deprecated
1347
+ - always
1348
+ - never
1349
+ version_added: "2.19"
1275
1350
  DOCSITE_ROOT_URL:
1276
1351
  name: Root docsite URL
1277
1352
  default: https://docs.ansible.com/ansible-core/
@@ -1579,21 +1654,12 @@ INTERPRETER_PYTHON:
1579
1654
  description:
1580
1655
  - Path to the Python interpreter to be used for module execution on remote targets, or an automatic discovery mode.
1581
1656
  Supported discovery modes are ``auto`` (the default), ``auto_silent``, ``auto_legacy``, and ``auto_legacy_silent``.
1582
- All discovery modes employ a lookup table to use the included system Python (on distributions known to include one),
1583
- falling back to a fixed ordered list of well-known Python interpreter locations if a platform-specific default is not
1584
- available. The fallback behavior will issue a warning that the interpreter should be set explicitly (since interpreters
1585
- installed later may change which one is used). This warning behavior can be disabled by setting ``auto_silent`` or
1586
- ``auto_legacy_silent``. The value of ``auto_legacy`` provides all the same behavior, but for backward-compatibility
1587
- with older Ansible releases that always defaulted to ``/usr/bin/python``, will use that interpreter if present.
1588
- _INTERPRETER_PYTHON_DISTRO_MAP:
1589
- name: Mapping of known included platform pythons for various Linux distros
1590
- default:
1591
- # Entry only for testing
1592
- ansible test:
1593
- '99': /usr/bin/python99
1594
- version_added: "2.8"
1595
- # FUTURE: add inventory override once we're sure it can't be abused by a rogue target
1596
- # FUTURE: add a platform layer to the map so we could use for, eg, freebsd/macos/etc?
1657
+ All discovery modes match against an ordered list of well-known Python interpreter locations.
1658
+ The fallback behavior will issue a warning that the interpreter should be set explicitly (since interpreters
1659
+ installed later may change which one is used). This warning behavior can be disabled by setting ``auto_silent``.
1660
+ The ``auto_legacy`` modes are deprecated and behave the same as their respective ``auto`` modes.
1661
+ They exist for backward-compatibility with older Ansible releases that always defaulted to ``/usr/bin/python3``,
1662
+ which will use that interpreter if present.
1597
1663
  INTERPRETER_PYTHON_FALLBACK:
1598
1664
  name: Ordered list of Python interpreters to check for in discovery
1599
1665
  default:
@@ -1647,60 +1713,6 @@ INVENTORY_ANY_UNPARSED_IS_FAILED:
1647
1713
  ini:
1648
1714
  - {key: any_unparsed_is_failed, section: inventory}
1649
1715
  version_added: "2.7"
1650
- INVENTORY_CACHE_ENABLED:
1651
- name: Inventory caching enabled
1652
- default: False
1653
- description:
1654
- - Toggle to turn on inventory caching.
1655
- - This setting has been moved to the individual inventory plugins as a plugin option :ref:`inventory_plugins`.
1656
- - The existing configuration settings are still accepted with the inventory plugin adding additional options from inventory configuration.
1657
- - This message will be removed in 2.16.
1658
- env: [{name: ANSIBLE_INVENTORY_CACHE}]
1659
- ini:
1660
- - {key: cache, section: inventory}
1661
- type: bool
1662
- INVENTORY_CACHE_PLUGIN:
1663
- name: Inventory cache plugin
1664
- description:
1665
- - The plugin for caching inventory.
1666
- - This setting has been moved to the individual inventory plugins as a plugin option :ref:`inventory_plugins`.
1667
- - The existing configuration settings are still accepted with the inventory plugin adding additional options from inventory and fact cache configuration.
1668
- - This message will be removed in 2.16.
1669
- env: [{name: ANSIBLE_INVENTORY_CACHE_PLUGIN}]
1670
- ini:
1671
- - {key: cache_plugin, section: inventory}
1672
- INVENTORY_CACHE_PLUGIN_CONNECTION:
1673
- name: Inventory cache plugin URI to override the defaults section
1674
- description:
1675
- - The inventory cache connection.
1676
- - This setting has been moved to the individual inventory plugins as a plugin option :ref:`inventory_plugins`.
1677
- - The existing configuration settings are still accepted with the inventory plugin adding additional options from inventory and fact cache configuration.
1678
- - This message will be removed in 2.16.
1679
- env: [{name: ANSIBLE_INVENTORY_CACHE_CONNECTION}]
1680
- ini:
1681
- - {key: cache_connection, section: inventory}
1682
- INVENTORY_CACHE_PLUGIN_PREFIX:
1683
- name: Inventory cache plugin table prefix
1684
- description:
1685
- - The table prefix for the cache plugin.
1686
- - This setting has been moved to the individual inventory plugins as a plugin option :ref:`inventory_plugins`.
1687
- - The existing configuration settings are still accepted with the inventory plugin adding additional options from inventory and fact cache configuration.
1688
- - This message will be removed in 2.16.
1689
- env: [{name: ANSIBLE_INVENTORY_CACHE_PLUGIN_PREFIX}]
1690
- default: ansible_inventory_
1691
- ini:
1692
- - {key: cache_prefix, section: inventory}
1693
- INVENTORY_CACHE_TIMEOUT:
1694
- name: Inventory cache plugin expiration timeout
1695
- description:
1696
- - Expiration timeout for the inventory cache plugin data.
1697
- - This setting has been moved to the individual inventory plugins as a plugin option :ref:`inventory_plugins`.
1698
- - The existing configuration settings are still accepted with the inventory plugin adding additional options from inventory and fact cache configuration.
1699
- - This message will be removed in 2.16.
1700
- default: 3600
1701
- env: [{name: ANSIBLE_INVENTORY_CACHE_TIMEOUT}]
1702
- ini:
1703
- - {key: cache_timeout, section: inventory}
1704
1716
  INVENTORY_ENABLED:
1705
1717
  name: Active Inventory plugins
1706
1718
  default: ['host_list', 'script', 'auto', 'yaml', 'ini', 'toml']
@@ -1719,7 +1731,7 @@ INVENTORY_EXPORT:
1719
1731
  type: bool
1720
1732
  INVENTORY_IGNORE_EXTS:
1721
1733
  name: Inventory ignore extensions
1722
- default: "{{(REJECT_EXTS + ('.orig', '.ini', '.cfg', '.retry'))}}"
1734
+ default: "{{(REJECT_EXTS + ('.orig', '.cfg', '.retry'))}}"
1723
1735
  description: List of extensions to ignore when using a directory as an inventory source.
1724
1736
  env: [{name: ANSIBLE_INVENTORY_IGNORE}]
1725
1737
  ini:
@@ -1957,6 +1969,24 @@ SHOW_CUSTOM_STATS:
1957
1969
  ini:
1958
1970
  - {key: show_custom_stats, section: defaults}
1959
1971
  type: bool
1972
+ SSH_AGENT:
1973
+ name: Manage an SSH Agent
1974
+ description: Manage an SSH Agent via Ansible. A configuration of ``none`` will not interact with an agent,
1975
+ ``auto`` will start and destroy an agent via ``ssh-agent`` binary during the run, and a path
1976
+ to an SSH_AUTH_SOCK will allow interaction with a pre-existing agent.
1977
+ default: none
1978
+ type: string
1979
+ env: [{name: ANSIBLE_SSH_AGENT}]
1980
+ ini: [{key: ssh_agent, section: connection}]
1981
+ version_added: '2.19'
1982
+ SSH_AGENT_KEY_LIFETIME:
1983
+ name: Set a maximum lifetime when adding identities to an agent
1984
+ description: For keys inserted into an agent defined by ``SSH_AGENT``, define a lifetime, in seconds, that the key may remain
1985
+ in the agent.
1986
+ type: int
1987
+ env: [{name: ANSIBLE_SSH_AGENT_KEY_LIFETIME}]
1988
+ ini: [{key: ssh_agent_key_lifetime, section: connection}]
1989
+ version_added: '2.19'
1960
1990
  STRING_TYPE_FILTERS:
1961
1991
  name: Filters to preserve strings
1962
1992
  default: [string, to_json, to_nice_json, to_yaml, to_nice_yaml, ppretty, json]
@@ -1967,6 +1997,10 @@ STRING_TYPE_FILTERS:
1967
1997
  ini:
1968
1998
  - {key: dont_type_filters, section: jinja2}
1969
1999
  type: list
2000
+ deprecated:
2001
+ why: This option has no effect.
2002
+ version: "2.23"
2003
+ alternatives: None; native types returned from filters are always preserved.
1970
2004
  SYSTEM_WARNINGS:
1971
2005
  name: System warnings
1972
2006
  default: True
@@ -2019,6 +2053,39 @@ TASK_TIMEOUT:
2019
2053
  - {key: task_timeout, section: defaults}
2020
2054
  type: integer
2021
2055
  version_added: '2.10'
2056
+ _TEMPLAR_UNKNOWN_TYPE_CONVERSION:
2057
+ name: Templar unknown type conversion behavior
2058
+ default: warning
2059
+ description:
2060
+ - Action to take when an unknown type is converted for variable storage during template finalization.
2061
+ - This setting has no effect on the inability to store unsupported variable types as the result of templating.
2062
+ - Experimental diagnostic feature, subject to change.
2063
+ type: choices
2064
+ choices: *basic_error
2065
+ env: [{name: _ANSIBLE_TEMPLAR_UNKNOWN_TYPE_CONVERSION}]
2066
+ version_added: '2.19'
2067
+ _TEMPLAR_UNKNOWN_TYPE_ENCOUNTERED:
2068
+ name: Templar unknown type encountered behavior
2069
+ default: ignore
2070
+ description:
2071
+ - Action to take when an unknown type is encountered inside a template pipeline.
2072
+ - Experimental diagnostic feature, subject to change.
2073
+ type: choices
2074
+ choices: *basic_error
2075
+ env: [{name: _ANSIBLE_TEMPLAR_UNKNOWN_TYPE_ENCOUNTERED}]
2076
+ version_added: '2.19'
2077
+ _TEMPLAR_UNTRUSTED_TEMPLATE_BEHAVIOR:
2078
+ name: Templar untrusted template behavior
2079
+ default: ignore
2080
+ description:
2081
+ - Action to take when processing of an untrusted template is skipped.
2082
+ - For `ignore` or `warn`, the input template string is returned as-is.
2083
+ - This setting has no effect on expressions.
2084
+ - Experimental diagnostic feature, subject to change.
2085
+ type: choices
2086
+ choices: *basic_error
2087
+ env: [{name: _ANSIBLE_TEMPLAR_UNTRUSTED_TEMPLATE_BEHAVIOR}]
2088
+ version_added: '2.19'
2022
2089
  WORKER_SHUTDOWN_POLL_COUNT:
2023
2090
  name: Worker Shutdown Poll Count
2024
2091
  default: 0
@@ -2081,6 +2148,12 @@ WIN_ASYNC_STARTUP_TIMEOUT:
2081
2148
  vars:
2082
2149
  - {name: ansible_win_async_startup_timeout}
2083
2150
  version_added: '2.10'
2151
+ WRAP_STDERR:
2152
+ description: Control line-wrapping behavior on console warnings and errors from default output callbacks (eases pattern-based output testing)
2153
+ env: [{name: ANSIBLE_WRAP_STDERR}]
2154
+ default: false
2155
+ type: bool
2156
+ version_added: "2.19"
2084
2157
  YAML_FILENAME_EXTENSIONS:
2085
2158
  name: Valid YAML extensions
2086
2159
  default: [".yml", ".yaml", ".json"]
@@ -2102,25 +2175,6 @@ NETCONF_SSH_CONFIG:
2102
2175
  - {key: ssh_config, section: netconf_connection}
2103
2176
  yaml: {key: netconf_connection.ssh_config}
2104
2177
  default: null
2105
- STRING_CONVERSION_ACTION:
2106
- version_added: '2.8'
2107
- description:
2108
- - Action to take when a module parameter value is converted to a string (this does not affect variables).
2109
- For string parameters, values such as '1.00', "['a', 'b',]", and 'yes', 'y', etc.
2110
- will be converted by the YAML parser unless fully quoted.
2111
- - Valid options are 'error', 'warn', and 'ignore'.
2112
- - Since 2.8, this option defaults to 'warn' but will change to 'error' in 2.12.
2113
- default: 'warn'
2114
- env:
2115
- - name: ANSIBLE_STRING_CONVERSION_ACTION
2116
- ini:
2117
- - section: defaults
2118
- key: string_conversion_action
2119
- type: string
2120
- deprecated:
2121
- why: This option is no longer used in the Ansible Core code base.
2122
- version: "2.19"
2123
- alternatives: There is no alternative at the moment. A different mechanism would have to be implemented in the current code base.
2124
2178
  VALIDATE_ACTION_GROUP_METADATA:
2125
2179
  version_added: '2.12'
2126
2180
  description: