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