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.
- ansible/_internal/__init__.py +53 -0
- ansible/_internal/_ansiballz.py +265 -0
- ansible/_internal/_collection_proxy.py +47 -0
- ansible/_internal/_datatag/__init__.py +0 -0
- ansible/_internal/_datatag/_tags.py +130 -0
- ansible/_internal/_datatag/_utils.py +19 -0
- ansible/_internal/_datatag/_wrappers.py +33 -0
- ansible/_internal/_errors/__init__.py +0 -0
- ansible/_internal/_errors/_captured.py +128 -0
- ansible/_internal/_errors/_handler.py +91 -0
- ansible/_internal/_errors/_utils.py +310 -0
- ansible/_internal/_json/__init__.py +203 -0
- ansible/_internal/_json/_legacy_encoder.py +34 -0
- ansible/_internal/_json/_profiles/__init__.py +0 -0
- ansible/_internal/_json/_profiles/_cache_persistence.py +55 -0
- ansible/_internal/_json/_profiles/_inventory_legacy.py +40 -0
- ansible/_internal/_json/_profiles/_legacy.py +197 -0
- ansible/_internal/_locking.py +21 -0
- ansible/_internal/_plugins/__init__.py +0 -0
- ansible/_internal/_plugins/_cache.py +57 -0
- ansible/_internal/_task.py +78 -0
- ansible/_internal/_templating/__init__.py +10 -0
- ansible/_internal/_templating/_access.py +86 -0
- ansible/_internal/_templating/_chain_templar.py +63 -0
- ansible/_internal/_templating/_datatag.py +95 -0
- ansible/_internal/_templating/_engine.py +588 -0
- ansible/_internal/_templating/_errors.py +28 -0
- ansible/_internal/_templating/_jinja_bits.py +1066 -0
- ansible/_internal/_templating/_jinja_common.py +332 -0
- ansible/_internal/_templating/_jinja_patches.py +44 -0
- ansible/_internal/_templating/_jinja_plugins.py +345 -0
- ansible/_internal/_templating/_lazy_containers.py +633 -0
- ansible/_internal/_templating/_marker_behaviors.py +103 -0
- ansible/_internal/_templating/_transform.py +63 -0
- ansible/_internal/_templating/_utils.py +107 -0
- ansible/_internal/_wrapt.py +1052 -0
- ansible/_internal/_yaml/__init__.py +0 -0
- ansible/_internal/_yaml/_constructor.py +240 -0
- ansible/_internal/_yaml/_dumper.py +62 -0
- ansible/_internal/_yaml/_errors.py +166 -0
- ansible/_internal/_yaml/_loader.py +66 -0
- ansible/_internal/ansible_collections/ansible/_protomatter/README.md +11 -0
- ansible/_internal/ansible_collections/ansible/_protomatter/plugins/action/debug.py +36 -0
- ansible/_internal/ansible_collections/ansible/_protomatter/plugins/filter/apply_trust.py +19 -0
- ansible/_internal/ansible_collections/ansible/_protomatter/plugins/filter/dump_object.py +18 -0
- ansible/_internal/ansible_collections/ansible/_protomatter/plugins/filter/finalize.py +16 -0
- ansible/_internal/ansible_collections/ansible/_protomatter/plugins/filter/origin.py +18 -0
- ansible/_internal/ansible_collections/ansible/_protomatter/plugins/filter/python_literal_eval.py +24 -0
- ansible/_internal/ansible_collections/ansible/_protomatter/plugins/filter/python_literal_eval.yml +33 -0
- ansible/_internal/ansible_collections/ansible/_protomatter/plugins/filter/tag_names.py +16 -0
- ansible/_internal/ansible_collections/ansible/_protomatter/plugins/filter/true_type.py +17 -0
- ansible/_internal/ansible_collections/ansible/_protomatter/plugins/filter/unmask.py +49 -0
- ansible/_internal/ansible_collections/ansible/_protomatter/plugins/lookup/config.py +21 -0
- ansible/_internal/ansible_collections/ansible/_protomatter/plugins/lookup/config.yml +2 -0
- ansible/_internal/ansible_collections/ansible/_protomatter/plugins/test/tagged.py +15 -0
- ansible/_internal/ansible_collections/ansible/_protomatter/plugins/test/tagged.yml +19 -0
- ansible/_internal/ansible_collections/ansible/_protomatter/plugins/test/tagged_with.py +18 -0
- ansible/_internal/ansible_collections/ansible/_protomatter/plugins/test/tagged_with.yml +19 -0
- ansible/cli/__init__.py +159 -89
- ansible/cli/_ssh_askpass.py +47 -0
- ansible/cli/adhoc.py +14 -7
- ansible/cli/arguments/option_helpers.py +154 -7
- ansible/cli/config.py +43 -68
- ansible/cli/console.py +10 -8
- ansible/cli/doc.py +62 -53
- ansible/cli/galaxy.py +27 -20
- ansible/cli/inventory.py +28 -26
- ansible/cli/playbook.py +4 -12
- ansible/cli/pull.py +51 -11
- ansible/cli/scripts/ansible_connection_cli_stub.py +7 -7
- ansible/cli/vault.py +12 -11
- ansible/compat/__init__.py +2 -2
- ansible/config/base.yml +166 -112
- ansible/config/manager.py +52 -49
- ansible/constants.py +3 -4
- ansible/errors/__init__.py +277 -235
- ansible/executor/interpreter_discovery.py +28 -149
- ansible/executor/module_common.py +426 -493
- ansible/executor/play_iterator.py +22 -27
- ansible/executor/playbook_executor.py +11 -11
- ansible/executor/powershell/async_watchdog.ps1 +97 -102
- ansible/executor/powershell/async_wrapper.ps1 +202 -151
- ansible/executor/powershell/become_wrapper.ps1 +89 -144
- ansible/executor/powershell/bootstrap_wrapper.ps1 +24 -9
- ansible/executor/powershell/coverage_wrapper.ps1 +82 -135
- ansible/executor/powershell/exec_wrapper.ps1 +462 -196
- ansible/executor/powershell/module_manifest.py +417 -265
- ansible/executor/powershell/module_wrapper.ps1 +169 -186
- ansible/executor/powershell/psrp_fetch_file.ps1 +41 -0
- ansible/executor/powershell/psrp_put_file.ps1 +122 -0
- ansible/executor/powershell/winrm_fetch_file.ps1 +46 -0
- ansible/executor/powershell/winrm_put_file.ps1 +36 -0
- ansible/executor/process/worker.py +161 -96
- ansible/executor/stats.py +5 -5
- ansible/executor/task_executor.py +268 -258
- ansible/executor/task_queue_manager.py +124 -90
- ansible/executor/task_result.py +183 -78
- ansible/galaxy/__init__.py +2 -2
- ansible/galaxy/api.py +22 -18
- ansible/galaxy/collection/__init__.py +1 -1
- ansible/galaxy/collection/concrete_artifact_manager.py +8 -11
- ansible/galaxy/dependency_resolution/dataclasses.py +14 -4
- ansible/galaxy/dependency_resolution/providers.py +1 -1
- ansible/galaxy/dependency_resolution/reporters.py +81 -0
- ansible/galaxy/role.py +4 -8
- ansible/galaxy/token.py +28 -21
- ansible/inventory/data.py +47 -57
- ansible/inventory/group.py +44 -72
- ansible/inventory/helpers.py +9 -0
- ansible/inventory/host.py +32 -54
- ansible/inventory/manager.py +78 -34
- ansible/keyword_desc.yml +1 -1
- ansible/module_utils/_internal/__init__.py +55 -0
- ansible/module_utils/_internal/_ambient_context.py +58 -0
- ansible/module_utils/_internal/_ansiballz.py +133 -0
- ansible/module_utils/_internal/_concurrent/_daemon_threading.py +1 -0
- ansible/module_utils/_internal/_dataclass_annotation_patch.py +64 -0
- ansible/module_utils/_internal/_dataclass_validation.py +217 -0
- ansible/module_utils/_internal/_datatag/__init__.py +928 -0
- ansible/module_utils/_internal/_datatag/_tags.py +38 -0
- ansible/module_utils/_internal/_debugging.py +31 -0
- ansible/module_utils/_internal/_errors.py +30 -0
- ansible/module_utils/_internal/_json/__init__.py +63 -0
- ansible/module_utils/_internal/_json/_legacy_encoder.py +26 -0
- ansible/module_utils/_internal/_json/_profiles/__init__.py +410 -0
- ansible/module_utils/_internal/_json/_profiles/_fallback_to_str.py +73 -0
- ansible/module_utils/_internal/_json/_profiles/_module_legacy_c2m.py +31 -0
- ansible/module_utils/_internal/_json/_profiles/_module_legacy_m2c.py +35 -0
- ansible/module_utils/_internal/_json/_profiles/_module_modern_c2m.py +35 -0
- ansible/module_utils/_internal/_json/_profiles/_module_modern_m2c.py +33 -0
- ansible/module_utils/_internal/_json/_profiles/_tagless.py +50 -0
- ansible/module_utils/_internal/_patches/__init__.py +66 -0
- ansible/module_utils/_internal/_patches/_dataclass_annotation_patch.py +55 -0
- ansible/module_utils/_internal/_patches/_socket_patch.py +34 -0
- ansible/module_utils/_internal/_patches/_sys_intern_patch.py +34 -0
- ansible/module_utils/_internal/_plugin_exec_context.py +49 -0
- ansible/module_utils/_internal/_testing.py +0 -0
- ansible/module_utils/_internal/_traceback.py +89 -0
- ansible/module_utils/ansible_release.py +2 -2
- ansible/module_utils/api.py +1 -2
- ansible/module_utils/basic.py +152 -120
- ansible/module_utils/common/_utils.py +24 -28
- ansible/module_utils/common/collections.py +1 -2
- ansible/module_utils/common/dict_transformations.py +2 -2
- ansible/module_utils/common/file.py +2 -2
- ansible/module_utils/common/json.py +90 -84
- ansible/module_utils/common/locale.py +2 -2
- ansible/module_utils/common/messages.py +108 -0
- ansible/module_utils/common/parameters.py +27 -24
- ansible/module_utils/common/process.py +2 -2
- ansible/module_utils/common/respawn.py +41 -19
- ansible/module_utils/common/sentinel.py +66 -0
- ansible/module_utils/common/sys_info.py +8 -8
- ansible/module_utils/common/text/converters.py +16 -37
- ansible/module_utils/common/validation.py +35 -24
- ansible/module_utils/common/warnings.py +86 -25
- ansible/module_utils/common/yaml.py +29 -3
- ansible/module_utils/compat/datetime.py +33 -21
- ansible/module_utils/compat/paramiko.py +21 -10
- ansible/module_utils/compat/typing.py +6 -5
- ansible/module_utils/connection.py +2 -2
- ansible/module_utils/csharp/Ansible.Basic.cs +14 -11
- ansible/module_utils/csharp/Ansible.Become.cs +1 -0
- ansible/module_utils/csharp/Ansible._Async.cs +517 -0
- ansible/module_utils/datatag.py +46 -0
- ansible/module_utils/distro/__init__.py +2 -2
- ansible/module_utils/facts/ansible_collector.py +4 -5
- ansible/module_utils/facts/collector.py +13 -14
- ansible/module_utils/facts/compat.py +4 -4
- ansible/module_utils/facts/default_collectors.py +1 -1
- ansible/module_utils/facts/hardware/aix.py +34 -0
- ansible/module_utils/facts/hardware/base.py +1 -1
- ansible/module_utils/facts/hardware/darwin.py +1 -3
- ansible/module_utils/facts/hardware/freebsd.py +2 -2
- ansible/module_utils/facts/hardware/linux.py +4 -4
- ansible/module_utils/facts/namespace.py +1 -1
- ansible/module_utils/facts/network/base.py +1 -1
- ansible/module_utils/facts/network/fc_wwn.py +1 -2
- ansible/module_utils/facts/network/iscsi.py +1 -2
- ansible/module_utils/facts/network/nvme.py +1 -2
- ansible/module_utils/facts/other/facter.py +1 -2
- ansible/module_utils/facts/other/ohai.py +2 -3
- ansible/module_utils/facts/system/apparmor.py +1 -2
- ansible/module_utils/facts/system/caps.py +1 -1
- ansible/module_utils/facts/system/chroot.py +1 -2
- ansible/module_utils/facts/system/cmdline.py +1 -2
- ansible/module_utils/facts/system/date_time.py +5 -3
- ansible/module_utils/facts/system/distribution.py +9 -8
- ansible/module_utils/facts/system/dns.py +1 -1
- ansible/module_utils/facts/system/env.py +1 -2
- ansible/module_utils/facts/system/fips.py +7 -20
- ansible/module_utils/facts/system/loadavg.py +1 -2
- ansible/module_utils/facts/system/local.py +1 -2
- ansible/module_utils/facts/system/lsb.py +1 -2
- ansible/module_utils/facts/system/pkg_mgr.py +1 -2
- ansible/module_utils/facts/system/platform.py +1 -2
- ansible/module_utils/facts/system/python.py +1 -2
- ansible/module_utils/facts/system/selinux.py +1 -1
- ansible/module_utils/facts/system/service_mgr.py +1 -2
- ansible/module_utils/facts/system/ssh_pub_keys.py +1 -1
- ansible/module_utils/facts/system/systemd.py +1 -1
- ansible/module_utils/facts/system/user.py +1 -2
- ansible/module_utils/facts/utils.py +3 -3
- ansible/module_utils/facts/virtual/base.py +1 -1
- ansible/module_utils/facts/virtual/sunos.py +3 -15
- ansible/module_utils/facts/virtual/sysctl.py +3 -16
- ansible/module_utils/json_utils.py +2 -2
- ansible/module_utils/parsing/convert_bool.py +1 -1
- ansible/module_utils/service.py +18 -21
- ansible/module_utils/splitter.py +7 -7
- ansible/module_utils/testing.py +31 -0
- ansible/module_utils/urls.py +60 -31
- ansible/modules/add_host.py +4 -4
- ansible/modules/apt.py +60 -46
- ansible/modules/apt_key.py +19 -12
- ansible/modules/apt_repository.py +19 -16
- ansible/modules/assemble.py +6 -6
- ansible/modules/assert.py +4 -4
- ansible/modules/async_status.py +10 -12
- ansible/modules/async_wrapper.py +8 -3
- ansible/modules/blockinfile.py +6 -7
- ansible/modules/command.py +10 -17
- ansible/modules/copy.py +57 -144
- ansible/modules/cron.py +20 -15
- ansible/modules/deb822_repository.py +8 -9
- ansible/modules/debconf.py +5 -5
- ansible/modules/debug.py +4 -4
- ansible/modules/dnf.py +8 -8
- ansible/modules/dnf5.py +39 -13
- ansible/modules/dpkg_selections.py +4 -4
- ansible/modules/expect.py +8 -10
- ansible/modules/fail.py +4 -4
- ansible/modules/fetch.py +4 -4
- ansible/modules/file.py +174 -133
- ansible/modules/find.py +19 -17
- ansible/modules/gather_facts.py +3 -3
- ansible/modules/get_url.py +59 -53
- ansible/modules/getent.py +7 -9
- ansible/modules/git.py +28 -25
- ansible/modules/group.py +6 -6
- ansible/modules/group_by.py +4 -4
- ansible/modules/hostname.py +13 -29
- ansible/modules/import_playbook.py +6 -6
- ansible/modules/import_role.py +6 -6
- ansible/modules/import_tasks.py +6 -6
- ansible/modules/include_role.py +6 -6
- ansible/modules/include_tasks.py +6 -6
- ansible/modules/include_vars.py +6 -6
- ansible/modules/iptables.py +86 -73
- ansible/modules/known_hosts.py +10 -10
- ansible/modules/lineinfile.py +5 -5
- ansible/modules/meta.py +4 -4
- ansible/modules/mount_facts.py +2 -2
- ansible/modules/package.py +4 -4
- ansible/modules/package_facts.py +22 -10
- ansible/modules/pause.py +6 -6
- ansible/modules/ping.py +6 -6
- ansible/modules/pip.py +10 -11
- ansible/modules/raw.py +4 -4
- ansible/modules/reboot.py +6 -6
- ansible/modules/replace.py +9 -13
- ansible/modules/rpm_key.py +7 -8
- ansible/modules/script.py +4 -4
- ansible/modules/service.py +7 -8
- ansible/modules/service_facts.py +87 -10
- ansible/modules/set_fact.py +5 -5
- ansible/modules/set_stats.py +4 -4
- ansible/modules/setup.py +2 -2
- ansible/modules/shell.py +6 -6
- ansible/modules/slurp.py +6 -6
- ansible/modules/stat.py +9 -23
- ansible/modules/subversion.py +15 -15
- ansible/modules/systemd.py +6 -6
- ansible/modules/systemd_service.py +6 -6
- ansible/modules/sysvinit.py +6 -6
- ansible/modules/tempfile.py +5 -6
- ansible/modules/template.py +6 -6
- ansible/modules/unarchive.py +32 -11
- ansible/modules/uri.py +33 -26
- ansible/modules/user.py +53 -34
- ansible/modules/validate_argument_spec.py +10 -7
- ansible/modules/wait_for.py +32 -27
- ansible/modules/wait_for_connection.py +6 -6
- ansible/modules/yum_repository.py +6 -6
- ansible/parsing/ajson.py +14 -32
- ansible/parsing/dataloader.py +99 -54
- ansible/parsing/mod_args.py +28 -44
- ansible/parsing/plugin_docs.py +21 -86
- ansible/parsing/quoting.py +1 -1
- ansible/parsing/splitter.py +27 -12
- ansible/parsing/utils/addresses.py +24 -24
- ansible/parsing/utils/jsonify.py +5 -1
- ansible/parsing/utils/yaml.py +32 -61
- ansible/parsing/vault/__init__.py +319 -87
- ansible/parsing/yaml/__init__.py +0 -18
- ansible/parsing/yaml/dumper.py +6 -120
- ansible/parsing/yaml/loader.py +6 -39
- ansible/parsing/yaml/objects.py +43 -335
- ansible/playbook/__init__.py +1 -1
- ansible/playbook/attribute.py +8 -3
- ansible/playbook/base.py +182 -132
- ansible/playbook/block.py +26 -24
- ansible/playbook/collectionsearch.py +1 -15
- ansible/playbook/conditional.py +3 -77
- ansible/playbook/handler.py +8 -2
- ansible/playbook/helpers.py +41 -53
- ansible/playbook/included_file.py +31 -27
- ansible/playbook/loop_control.py +2 -2
- ansible/playbook/play.py +85 -44
- ansible/playbook/play_context.py +12 -17
- ansible/playbook/playbook_include.py +14 -15
- ansible/playbook/role/__init__.py +24 -26
- ansible/playbook/role/definition.py +15 -17
- ansible/playbook/role/include.py +2 -4
- ansible/playbook/role/metadata.py +10 -11
- ansible/playbook/role_include.py +3 -3
- ansible/playbook/taggable.py +13 -8
- ansible/playbook/task.py +188 -118
- ansible/playbook/task_include.py +5 -5
- ansible/plugins/__init__.py +68 -21
- ansible/plugins/action/__init__.py +209 -176
- ansible/plugins/action/add_host.py +1 -1
- ansible/plugins/action/assemble.py +1 -1
- ansible/plugins/action/assert.py +54 -66
- ansible/plugins/action/copy.py +7 -11
- ansible/plugins/action/debug.py +37 -31
- ansible/plugins/action/dnf.py +3 -4
- ansible/plugins/action/fail.py +1 -1
- ansible/plugins/action/fetch.py +4 -5
- ansible/plugins/action/gather_facts.py +7 -6
- ansible/plugins/action/group_by.py +1 -1
- ansible/plugins/action/include_vars.py +10 -11
- ansible/plugins/action/package.py +3 -6
- ansible/plugins/action/pause.py +2 -2
- ansible/plugins/action/script.py +15 -8
- ansible/plugins/action/service.py +6 -11
- ansible/plugins/action/set_fact.py +3 -12
- ansible/plugins/action/set_stats.py +3 -8
- ansible/plugins/action/template.py +35 -59
- ansible/plugins/action/unarchive.py +1 -1
- ansible/plugins/action/validate_argument_spec.py +5 -5
- ansible/plugins/action/wait_for_connection.py +1 -1
- ansible/plugins/become/__init__.py +31 -8
- ansible/plugins/become/runas.py +71 -0
- ansible/plugins/become/su.py +13 -8
- ansible/plugins/become/sudo.py +19 -0
- ansible/plugins/cache/__init__.py +35 -44
- ansible/plugins/cache/base.py +8 -0
- ansible/plugins/cache/jsonfile.py +10 -16
- ansible/plugins/cache/memory.py +6 -12
- ansible/plugins/callback/__init__.py +284 -179
- ansible/plugins/callback/default.py +99 -92
- ansible/plugins/callback/junit.py +44 -39
- ansible/plugins/callback/minimal.py +28 -25
- ansible/plugins/callback/oneline.py +28 -21
- ansible/plugins/callback/tree.py +16 -11
- ansible/plugins/connection/__init__.py +47 -34
- ansible/plugins/connection/local.py +150 -54
- ansible/plugins/connection/paramiko_ssh.py +21 -18
- ansible/plugins/connection/psrp.py +76 -165
- ansible/plugins/connection/ssh.py +301 -78
- ansible/plugins/connection/winrm.py +58 -140
- ansible/plugins/doc_fragments/action_common_attributes.py +14 -14
- ansible/plugins/doc_fragments/action_core.py +6 -6
- ansible/plugins/doc_fragments/backup.py +2 -2
- ansible/plugins/doc_fragments/checksum_common.py +27 -0
- ansible/plugins/doc_fragments/constructed.py +6 -2
- ansible/plugins/doc_fragments/decrypt.py +2 -2
- ansible/plugins/doc_fragments/default_callback.py +2 -2
- ansible/plugins/doc_fragments/files.py +2 -2
- ansible/plugins/doc_fragments/inventory_cache.py +2 -2
- ansible/plugins/doc_fragments/result_format_callback.py +2 -2
- ansible/plugins/doc_fragments/return_common.py +2 -2
- ansible/plugins/doc_fragments/template_common.py +4 -4
- ansible/plugins/doc_fragments/url.py +17 -1
- ansible/plugins/doc_fragments/url_windows.py +2 -2
- ansible/plugins/doc_fragments/validate.py +2 -2
- ansible/plugins/doc_fragments/vars_plugin_staging.py +2 -2
- ansible/plugins/filter/__init__.py +6 -2
- ansible/plugins/filter/b64decode.yml +22 -0
- ansible/plugins/filter/b64encode.yml +22 -0
- ansible/plugins/filter/bool.yml +11 -4
- ansible/plugins/filter/core.py +225 -108
- ansible/plugins/filter/encryption.py +32 -32
- ansible/plugins/filter/flatten.yml +3 -2
- ansible/plugins/filter/human_to_bytes.yml +1 -1
- ansible/plugins/filter/mathstuff.py +30 -37
- ansible/plugins/filter/password_hash.yml +8 -0
- ansible/plugins/filter/regex_search.yml +1 -4
- ansible/plugins/filter/split.yml +1 -1
- ansible/plugins/filter/to_nice_yaml.yml +0 -4
- ansible/plugins/filter/to_yaml.yml +0 -4
- ansible/plugins/filter/unvault.yml +1 -1
- ansible/plugins/filter/urls.py +1 -1
- ansible/plugins/filter/urlsplit.py +8 -9
- ansible/plugins/filter/vault.yml +14 -9
- ansible/plugins/filter/win_basename.yml +6 -1
- ansible/plugins/filter/win_dirname.yml +5 -0
- ansible/plugins/inventory/__init__.py +97 -77
- ansible/plugins/inventory/advanced_host_list.py +7 -5
- ansible/plugins/inventory/auto.py +11 -4
- ansible/plugins/inventory/constructed.py +21 -24
- ansible/plugins/inventory/generator.py +16 -11
- ansible/plugins/inventory/host_list.py +7 -5
- ansible/plugins/inventory/ini.py +78 -44
- ansible/plugins/inventory/script.py +189 -119
- ansible/plugins/inventory/toml.py +16 -126
- ansible/plugins/inventory/yaml.py +10 -8
- ansible/plugins/list.py +3 -3
- ansible/plugins/loader.py +197 -82
- ansible/plugins/lookup/__init__.py +21 -4
- ansible/plugins/lookup/config.py +21 -35
- ansible/plugins/lookup/csvfile.py +3 -2
- ansible/plugins/lookup/dict.py +1 -6
- ansible/plugins/lookup/env.py +12 -9
- ansible/plugins/lookup/file.py +5 -8
- ansible/plugins/lookup/first_found.py +86 -55
- ansible/plugins/lookup/indexed_items.py +1 -10
- ansible/plugins/lookup/ini.py +14 -13
- ansible/plugins/lookup/items.py +1 -1
- ansible/plugins/lookup/lines.py +8 -1
- ansible/plugins/lookup/list.py +1 -1
- ansible/plugins/lookup/nested.py +2 -18
- ansible/plugins/lookup/password.py +5 -5
- ansible/plugins/lookup/pipe.py +5 -7
- ansible/plugins/lookup/sequence.py +18 -8
- ansible/plugins/lookup/subelements.py +1 -4
- ansible/plugins/lookup/template.py +42 -36
- ansible/plugins/lookup/together.py +0 -12
- ansible/plugins/lookup/unvault.py +1 -5
- ansible/plugins/lookup/url.py +2 -8
- ansible/plugins/lookup/vars.py +16 -24
- ansible/plugins/shell/__init__.py +2 -2
- ansible/plugins/shell/cmd.py +2 -2
- ansible/plugins/shell/powershell.py +39 -22
- ansible/plugins/shell/sh.py +3 -2
- ansible/plugins/strategy/__init__.py +159 -184
- ansible/plugins/strategy/debug.py +2 -2
- ansible/plugins/strategy/free.py +16 -31
- ansible/plugins/strategy/host_pinned.py +2 -2
- ansible/plugins/strategy/linear.py +41 -41
- ansible/plugins/terminal/__init__.py +4 -4
- ansible/plugins/test/__init__.py +7 -2
- ansible/plugins/test/core.py +55 -21
- ansible/plugins/test/files.py +1 -1
- ansible/plugins/test/mathstuff.py +3 -3
- ansible/plugins/test/uri.py +3 -3
- ansible/plugins/vars/host_group_vars.py +7 -14
- ansible/release.py +2 -2
- ansible/template/__init__.py +370 -944
- ansible/utils/__init__.py +0 -18
- ansible/utils/_ssh_agent.py +657 -0
- ansible/utils/collection_loader/__init__.py +52 -5
- ansible/utils/collection_loader/_collection_config.py +5 -6
- ansible/utils/collection_loader/_collection_finder.py +79 -93
- ansible/utils/collection_loader/_collection_meta.py +13 -8
- ansible/utils/display.py +433 -63
- ansible/utils/encrypt.py +27 -19
- ansible/utils/fqcn.py +2 -2
- ansible/utils/hashing.py +2 -2
- ansible/utils/helpers.py +2 -2
- ansible/utils/listify.py +8 -8
- ansible/utils/lock.py +2 -2
- ansible/utils/path.py +4 -4
- ansible/utils/plugin_docs.py +14 -13
- ansible/utils/sentinel.py +4 -62
- ansible/utils/singleton.py +2 -0
- ansible/utils/ssh_functions.py +1 -1
- ansible/utils/unsafe_proxy.py +23 -332
- ansible/utils/vars.py +51 -8
- ansible/utils/version.py +2 -2
- ansible/vars/clean.py +5 -5
- ansible/vars/hostvars.py +60 -90
- ansible/vars/manager.py +206 -282
- ansible/vars/reserved.py +8 -9
- ansible_core-2.19.0b2.dist-info/BSD-3-Clause.txt +28 -0
- {ansible_core-2.18.5rc1.dist-info → ansible_core-2.19.0b2.dist-info}/METADATA +5 -4
- ansible_core-2.19.0b2.dist-info/RECORD +1072 -0
- {ansible_core-2.18.5rc1.dist-info → ansible_core-2.19.0b2.dist-info}/WHEEL +1 -1
- ansible_test/_data/completion/docker.txt +7 -7
- ansible_test/_data/completion/remote.txt +6 -6
- ansible_test/_data/completion/windows.txt +1 -0
- ansible_test/_data/requirements/ansible.txt +2 -2
- ansible_test/_data/requirements/sanity.ansible-doc.txt +3 -3
- ansible_test/_data/requirements/sanity.changelog.txt +1 -1
- ansible_test/_data/requirements/sanity.import.plugin.txt +2 -2
- ansible_test/_data/requirements/sanity.pylint.txt +4 -4
- ansible_test/_data/requirements/sanity.validate-modules.txt +2 -2
- ansible_test/_data/requirements/sanity.yamllint.txt +1 -1
- ansible_test/_data/requirements/units.txt +1 -0
- ansible_test/_internal/__init__.py +1 -0
- ansible_test/_internal/ansible_util.py +2 -0
- ansible_test/_internal/become.py +1 -0
- ansible_test/_internal/bootstrap.py +1 -0
- ansible_test/_internal/cache.py +1 -0
- ansible_test/_internal/cgroup.py +1 -0
- ansible_test/_internal/ci/__init__.py +1 -0
- ansible_test/_internal/ci/azp.py +1 -0
- ansible_test/_internal/ci/local.py +1 -0
- ansible_test/_internal/classification/__init__.py +1 -0
- ansible_test/_internal/classification/common.py +1 -0
- ansible_test/_internal/classification/csharp.py +1 -0
- ansible_test/_internal/classification/powershell.py +1 -0
- ansible_test/_internal/classification/python.py +1 -0
- ansible_test/_internal/cli/__init__.py +1 -0
- ansible_test/_internal/cli/actions.py +1 -0
- ansible_test/_internal/cli/argparsing/__init__.py +1 -0
- ansible_test/_internal/cli/argparsing/actions.py +1 -0
- ansible_test/_internal/cli/argparsing/argcompletion.py +1 -0
- ansible_test/_internal/cli/argparsing/parsers.py +1 -0
- ansible_test/_internal/cli/commands/__init__.py +11 -0
- ansible_test/_internal/cli/commands/coverage/__init__.py +1 -0
- ansible_test/_internal/cli/commands/coverage/analyze/__init__.py +1 -0
- ansible_test/_internal/cli/commands/coverage/analyze/targets/__init__.py +1 -0
- ansible_test/_internal/cli/commands/coverage/analyze/targets/combine.py +1 -0
- ansible_test/_internal/cli/commands/coverage/analyze/targets/expand.py +1 -0
- ansible_test/_internal/cli/commands/coverage/analyze/targets/filter.py +1 -0
- ansible_test/_internal/cli/commands/coverage/analyze/targets/generate.py +1 -0
- ansible_test/_internal/cli/commands/coverage/analyze/targets/missing.py +1 -0
- ansible_test/_internal/cli/commands/coverage/combine.py +1 -0
- ansible_test/_internal/cli/commands/coverage/erase.py +1 -0
- ansible_test/_internal/cli/commands/coverage/html.py +1 -0
- ansible_test/_internal/cli/commands/coverage/report.py +1 -0
- ansible_test/_internal/cli/commands/coverage/xml.py +1 -0
- ansible_test/_internal/cli/commands/env.py +1 -0
- ansible_test/_internal/cli/commands/integration/__init__.py +1 -0
- ansible_test/_internal/cli/commands/integration/network.py +1 -0
- ansible_test/_internal/cli/commands/integration/posix.py +1 -0
- ansible_test/_internal/cli/commands/integration/windows.py +1 -0
- ansible_test/_internal/cli/commands/sanity.py +9 -0
- ansible_test/_internal/cli/commands/shell.py +1 -0
- ansible_test/_internal/cli/commands/units.py +1 -0
- ansible_test/_internal/cli/compat.py +1 -0
- ansible_test/_internal/cli/completers.py +1 -0
- ansible_test/_internal/cli/converters.py +1 -0
- ansible_test/_internal/cli/environments.py +1 -0
- ansible_test/_internal/cli/epilog.py +1 -0
- ansible_test/_internal/cli/parsers/__init__.py +1 -0
- ansible_test/_internal/cli/parsers/base_argument_parsers.py +1 -0
- ansible_test/_internal/cli/parsers/helpers.py +1 -0
- ansible_test/_internal/cli/parsers/host_config_parsers.py +1 -0
- ansible_test/_internal/cli/parsers/key_value_parsers.py +1 -0
- ansible_test/_internal/cli/parsers/value_parsers.py +1 -0
- ansible_test/_internal/commands/__init__.py +1 -0
- ansible_test/_internal/commands/coverage/__init__.py +2 -1
- ansible_test/_internal/commands/coverage/analyze/__init__.py +1 -0
- ansible_test/_internal/commands/coverage/analyze/targets/__init__.py +1 -0
- ansible_test/_internal/commands/coverage/analyze/targets/combine.py +1 -0
- ansible_test/_internal/commands/coverage/analyze/targets/expand.py +1 -0
- ansible_test/_internal/commands/coverage/analyze/targets/filter.py +1 -0
- ansible_test/_internal/commands/coverage/analyze/targets/generate.py +1 -0
- ansible_test/_internal/commands/coverage/analyze/targets/missing.py +1 -0
- ansible_test/_internal/commands/coverage/combine.py +2 -1
- ansible_test/_internal/commands/coverage/erase.py +1 -0
- ansible_test/_internal/commands/coverage/html.py +1 -0
- ansible_test/_internal/commands/coverage/report.py +1 -0
- ansible_test/_internal/commands/coverage/xml.py +1 -0
- ansible_test/_internal/commands/env/__init__.py +2 -0
- ansible_test/_internal/commands/integration/__init__.py +4 -0
- ansible_test/_internal/commands/integration/cloud/__init__.py +1 -0
- ansible_test/_internal/commands/integration/cloud/acme.py +2 -1
- ansible_test/_internal/commands/integration/cloud/aws.py +1 -0
- ansible_test/_internal/commands/integration/cloud/azure.py +1 -0
- ansible_test/_internal/commands/integration/cloud/cs.py +1 -0
- ansible_test/_internal/commands/integration/cloud/digitalocean.py +1 -0
- ansible_test/_internal/commands/integration/cloud/galaxy.py +3 -2
- ansible_test/_internal/commands/integration/cloud/hcloud.py +1 -0
- ansible_test/_internal/commands/integration/cloud/httptester.py +2 -1
- ansible_test/_internal/commands/integration/cloud/nios.py +2 -1
- ansible_test/_internal/commands/integration/cloud/opennebula.py +1 -0
- ansible_test/_internal/commands/integration/cloud/openshift.py +1 -0
- ansible_test/_internal/commands/integration/cloud/scaleway.py +1 -0
- ansible_test/_internal/commands/integration/cloud/vcenter.py +1 -0
- ansible_test/_internal/commands/integration/cloud/vultr.py +1 -0
- ansible_test/_internal/commands/integration/coverage.py +1 -0
- ansible_test/_internal/commands/integration/filters.py +1 -0
- ansible_test/_internal/commands/integration/network.py +1 -0
- ansible_test/_internal/commands/integration/posix.py +1 -0
- ansible_test/_internal/commands/integration/windows.py +1 -0
- ansible_test/_internal/commands/sanity/__init__.py +16 -1
- ansible_test/_internal/commands/sanity/ansible_doc.py +1 -0
- ansible_test/_internal/commands/sanity/bin_symlinks.py +1 -0
- ansible_test/_internal/commands/sanity/compile.py +1 -0
- ansible_test/_internal/commands/sanity/ignores.py +1 -0
- ansible_test/_internal/commands/sanity/import.py +1 -0
- ansible_test/_internal/commands/sanity/integration_aliases.py +1 -0
- ansible_test/_internal/commands/sanity/pep8.py +1 -0
- ansible_test/_internal/commands/sanity/pslint.py +1 -0
- ansible_test/_internal/commands/sanity/pylint.py +24 -26
- ansible_test/_internal/commands/sanity/shellcheck.py +1 -0
- ansible_test/_internal/commands/sanity/validate_modules.py +1 -0
- ansible_test/_internal/commands/sanity/yamllint.py +1 -0
- ansible_test/_internal/commands/shell/__init__.py +1 -0
- ansible_test/_internal/commands/units/__init__.py +1 -0
- ansible_test/_internal/compat/__init__.py +1 -0
- ansible_test/_internal/compat/packaging.py +1 -0
- ansible_test/_internal/compat/yaml.py +1 -0
- ansible_test/_internal/completion.py +1 -0
- ansible_test/_internal/config.py +2 -0
- ansible_test/_internal/connections.py +1 -0
- ansible_test/_internal/constants.py +1 -0
- ansible_test/_internal/containers.py +1 -0
- ansible_test/_internal/content_config.py +1 -0
- ansible_test/_internal/core_ci.py +1 -0
- ansible_test/_internal/coverage_util.py +11 -10
- ansible_test/_internal/data.py +1 -0
- ansible_test/_internal/delegation.py +1 -0
- ansible_test/_internal/dev/__init__.py +1 -0
- ansible_test/_internal/dev/container_probe.py +1 -0
- ansible_test/_internal/diff.py +3 -2
- ansible_test/_internal/docker_util.py +2 -1
- ansible_test/_internal/encoding.py +1 -0
- ansible_test/_internal/executor.py +1 -0
- ansible_test/_internal/git.py +1 -0
- ansible_test/_internal/host_configs.py +1 -0
- ansible_test/_internal/host_profiles.py +1 -0
- ansible_test/_internal/http.py +1 -0
- ansible_test/_internal/init.py +1 -0
- ansible_test/_internal/inventory.py +35 -3
- ansible_test/_internal/io.py +1 -0
- ansible_test/_internal/metadata.py +1 -0
- ansible_test/_internal/payload.py +1 -0
- ansible_test/_internal/provider/__init__.py +1 -0
- ansible_test/_internal/provider/layout/__init__.py +1 -0
- ansible_test/_internal/provider/layout/ansible.py +1 -0
- ansible_test/_internal/provider/layout/collection.py +1 -0
- ansible_test/_internal/provider/layout/unsupported.py +1 -0
- ansible_test/_internal/provider/source/__init__.py +1 -0
- ansible_test/_internal/provider/source/git.py +1 -0
- ansible_test/_internal/provider/source/installed.py +1 -0
- ansible_test/_internal/provider/source/unsupported.py +1 -0
- ansible_test/_internal/provider/source/unversioned.py +1 -0
- ansible_test/_internal/provisioning.py +1 -0
- ansible_test/_internal/pypi_proxy.py +6 -5
- ansible_test/_internal/python_requirements.py +1 -0
- ansible_test/_internal/ssh.py +1 -0
- ansible_test/_internal/target.py +1 -0
- ansible_test/_internal/test.py +3 -2
- ansible_test/_internal/thread.py +1 -0
- ansible_test/_internal/timeout.py +1 -0
- ansible_test/_internal/util.py +1 -0
- ansible_test/_internal/util_common.py +5 -2
- ansible_test/_internal/venv.py +1 -0
- ansible_test/_util/controller/sanity/code-smell/action-plugin-docs.py +1 -0
- ansible_test/_util/controller/sanity/code-smell/changelog/sphinx.py +1 -0
- ansible_test/_util/controller/sanity/code-smell/changelog.py +1 -0
- ansible_test/_util/controller/sanity/code-smell/empty-init.py +1 -0
- ansible_test/_util/controller/sanity/code-smell/line-endings.py +1 -0
- ansible_test/_util/controller/sanity/code-smell/no-assert.py +1 -0
- ansible_test/_util/controller/sanity/code-smell/no-get-exception.py +1 -0
- ansible_test/_util/controller/sanity/code-smell/no-illegal-filenames.py +1 -0
- ansible_test/_util/controller/sanity/code-smell/no-smart-quotes.py +1 -0
- ansible_test/_util/controller/sanity/code-smell/replace-urlopen.py +1 -0
- ansible_test/_util/controller/sanity/code-smell/runtime-metadata.py +28 -1
- ansible_test/_util/controller/sanity/code-smell/shebang.py +1 -0
- ansible_test/_util/controller/sanity/code-smell/symlinks.py +1 -0
- ansible_test/_util/controller/sanity/code-smell/use-argspec-type-path.py +1 -0
- ansible_test/_util/controller/sanity/code-smell/use-compat-six.py +1 -0
- ansible_test/_util/controller/sanity/integration-aliases/yaml_to_json.py +2 -1
- ansible_test/_util/controller/sanity/pep8/current-ignore.txt +4 -0
- ansible_test/_util/controller/sanity/pylint/config/ansible-test-target.cfg +7 -5
- ansible_test/_util/controller/sanity/pylint/config/ansible-test.cfg +7 -5
- ansible_test/_util/controller/sanity/pylint/config/code-smell.cfg +7 -5
- ansible_test/_util/controller/sanity/pylint/config/collection.cfg +3 -5
- ansible_test/_util/controller/sanity/pylint/config/default.cfg +7 -7
- ansible_test/_util/controller/sanity/pylint/plugins/deprecated.py +1 -13
- ansible_test/_util/controller/sanity/pylint/plugins/hide_unraisable.py +1 -0
- ansible_test/_util/controller/sanity/pylint/plugins/string_format.py +1 -8
- ansible_test/_util/controller/sanity/pylint/plugins/unwanted.py +1 -8
- ansible_test/_util/controller/sanity/validate-modules/validate_modules/main.py +55 -28
- ansible_test/_util/controller/sanity/validate-modules/validate_modules/module_args.py +12 -5
- ansible_test/_util/controller/sanity/validate-modules/validate_modules/schema.py +13 -2
- ansible_test/_util/controller/sanity/validate-modules/validate_modules/utils.py +1 -0
- ansible_test/_util/controller/sanity/yamllint/yamllinter.py +35 -17
- ansible_test/_util/controller/tools/collection_detail.py +1 -0
- ansible_test/_util/controller/tools/yaml_to_json.py +2 -1
- ansible_test/_util/target/pytest/plugins/ansible_forked.py +6 -1
- ansible_test/_util/target/pytest/plugins/ansible_pytest_collections.py +2 -1
- ansible_test/_util/target/pytest/plugins/ansible_pytest_coverage.py +1 -0
- ansible_test/_util/target/sanity/compile/compile.py +1 -0
- ansible_test/_util/target/sanity/import/importer.py +15 -16
- ansible_test/_util/target/setup/bootstrap.sh +9 -20
- ansible_test/_util/target/setup/probe_cgroups.py +1 -0
- ansible_test/_util/target/setup/quiet_pip.py +1 -0
- ansible_test/_util/target/setup/requirements.py +35 -27
- ansible_test/_util/target/tools/virtualenvcheck.py +2 -1
- ansible_test/_util/target/tools/yamlcheck.py +2 -1
- ansible/compat/selectors.py +0 -32
- ansible/errors/yaml_strings.py +0 -138
- ansible/executor/action_write_locks.py +0 -44
- ansible/executor/discovery/python_target.py +0 -47
- ansible/executor/powershell/module_powershell_wrapper.ps1 +0 -86
- ansible/executor/powershell/module_script_wrapper.ps1 +0 -22
- ansible/module_utils/compat/importlib.py +0 -26
- ansible/module_utils/compat/selectors.py +0 -32
- ansible/module_utils/pycompat24.py +0 -73
- ansible/parsing/yaml/constructor.py +0 -178
- ansible/template/native_helpers.py +0 -251
- ansible/template/template.py +0 -43
- ansible/template/vars.py +0 -77
- ansible/utils/native_jinja.py +0 -11
- ansible/vars/fact_cache.py +0 -71
- ansible_core-2.18.5rc1.dist-info/RECORD +0 -992
- {ansible_core-2.18.5rc1.dist-info → ansible_core-2.19.0b2.dist-info}/Apache-License.txt +0 -0
- {ansible_core-2.18.5rc1.dist-info → ansible_core-2.19.0b2.dist-info}/COPYING +0 -0
- {ansible_core-2.18.5rc1.dist-info → ansible_core-2.19.0b2.dist-info}/MIT-license.txt +0 -0
- {ansible_core-2.18.5rc1.dist-info → ansible_core-2.19.0b2.dist-info}/PSF-license.txt +0 -0
- {ansible_core-2.18.5rc1.dist-info → ansible_core-2.19.0b2.dist-info}/entry_points.txt +0 -0
- {ansible_core-2.18.5rc1.dist-info → ansible_core-2.19.0b2.dist-info}/simplified_bsd.txt +0 -0
- {ansible_core-2.18.5rc1.dist-info → ansible_core-2.19.0b2.dist-info}/top_level.txt +0 -0
@@ -6,7 +6,7 @@
|
|
6
6
|
from __future__ import annotations
|
7
7
|
|
8
8
|
|
9
|
-
DOCUMENTATION = r
|
9
|
+
DOCUMENTATION = r"""
|
10
10
|
---
|
11
11
|
author: Ansible Core Team (@ansible)
|
12
12
|
module: import_playbook
|
@@ -42,9 +42,9 @@ seealso:
|
|
42
42
|
- module: ansible.builtin.include_tasks
|
43
43
|
- ref: playbooks_reuse
|
44
44
|
description: More information related to including and importing playbooks, roles and tasks.
|
45
|
-
|
45
|
+
"""
|
46
46
|
|
47
|
-
EXAMPLES = r
|
47
|
+
EXAMPLES = r"""
|
48
48
|
- hosts: localhost
|
49
49
|
tasks:
|
50
50
|
- ansible.builtin.debug:
|
@@ -69,8 +69,8 @@ EXAMPLES = r'''
|
|
69
69
|
|
70
70
|
- name: This fails because I'm inside a play already
|
71
71
|
ansible.builtin.import_playbook: stuff.yaml
|
72
|
-
|
72
|
+
"""
|
73
73
|
|
74
|
-
RETURN = r
|
74
|
+
RETURN = r"""
|
75
75
|
# This module does not return anything except plays to execute.
|
76
|
-
|
76
|
+
"""
|
ansible/modules/import_role.py
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
from __future__ import annotations
|
6
6
|
|
7
7
|
|
8
|
-
DOCUMENTATION = r
|
8
|
+
DOCUMENTATION = r"""
|
9
9
|
---
|
10
10
|
author: Ansible Core Team (@ansible)
|
11
11
|
module: import_role
|
@@ -87,9 +87,9 @@ seealso:
|
|
87
87
|
- module: ansible.builtin.include_tasks
|
88
88
|
- ref: playbooks_reuse
|
89
89
|
description: More information related to including and importing playbooks, roles and tasks.
|
90
|
-
|
90
|
+
"""
|
91
91
|
|
92
|
-
EXAMPLES = r
|
92
|
+
EXAMPLES = r"""
|
93
93
|
- hosts: all
|
94
94
|
tasks:
|
95
95
|
- ansible.builtin.import_role:
|
@@ -110,8 +110,8 @@ EXAMPLES = r'''
|
|
110
110
|
ansible.builtin.import_role:
|
111
111
|
name: myrole
|
112
112
|
when: not idontwanttorun
|
113
|
-
|
113
|
+
"""
|
114
114
|
|
115
|
-
RETURN = r
|
115
|
+
RETURN = r"""
|
116
116
|
# This module does not return anything except tasks to execute.
|
117
|
-
|
117
|
+
"""
|
ansible/modules/import_tasks.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from __future__ import annotations
|
7
7
|
|
8
8
|
|
9
|
-
DOCUMENTATION = r
|
9
|
+
DOCUMENTATION = r"""
|
10
10
|
---
|
11
11
|
author: Ansible Core Team (@ansible)
|
12
12
|
module: import_tasks
|
@@ -46,9 +46,9 @@ seealso:
|
|
46
46
|
- module: ansible.builtin.include_tasks
|
47
47
|
- ref: playbooks_reuse
|
48
48
|
description: More information related to including and importing playbooks, roles and tasks.
|
49
|
-
|
49
|
+
"""
|
50
50
|
|
51
|
-
EXAMPLES = r
|
51
|
+
EXAMPLES = r"""
|
52
52
|
- hosts: all
|
53
53
|
tasks:
|
54
54
|
- ansible.builtin.debug:
|
@@ -69,8 +69,8 @@ EXAMPLES = r'''
|
|
69
69
|
- name: Apply conditional to all imported tasks
|
70
70
|
ansible.builtin.import_tasks: stuff.yaml
|
71
71
|
when: hostvar is defined
|
72
|
-
|
72
|
+
"""
|
73
73
|
|
74
|
-
RETURN = r
|
74
|
+
RETURN = r"""
|
75
75
|
# This module does not return anything except tasks to execute.
|
76
|
-
|
76
|
+
"""
|
ansible/modules/include_role.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from __future__ import annotations
|
7
7
|
|
8
8
|
|
9
|
-
DOCUMENTATION = r
|
9
|
+
DOCUMENTATION = r"""
|
10
10
|
---
|
11
11
|
author: Ansible Core Team (@ansible)
|
12
12
|
module: include_role
|
@@ -92,9 +92,9 @@ seealso:
|
|
92
92
|
- module: ansible.builtin.include_tasks
|
93
93
|
- ref: playbooks_reuse
|
94
94
|
description: More information related to including and importing playbooks, roles and tasks.
|
95
|
-
|
95
|
+
"""
|
96
96
|
|
97
|
-
EXAMPLES = r
|
97
|
+
EXAMPLES = r"""
|
98
98
|
- ansible.builtin.include_role:
|
99
99
|
name: myrole
|
100
100
|
|
@@ -131,8 +131,8 @@ EXAMPLES = r'''
|
|
131
131
|
- install
|
132
132
|
tags:
|
133
133
|
- always
|
134
|
-
|
134
|
+
"""
|
135
135
|
|
136
|
-
RETURN = r
|
136
|
+
RETURN = r"""
|
137
137
|
# This module does not return anything except tasks to execute.
|
138
|
-
|
138
|
+
"""
|
ansible/modules/include_tasks.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from __future__ import annotations
|
7
7
|
|
8
8
|
|
9
|
-
DOCUMENTATION = r
|
9
|
+
DOCUMENTATION = r"""
|
10
10
|
---
|
11
11
|
author: Ansible Core Team (@ansible)
|
12
12
|
module: include_tasks
|
@@ -50,9 +50,9 @@ seealso:
|
|
50
50
|
- module: ansible.builtin.include_role
|
51
51
|
- ref: playbooks_reuse
|
52
52
|
description: More information related to including and importing playbooks, roles and tasks.
|
53
|
-
|
53
|
+
"""
|
54
54
|
|
55
|
-
EXAMPLES = r
|
55
|
+
EXAMPLES = r"""
|
56
56
|
- hosts: all
|
57
57
|
tasks:
|
58
58
|
- ansible.builtin.debug:
|
@@ -91,8 +91,8 @@ EXAMPLES = r'''
|
|
91
91
|
- install
|
92
92
|
tags:
|
93
93
|
- always
|
94
|
-
|
94
|
+
"""
|
95
95
|
|
96
|
-
RETURN = r
|
96
|
+
RETURN = r"""
|
97
97
|
# This module does not return anything except tasks to execute.
|
98
|
-
|
98
|
+
"""
|
ansible/modules/include_vars.py
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
from __future__ import annotations
|
6
6
|
|
7
7
|
|
8
|
-
DOCUMENTATION = r
|
8
|
+
DOCUMENTATION = r"""
|
9
9
|
---
|
10
10
|
author: Allen Sanabria (@linuxdynasty)
|
11
11
|
module: include_vars
|
@@ -112,9 +112,9 @@ seealso:
|
|
112
112
|
- module: ansible.builtin.set_fact
|
113
113
|
- ref: playbooks_delegation
|
114
114
|
description: More information related to task delegation.
|
115
|
-
|
115
|
+
"""
|
116
116
|
|
117
|
-
EXAMPLES = r
|
117
|
+
EXAMPLES = r"""
|
118
118
|
- name: Include vars of stuff.yaml into the 'stuff' variable (2.2).
|
119
119
|
ansible.builtin.include_vars:
|
120
120
|
file: stuff.yaml
|
@@ -179,9 +179,9 @@ EXAMPLES = r'''
|
|
179
179
|
- 'yaml'
|
180
180
|
- 'yml'
|
181
181
|
- 'json'
|
182
|
-
|
182
|
+
"""
|
183
183
|
|
184
|
-
RETURN = r
|
184
|
+
RETURN = r"""
|
185
185
|
ansible_facts:
|
186
186
|
description: Variables that were included and their values
|
187
187
|
returned: success
|
@@ -193,4 +193,4 @@ ansible_included_var_files:
|
|
193
193
|
type: list
|
194
194
|
sample: [ /path/to/file.json, /path/to/file.yaml ]
|
195
195
|
version_added: '2.4'
|
196
|
-
|
196
|
+
"""
|
ansible/modules/iptables.py
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
from __future__ import annotations
|
8
8
|
|
9
9
|
|
10
|
-
DOCUMENTATION = r
|
10
|
+
DOCUMENTATION = r"""
|
11
11
|
---
|
12
12
|
module: iptables
|
13
13
|
short_description: Modify iptables rules
|
@@ -67,7 +67,7 @@ options:
|
|
67
67
|
description:
|
68
68
|
- Which version of the IP protocol this rule should apply to.
|
69
69
|
type: str
|
70
|
-
choices: [ ipv4, ipv6 ]
|
70
|
+
choices: [ ipv4, ipv6, both ]
|
71
71
|
default: ipv4
|
72
72
|
chain:
|
73
73
|
description:
|
@@ -394,9 +394,9 @@ options:
|
|
394
394
|
type: bool
|
395
395
|
default: false
|
396
396
|
version_added: "2.15"
|
397
|
-
|
397
|
+
"""
|
398
398
|
|
399
|
-
EXAMPLES = r
|
399
|
+
EXAMPLES = r"""
|
400
400
|
- name: Block specific IP
|
401
401
|
ansible.builtin.iptables:
|
402
402
|
chain: INPUT
|
@@ -543,7 +543,7 @@ EXAMPLES = r'''
|
|
543
543
|
- "443"
|
544
544
|
- "8081:8083"
|
545
545
|
jump: ACCEPT
|
546
|
-
|
546
|
+
"""
|
547
547
|
|
548
548
|
import re
|
549
549
|
|
@@ -564,6 +564,7 @@ BINS = dict(
|
|
564
564
|
ICMP_TYPE_OPTIONS = dict(
|
565
565
|
ipv4='--icmp-type',
|
566
566
|
ipv6='--icmpv6-type',
|
567
|
+
both='--icmp-type --icmpv6-type',
|
567
568
|
)
|
568
569
|
|
569
570
|
|
@@ -614,7 +615,6 @@ def append_wait(rule, param, flag):
|
|
614
615
|
|
615
616
|
def construct_rule(params):
|
616
617
|
rule = []
|
617
|
-
append_wait(rule, params['wait'], '-w')
|
618
618
|
append_param(rule, params['protocol'], '-p', False)
|
619
619
|
append_param(rule, params['source'], '-s', False)
|
620
620
|
append_param(rule, params['destination'], '-d', False)
|
@@ -701,6 +701,8 @@ def push_arguments(iptables_path, action, params, make_rule=True):
|
|
701
701
|
cmd.extend([action, params['chain']])
|
702
702
|
if action == '-I' and params['rule_num']:
|
703
703
|
cmd.extend([params['rule_num']])
|
704
|
+
if params['wait']:
|
705
|
+
cmd.extend(['-w', params['wait']])
|
704
706
|
if make_rule:
|
705
707
|
cmd.extend(construct_rule(params))
|
706
708
|
return cmd
|
@@ -781,7 +783,7 @@ def main():
|
|
781
783
|
table=dict(type='str', default='filter', choices=['filter', 'nat', 'mangle', 'raw', 'security']),
|
782
784
|
state=dict(type='str', default='present', choices=['absent', 'present']),
|
783
785
|
action=dict(type='str', default='append', choices=['append', 'insert']),
|
784
|
-
ip_version=dict(type='str', default='ipv4', choices=['ipv4', 'ipv6']),
|
786
|
+
ip_version=dict(type='str', default='ipv4', choices=['ipv4', 'ipv6', 'both']),
|
785
787
|
chain=dict(type='str'),
|
786
788
|
rule_num=dict(type='str'),
|
787
789
|
protocol=dict(type='str'),
|
@@ -861,86 +863,97 @@ def main():
|
|
861
863
|
rule=' '.join(construct_rule(module.params)),
|
862
864
|
state=module.params['state'],
|
863
865
|
chain_management=module.params['chain_management'],
|
866
|
+
wait=module.params['wait'],
|
864
867
|
)
|
865
868
|
|
866
|
-
ip_version = module.params['ip_version']
|
867
|
-
iptables_path = module.get_bin_path(
|
869
|
+
ip_version = ['ipv4', 'ipv6'] if module.params['ip_version'] == 'both' else [module.params['ip_version']]
|
870
|
+
iptables_path = [module.get_bin_path('iptables', True) if ip_version == 'ipv4' else module.get_bin_path('ip6tables', True) for ip_version in ip_version]
|
868
871
|
|
869
|
-
|
870
|
-
if module.params['jump'] is None:
|
871
|
-
module.params['jump'] = 'LOG'
|
872
|
-
elif module.params['jump'] != 'LOG':
|
873
|
-
module.fail_json(msg="Logging options can only be used with the LOG jump target.")
|
872
|
+
both_changed = False
|
874
873
|
|
875
|
-
|
876
|
-
|
874
|
+
for path in iptables_path:
|
875
|
+
if module.params.get('log_prefix', None) or module.params.get('log_level', None):
|
876
|
+
if module.params['jump'] is None:
|
877
|
+
module.params['jump'] = 'LOG'
|
878
|
+
elif module.params['jump'] != 'LOG':
|
879
|
+
module.fail_json(msg="Logging options can only be used with the LOG jump target.")
|
877
880
|
|
878
|
-
|
879
|
-
|
880
|
-
module.params['wait'] = ''
|
881
|
-
else:
|
882
|
-
module.params['wait'] = None
|
883
|
-
|
884
|
-
# Flush the table
|
885
|
-
if args['flush'] is True:
|
886
|
-
args['changed'] = True
|
887
|
-
if not module.check_mode:
|
888
|
-
flush_table(iptables_path, module, module.params)
|
889
|
-
|
890
|
-
# Set the policy
|
891
|
-
elif module.params['policy']:
|
892
|
-
current_policy = get_chain_policy(iptables_path, module, module.params)
|
893
|
-
if not current_policy:
|
894
|
-
module.fail_json(msg='Can\'t detect current policy')
|
895
|
-
|
896
|
-
changed = current_policy != module.params['policy']
|
897
|
-
args['changed'] = changed
|
898
|
-
if changed and not module.check_mode:
|
899
|
-
set_chain_policy(iptables_path, module, module.params)
|
900
|
-
|
901
|
-
# Delete the chain if there is no rule in the arguments
|
902
|
-
elif (args['state'] == 'absent') and not args['rule']:
|
903
|
-
chain_is_present = check_chain_present(
|
904
|
-
iptables_path, module, module.params
|
905
|
-
)
|
906
|
-
args['changed'] = chain_is_present
|
907
|
-
|
908
|
-
if (chain_is_present and args['chain_management'] and not module.check_mode):
|
909
|
-
delete_chain(iptables_path, module, module.params)
|
881
|
+
# Check if wait option is supported
|
882
|
+
iptables_version = LooseVersion(get_iptables_version(path, module))
|
910
883
|
|
911
|
-
|
912
|
-
|
913
|
-
|
884
|
+
if iptables_version >= LooseVersion(IPTABLES_WAIT_SUPPORT_ADDED):
|
885
|
+
if iptables_version < LooseVersion(IPTABLES_WAIT_WITH_SECONDS_SUPPORT_ADDED):
|
886
|
+
module.params['wait'] = ''
|
887
|
+
else:
|
888
|
+
module.params['wait'] = None
|
889
|
+
|
890
|
+
# Flush the table
|
891
|
+
if args['flush'] is True:
|
892
|
+
args['changed'] = True
|
893
|
+
both_changed = True
|
894
|
+
if not module.check_mode:
|
895
|
+
flush_table(path, module, module.params)
|
896
|
+
|
897
|
+
# Set the policy
|
898
|
+
elif module.params['policy']:
|
899
|
+
current_policy = get_chain_policy(path, module, module.params)
|
900
|
+
if not current_policy:
|
901
|
+
module.fail_json(msg='Can\'t detect current policy')
|
902
|
+
|
903
|
+
changed = current_policy != module.params['policy']
|
904
|
+
args['changed'] = changed
|
905
|
+
both_changed = both_changed or changed
|
906
|
+
if changed and not module.check_mode:
|
907
|
+
set_chain_policy(path, module, module.params)
|
908
|
+
|
909
|
+
# Delete the chain if there is no rule in the arguments
|
910
|
+
elif (args['state'] == 'absent') and not args['rule']:
|
914
911
|
chain_is_present = check_chain_present(
|
915
|
-
|
912
|
+
path, module, module.params
|
916
913
|
)
|
917
|
-
args['changed'] =
|
914
|
+
args['changed'] = chain_is_present
|
915
|
+
both_changed = both_changed or chain_is_present
|
918
916
|
|
919
|
-
if (
|
920
|
-
|
917
|
+
if (chain_is_present and args['chain_management'] and not module.check_mode):
|
918
|
+
delete_chain(path, module, module.params)
|
921
919
|
|
922
920
|
else:
|
923
|
-
|
924
|
-
|
925
|
-
|
926
|
-
|
921
|
+
# Create the chain if there are no rule arguments
|
922
|
+
if (args['state'] == 'present') and not args['rule']:
|
923
|
+
chain_is_present = check_chain_present(
|
924
|
+
path, module, module.params
|
925
|
+
)
|
926
|
+
args['changed'] = not chain_is_present
|
927
|
+
both_changed = both_changed or not chain_is_present
|
927
928
|
|
928
|
-
|
929
|
-
|
930
|
-
args['changed'] = (rule_is_present != should_be_present)
|
931
|
-
if args['changed'] is False:
|
932
|
-
# Target is already up to date
|
933
|
-
module.exit_json(**args)
|
929
|
+
if (not chain_is_present and args['chain_management'] and not module.check_mode):
|
930
|
+
create_chain(path, module, module.params)
|
934
931
|
|
935
|
-
|
936
|
-
|
937
|
-
|
938
|
-
|
939
|
-
|
932
|
+
else:
|
933
|
+
insert = (module.params['action'] == 'insert')
|
934
|
+
rule_is_present = check_rule_present(
|
935
|
+
path, module, module.params
|
936
|
+
)
|
937
|
+
|
938
|
+
should_be_present = (args['state'] == 'present')
|
939
|
+
# Check if target is up to date
|
940
|
+
args['changed'] = (rule_is_present != should_be_present)
|
941
|
+
both_changed = both_changed or (rule_is_present != should_be_present)
|
942
|
+
if args['changed'] is False:
|
943
|
+
# Target is already up to date
|
944
|
+
continue
|
945
|
+
|
946
|
+
# Modify if not check_mode
|
947
|
+
if not module.check_mode:
|
948
|
+
if should_be_present:
|
949
|
+
if insert:
|
950
|
+
insert_rule(path, module, module.params)
|
951
|
+
else:
|
952
|
+
append_rule(path, module, module.params)
|
940
953
|
else:
|
941
|
-
|
942
|
-
|
943
|
-
|
954
|
+
remove_rule(path, module, module.params)
|
955
|
+
|
956
|
+
args['changed'] = both_changed
|
944
957
|
|
945
958
|
module.exit_json(**args)
|
946
959
|
|
ansible/modules/known_hosts.py
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
from __future__ import annotations
|
6
6
|
|
7
7
|
|
8
|
-
DOCUMENTATION = r
|
8
|
+
DOCUMENTATION = r"""
|
9
9
|
---
|
10
10
|
module: known_hosts
|
11
11
|
short_description: Add or remove a host from the C(known_hosts) file
|
@@ -65,9 +65,9 @@ extends_documentation_fragment:
|
|
65
65
|
- action_common_attributes
|
66
66
|
author:
|
67
67
|
- Matthew Vernon (@mcv21)
|
68
|
-
|
68
|
+
"""
|
69
69
|
|
70
|
-
EXAMPLES = r
|
70
|
+
EXAMPLES = r"""
|
71
71
|
- name: Tell the host about our servers it might want to ssh to
|
72
72
|
ansible.builtin.known_hosts:
|
73
73
|
path: /etc/ssh/ssh_known_hosts
|
@@ -87,7 +87,7 @@ EXAMPLES = r'''
|
|
87
87
|
key: '[host1.example.com]:2222 ssh-rsa ASDeararAIUHI324324' # some key gibberish
|
88
88
|
path: /etc/ssh/ssh_known_hosts
|
89
89
|
state: present
|
90
|
-
|
90
|
+
"""
|
91
91
|
|
92
92
|
# Makes sure public host keys are present or absent in the given known_hosts
|
93
93
|
# file.
|
@@ -195,13 +195,13 @@ def enforce_state(module, params):
|
|
195
195
|
|
196
196
|
|
197
197
|
def sanity_check(module, host, key, sshkeygen):
|
198
|
-
|
198
|
+
"""Check supplied key is sensible
|
199
199
|
|
200
200
|
host and key are parameters provided by the user; If the host
|
201
201
|
provided is inconsistent with the key supplied, then this function
|
202
202
|
quits, providing an error to the user.
|
203
203
|
sshkeygen is the path to ssh-keygen, found earlier with get_bin_path
|
204
|
-
|
204
|
+
"""
|
205
205
|
# If no key supplied, we're doing a removal, and have nothing to check here.
|
206
206
|
if not key:
|
207
207
|
return
|
@@ -232,7 +232,7 @@ def sanity_check(module, host, key, sshkeygen):
|
|
232
232
|
|
233
233
|
|
234
234
|
def search_for_host_key(module, host, key, path, sshkeygen):
|
235
|
-
|
235
|
+
"""search_for_host_key(module,host,key,path,sshkeygen) -> (found,replace_or_add,found_line)
|
236
236
|
|
237
237
|
Looks up host and keytype in the known_hosts file path; if it's there, looks to see
|
238
238
|
if one of those entries matches key. Returns:
|
@@ -241,7 +241,7 @@ def search_for_host_key(module, host, key, path, sshkeygen):
|
|
241
241
|
found_line (int or None): the line where a key of the same type was found
|
242
242
|
if found=False, then replace is always False.
|
243
243
|
sshkeygen is the path to ssh-keygen, found earlier with get_bin_path
|
244
|
-
|
244
|
+
"""
|
245
245
|
if os.path.exists(path) is False:
|
246
246
|
return False, False, None
|
247
247
|
|
@@ -304,14 +304,14 @@ def hash_host_key(host, key):
|
|
304
304
|
|
305
305
|
|
306
306
|
def normalize_known_hosts_key(key):
|
307
|
-
|
307
|
+
"""
|
308
308
|
Transform a key, either taken from a known_host file or provided by the
|
309
309
|
user, into a normalized form.
|
310
310
|
The host part (which might include multiple hostnames or be hashed) gets
|
311
311
|
replaced by the provided host. Also, any spurious information gets removed
|
312
312
|
from the end (like the username@host tag usually present in hostkeys, but
|
313
313
|
absent in known_hosts files)
|
314
|
-
|
314
|
+
"""
|
315
315
|
key = key.strip() # trim trailing newline
|
316
316
|
k = key.split()
|
317
317
|
d = dict()
|
ansible/modules/lineinfile.py
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
from __future__ import annotations
|
9
9
|
|
10
10
|
|
11
|
-
DOCUMENTATION = r
|
11
|
+
DOCUMENTATION = r"""
|
12
12
|
---
|
13
13
|
module: lineinfile
|
14
14
|
short_description: Manage lines in text files
|
@@ -152,9 +152,9 @@ author:
|
|
152
152
|
- Daniel Hokka Zakrissoni (@dhozac)
|
153
153
|
- Ahti Kitsik (@ahtik)
|
154
154
|
- Jose Angel Munoz (@imjoseangel)
|
155
|
-
|
155
|
+
"""
|
156
156
|
|
157
|
-
EXAMPLES = r
|
157
|
+
EXAMPLES = r"""
|
158
158
|
# NOTE: Before 2.3, option 'dest', 'destfile' or 'name' was used instead of 'path'
|
159
159
|
- name: Ensure SELinux is set to enforcing mode
|
160
160
|
ansible.builtin.lineinfile:
|
@@ -237,9 +237,9 @@ EXAMPLES = r'''
|
|
237
237
|
regexp: ^(host=).*
|
238
238
|
line: \g<1>{{ hostname }}
|
239
239
|
backrefs: yes
|
240
|
-
|
240
|
+
"""
|
241
241
|
|
242
|
-
RETURN = r
|
242
|
+
RETURN = r"""#"""
|
243
243
|
|
244
244
|
import os
|
245
245
|
import re
|
ansible/modules/meta.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from __future__ import annotations
|
7
7
|
|
8
8
|
|
9
|
-
DOCUMENTATION = r
|
9
|
+
DOCUMENTATION = r"""
|
10
10
|
module: meta
|
11
11
|
short_description: Execute Ansible 'actions'
|
12
12
|
version_added: '1.2'
|
@@ -83,9 +83,9 @@ seealso:
|
|
83
83
|
- module: ansible.builtin.fail
|
84
84
|
author:
|
85
85
|
- Ansible Core Team
|
86
|
-
|
86
|
+
"""
|
87
87
|
|
88
|
-
EXAMPLES = r
|
88
|
+
EXAMPLES = r"""
|
89
89
|
# Example showing flushing handlers on demand, not at end of play
|
90
90
|
- ansible.builtin.template:
|
91
91
|
src: new.j2
|
@@ -131,4 +131,4 @@ EXAMPLES = r'''
|
|
131
131
|
when:
|
132
132
|
- ansible_distribution == 'CentOS'
|
133
133
|
- ansible_distribution_major_version == '6'
|
134
|
-
|
134
|
+
"""
|
ansible/modules/mount_facts.py
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
|
-
# Copyright
|
2
|
+
# Copyright: Contributors to the Ansible project
|
3
3
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
4
4
|
|
5
5
|
from __future__ import annotations
|
@@ -359,7 +359,7 @@ def gen_mounts_from_stdout(stdout: str) -> t.Iterable[MountInfo]:
|
|
359
359
|
elif pattern is BSD_MOUNT_RE:
|
360
360
|
# the group containing fstype is comma separated, and may include whitespace
|
361
361
|
mount_info = match.groupdict()
|
362
|
-
parts = re.split(r"\s*,\s*", match.group("fstype"), 1)
|
362
|
+
parts = re.split(r"\s*,\s*", match.group("fstype"), maxsplit=1)
|
363
363
|
if len(parts) == 1:
|
364
364
|
mount_info["fstype"] = parts[0]
|
365
365
|
else:
|
ansible/modules/package.py
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
from __future__ import annotations
|
8
8
|
|
9
9
|
|
10
|
-
DOCUMENTATION =
|
10
|
+
DOCUMENTATION = """
|
11
11
|
---
|
12
12
|
module: package
|
13
13
|
version_added: 2.0
|
@@ -66,8 +66,8 @@ attributes:
|
|
66
66
|
notes:
|
67
67
|
- While M(ansible.builtin.package) abstracts package managers to ease dealing with multiple distributions, package name often differs for the same software.
|
68
68
|
|
69
|
-
|
70
|
-
EXAMPLES =
|
69
|
+
"""
|
70
|
+
EXAMPLES = """
|
71
71
|
- name: Install ntpdate
|
72
72
|
ansible.builtin.package:
|
73
73
|
name: ntpdate
|
@@ -85,4 +85,4 @@ EXAMPLES = '''
|
|
85
85
|
- httpd
|
86
86
|
- mariadb-server
|
87
87
|
state: latest
|
88
|
-
|
88
|
+
"""
|