diff --git a/docs/docsite/.templates/banner.html b/docs/docsite/.templates/banner.html index 55c5b6f4b3ff85..388152211d5b81 100644 --- a/docs/docsite/.templates/banner.html +++ b/docs/docsite/.templates/banner.html @@ -15,19 +15,16 @@ } var banner = ''; var extra_banner = ''; - /*use extra_banner for when marketing wants something extra, like a survey or AnsibleFest notice * + /*use extra_banner for when marketing wants something extra, like a survey or AnsibleFest notice */ var extra_banner = '
' + '
' + '

' + - 'Immerse yourself in the automation experience October 18-19 in Chicago. ' + - '

' + - 'Join us for AnsibleFest 2022. ' + - '' + - 'Register now! ' + + 'Continue building on your automation knowledge, visit the AnsibleFest content hub! ' + + '

' + '
' + - '
'; */ + ''; // Create a banner if we're not on the official docs site if (location.host == "docs.testing.ansible.com") { document.write('
' + diff --git a/docs/docsite/rst/collections_guide/collections_using_playbooks.rst b/docs/docsite/rst/collections_guide/collections_using_playbooks.rst index aa192525b2fb7d..a7665edfe62027 100644 --- a/docs/docsite/rst/collections_guide/collections_using_playbooks.rst +++ b/docs/docsite/rst/collections_guide/collections_using_playbooks.rst @@ -112,6 +112,8 @@ A few recommendations when creating such playbooks, ``hosts:`` should be generic This will have an implied entry in the ``collections:`` keyword of ``my_namespace.my_collection`` just as with roles. .. note:: - Playbook names, like other collection resources, have a restricted set of valid characters. - Names can contain only lowercase alphanumeric characters, plus _ and must start with an alpha character. The dash ``-`` character is not valid for playbook names in collections. - Playbooks whose names contain invalid characters are not addressable: this is a limitation of the Python importer that is used to load collection resources. + * Playbook names, like other collection resources, have a restricted set of valid characters. + Names can contain only lowercase alphanumeric characters, plus _ and must start with an alpha character. The dash ``-`` character is not valid for playbook names in collections. + Playbooks whose names contain invalid characters are not addressable: this is a limitation of the Python importer that is used to load collection resources. + + * Playbooks in collections do not support 'adjacent' plugins, all plugins must be in the collection specific directories. diff --git a/docs/docsite/rst/community/collection_contributors/collection_integration_add.rst b/docs/docsite/rst/community/collection_contributors/collection_integration_add.rst index ad30b02773ac46..a4c8a1096a488d 100644 --- a/docs/docsite/rst/community/collection_contributors/collection_integration_add.rst +++ b/docs/docsite/rst/community/collection_contributors/collection_integration_add.rst @@ -5,7 +5,7 @@ Creating new integration tests This section covers the following cases: -- There are no integration tests for a collection / group of modules in a collection at all. +- There are no integration tests for a collection or group of modules in a collection at all. - You are adding a new module and you want to include integration tests. - You want to add integration tests for a module that already exists without integration tests. @@ -92,7 +92,7 @@ Add the following to ``tests/integration/targets/abstract_service_info/tasks/mai - name: Fetch info from abstract service abstract_service_info: host: 127.0.0.1 # We assume the service accepts local connection by default - port: 1234 # We assume that the service is listening this port by default + port: 1234 # We assume that the service is listening to this port by default register: result # This variable will contain the returned JSON including the server version - name: Test the output @@ -104,7 +104,7 @@ Add the following to ``tests/integration/targets/abstract_service_info/tasks/mai If there are any issues with connectivity (for example, the service is not accepting connections) or with the code, the play will fail. -Examine the output to see at which step the failure occurred. Investigate the reason, fix, and run again. Repeat the cycle until the test passes. +Examine the output to see at which step the failure occurred. Investigate the reason, fix it, and run again. Repeat the cycle until the test passes. 8. If the test succeeds, write more tests. Refer to the :ref:`Recommendations on coverage` section for details. @@ -201,7 +201,7 @@ That is enough for our very basic example. mkdir -p tests/integration/targets/postgresql_info/tasks tests/integration/targets/postgresql_info/meta -11. To make the ``setup_postgresql_db`` target running before the ``postgresql_info`` target as a dependency, create the ``tests/integration/targets/postgresql_info/meta/main.yml`` file and add the following code to it: +11. To make the ``setup_postgresql_db`` target run before the ``postgresql_info`` target as a dependency, create the ``tests/integration/targets/postgresql_info/meta/main.yml`` file and add the following code to it: .. code-block:: yaml @@ -247,4 +247,4 @@ The tests should pass. If we look at the output, we should see something like th "msg": "All assertions passed" } -If your tests fail when you are working on your project, examine the output to see at which step the failure occurred. Investigate the reason, fix, and run again. Repeat the cycle until the test passes. If the test succeeds, write more tests. Refer to the :ref:`Recommendations on coverage` section for details. +If your tests fail when you are working on your project, examine the output to see at which step the failure occurred. Investigate the reason, fix it, and run again. Repeat the cycle until the test passes. If the test succeeds, write more tests. Refer to the :ref:`Recommendations on coverage` section for details. diff --git a/docs/docsite/rst/community/collection_contributors/collection_integration_running.rst b/docs/docsite/rst/community/collection_contributors/collection_integration_running.rst index 83b94cf2578eda..64e610da295934 100644 --- a/docs/docsite/rst/community/collection_contributors/collection_integration_running.rst +++ b/docs/docsite/rst/community/collection_contributors/collection_integration_running.rst @@ -3,7 +3,7 @@ Running integration tests ============================ -In the following examples, we will use ``Docker`` to run integration tests locally. Ensure you have :ref:`collection_prepare_environment` first. +In the following examples, we will use ``Docker`` to run integration tests locally. Ensure you :ref:`collection_prepare_environment` first. We assume that you are in the ``~/ansible_collections/NAMESPACE/COLLECTION`` directory. @@ -25,7 +25,7 @@ In the examples above, the ``fedora34`` test image will be automatically downloa See the :ref:`list of supported container images `. -In some cases, for example, for platform independent tests, the ``default`` test image is required. Use the ``--docker default`` or just ``--docker`` option without specifying a distribution in this case. +In some cases, for example, for platform-independent tests, the ``default`` test image is required. Use the ``--docker default`` or just ``--docker`` option without specifying a distribution in this case. .. note:: diff --git a/docs/docsite/rst/community/collection_contributors/collection_integration_updating.rst b/docs/docsite/rst/community/collection_contributors/collection_integration_updating.rst index eb115ae2939900..46d18c06ef09a3 100644 --- a/docs/docsite/rst/community/collection_contributors/collection_integration_updating.rst +++ b/docs/docsite/rst/community/collection_contributors/collection_integration_updating.rst @@ -6,7 +6,7 @@ Adding to an existing integration test The test tasks are stored in the ``tests/integration/targets//tasks`` directory. The ``main.yml`` file holds test tasks and includes other test files. -Look for a suitable test file to integrate your tests or create and include / import a separate test file. +Look for a suitable test file to integrate your tests or create and include or import a separate test file. You can use one of the existing test files as a draft. When fixing a bug @@ -15,9 +15,9 @@ When fixing a bug When fixing a bug: 1. :ref:`Determine if integration tests for the module exist`. If they do not, see :ref:`collection_creating_integration_tests` section. -2. Add a task which reproduces the bug to an appropriate file within the ``tests/integration/targets//tasks`` directory. +2. Add a task that reproduces the bug to an appropriate file within the ``tests/integration/targets//tasks`` directory. 3. :ref:`Run the tests`. The newly added task should fail. -4. If they do not fail, re-check if your environment / test task satisfies the conditions described in the ``Steps to Reproduce`` section of the issue. +4. If they do not fail, re-check if your environment or test task satisfies the conditions described in the ``Steps to Reproduce`` section of the issue. 5. If you reproduce the bug and tests fail, change the code. 6. :ref:`Run the tests` again. 7. If they fail, repeat steps 5-6 until the tests pass. @@ -74,7 +74,7 @@ When adding a new feature The process described in this section also applies when you want to add integration tests to a feature that already exists, but is missing integration tests. -If you have not already implemented the new feature, you can start with writing the integration tests for it. Of course they will not work as the code does not yet exist, but it can help you improve your implementation design before you start writing any code. +If you have not already implemented the new feature, you can start by writing the integration tests for it. They will not work as the code does not yet exist, but they can help you improve your implementation design before you start writing any code. When adding new features, the process of adding tests consists of the following steps: diff --git a/docs/docsite/rst/community/collection_contributors/collection_reviewing.rst b/docs/docsite/rst/community/collection_contributors/collection_reviewing.rst index d4a410af38f3b4..0eb203b58a0d9c 100644 --- a/docs/docsite/rst/community/collection_contributors/collection_reviewing.rst +++ b/docs/docsite/rst/community/collection_contributors/collection_reviewing.rst @@ -10,20 +10,20 @@ Reviewing bug reports When users report bugs, verify the behavior reported. Remember always to be kind with your feedback. -* Did the user made a mistake in the code they put in the Steps to reproduce issue's section? We often see user errors reported as bugs. +* Did the user make a mistake in the code they put in the Steps to Reproduce issue section? We often see user errors reported as bugs. * Did the user assume an unexpected behavior? Ensure that the related documentation is clear. If not, the issue is useful to help us improve documentation. * Is there a minimal reproducer? If not, ask the reporter to reduce the complexity to help pinpoint the issue. -* Is the issue a consequence of wrong-configured environment? -* If it seems to be real bug, does the behaviour still exist in the most recent release or the development branch? +* Is the issue a consequence of a misconfigured environment? +* If it seems to be a real bug, does the behaviour still exist in the most recent release or the development branch? * Reproduce the bug, or if you do not have a suitable infrastructure, ask other contributors to reproduce the bug. Reviewing suggested changes --------------------------- -When reviewing PRs, verify the suggested changes first. Do not: +When reviewing PRs, verify that the suggested changes do not: -* Unnecessarily break backwards compatibility. +* Unnecessarily break backward compatibility. * Bring more harm than value. * Introduce non-idempotent solutions. * Duplicate already existing features (inside or outside the collection). @@ -32,7 +32,7 @@ When reviewing PRs, verify the suggested changes first. Do not: Other standards to check for in a PR include: -* A pull request MUST NOT contain a mix of bugfixes and new features that are not tightly related. If yes, ask the author to split the pull request into separate PRs. +* A pull request MUST NOT contain a mix of bug fixes and new features that are not tightly related. If yes, ask the author to split the pull request into separate PRs. * If the pull request is not a documentation fix, it must include a :ref:`changelog fragment `. Check the format carefully as follows: * New modules and plugins (that are not jinja2 filter and test plugins) do not need changelog fragments. @@ -45,7 +45,7 @@ Other standards to check for in a PR include: * If a new plugin is added, it is one of the `allowed plugin types `_. * Documentation, examples, and return sections use FQCNs for the ``M(..)`` :ref:`format macros ` when referring to modules. * Modules and plugins from ansible-core use ``ansible.builtin.`` as an FQCN prefix when mentioned. -* When a new option, module, plugin, or return value is added, the corresponding documentation or return sections use ``version_added:`` containing the *collection* version which they will be first released in. +* When a new option, module, plugin, or return value is added, the corresponding documentation or return sections use ``version_added:`` containing the *collection* version in which they will be first released. * This is typically the next minor release, sometimes the next major release. For example: if 2.7.5 is the current release, the next minor release will be 2.8.0, and the next major release will be 3.0.0). @@ -70,5 +70,5 @@ Review for merge commits and breaking changes --------------------------------------------- * The pull request does not contain merge commits. See the GitHub warnings at the bottom of the pull request. If merge commits are present, ask the author to rebase the pull request branch. -* If the pull request contains breaking changes, ask the author and the collection maintainers if it really is needed, and there is a way not to introduce breaking changes. If breaking changes are present, they MUST only appear in the next major release and MUST NOT appear in a minor or patch release. The only exception is breaking changes caused by security fixes that are absolutely necessary to fix the security issue. +* If the pull request contains breaking changes, ask the author and the collection maintainers if it really is needed, and if there is a way not to introduce breaking changes. If breaking changes are present, they MUST only appear in the next major release and MUST NOT appear in a minor or patch release. The only exception is breaking changes caused by security fixes that are absolutely necessary to fix the security issue. diff --git a/docs/docsite/rst/community/communication.rst b/docs/docsite/rst/community/communication.rst index eb822b5982dfa9..4cdef1b2a8d20f 100644 --- a/docs/docsite/rst/community/communication.rst +++ b/docs/docsite/rst/community/communication.rst @@ -23,7 +23,7 @@ Your first post to the mailing list will be moderated (to reduce spam), so pleas * `Ansible AWX List `_ is for `Ansible AWX `_ * `Ansible Development List `_ is for questions about developing Ansible modules (mostly in Python), fixing bugs in the Ansible core code, asking about prospective feature design, or discussions about extending Ansible or features in progress. * `Ansible Lockdown List `_ is for all things related to Ansible Lockdown projects, including DISA STIG automation and CIS Benchmarks. -* `Ansible Outreach List `_ help with promoting Ansible and `Ansible Meetups `_ +* `Ansible Outreach List `_ help with promoting Ansible and `Ansible Meetups `_ * `Ansible Project List `_ is for sharing Ansible tips, answering questions about playbooks and roles, and general user discussion. * `Molecule Discussions `_ is designed to aid with the development and testing of Ansible roles with Molecule. diff --git a/docs/docsite/rst/community/maintainers_guidelines.rst b/docs/docsite/rst/community/maintainers_guidelines.rst index 59cf4256febefd..8e1769627b7faa 100644 --- a/docs/docsite/rst/community/maintainers_guidelines.rst +++ b/docs/docsite/rst/community/maintainers_guidelines.rst @@ -16,7 +16,7 @@ In general, collection maintainers: - Act in accordance with the :ref:`code_of_conduct`. - Subscribe to the collection repository they maintain (click :guilabel:`Watch > All activity` in GitHub). -- Keep README, development guidelines, and other general collection :ref:`maintainer_documentation` relevant. +- Keep README, development guidelines, and other general collections :ref:`maintainer_documentation` relevant. - Review and commit changes made by other contributors. - :ref:`Backport ` changes to stable branches. - Address or assign issues to appropriate contributors. @@ -32,7 +32,7 @@ Multiple maintainers can divide responsibilities among each other. How to become a maintainer -------------------------- -A person interested in becoming a maintainer and satisfies the :ref:`requirements` may either self-nominate or be nominated by another maintainer. +A person interested in becoming a maintainer and satisfying the :ref:`requirements` may either self-nominate or be nominated by another maintainer. To nominate a candidate, create a GitHub issue in the relevant collection repository. If there is no response, the repository is not actively maintained, or the current maintainers do not have permissions to add the candidate, please create the issue in the `ansible/community `_ repository. @@ -44,7 +44,7 @@ Communicating as a collection maintainer Collection contributors and maintainers should also communicate through: -* :ref:`communication_irc` appropriate to their collection, or if none exist, the general community and developer chat channels +* :ref:`communication_irc` appropriate to their collection, or if none exists, the general community and developer chat channels * Mailing lists such as `ansible-announce `_ and `ansible-devel `_ * Collection project boards, issues, and GitHub discussions in corresponding repositories * Quarterly Contributor Summits. @@ -65,7 +65,7 @@ Contributor Summits ------------------- -The quarterly Ansible Contributor Summit is a global event that provides our contributors a great opportunity to meet each other, communicate, share ideas, and see that there are other real people behind the messages on Matrix or Libera Chat IRC or GitHub. This gives a sense of community. Watch the `Bullhorn newsletter `_ for information when the next contributor summit, invite contributors you know, and take part in the event together. +The quarterly Ansible Contributor Summit is a global event that provides our contributors a great opportunity to meet each other, communicate, share ideas, and see that there are other real people behind the messages on Matrix or Libera Chat IRC, or GitHub. This gives a sense of community. Watch the `Bullhorn newsletter `_ for information when the next contributor summit, invite contributors you know, and take part in the event together. Weekly community Matrix/IRC meetings ------------------------------------ @@ -102,13 +102,13 @@ Here are some ways you can expand the community around your collection: Encouraging new contributors ----------------------------- -Easy fix items are the best way to attract and mentor new contributors. You should triage incoming issues to mark them with labels such as ``easyfix``, ``waiting_on_contributor``, and ``docs``. where appropriate. Do not fix these trivial non-critical bugs yourself. Instead, mentor a person who wants to contribute. +Easy-fix items are the best way to attract and mentor new contributors. You should triage incoming issues to mark them with labels such as ``easyfix``, ``waiting_on_contributor``, and ``docs``. where appropriate. Do not fix these trivial non-critical bugs yourself. Instead, mentor a person who wants to contribute. -For some easy fix issues, you could ask the issue reporter whether they want to fix the issue themselves providing the link to a quickstart guide for creating PRs. +For some easy-fix issues, you could ask the issue reporter whether they want to fix the issue themselves providing the link to a quick start guide for creating PRs. -Conduct pull request days regularly. You could plan PR days, for example, in the last Friday of every month when you and other maintainers go through all open issues and pull requests focusing on old ones, asking people if you can help, and so on. If there are pull requests that look abandoned (for example, there is no response on your help offers since the previous PR day), announce that anyone else interested can complete the pull request. +Conduct pull request days regularly. You could plan PR days, for example, on the last Friday of every month when you and other maintainers go through all open issues and pull requests focusing on old ones, asking people if you can help, and so on. If there are pull requests that look abandoned (for example, there is no response on your help offers since the previous PR day), announce that anyone else interested can complete the pull request. -Promote active contributors satisfying :ref:`requirements` to maintainers. Revise contributors activity regularly. +Promote active contributors satisfying :ref:`requirements` to maintainers. Revise contributors' activity regularly. If your collection found new maintainers, announce that fact in the `Bullhorn newsletter `_ and during the next Contributor Summit congratulating and thanking them for the work done. You can mention all the people promoted since the previous summit. Remember to invite the other maintainers to the Summit in advance. @@ -118,8 +118,8 @@ Some other general guidelines to encourage contributors: * If there is a non-crucial easy-fix bug reported, politely ask the author to fix it themselves providing a link to :ref:`collection_quickstart`. * When suggesting changes, try to use questions, not statements. * When suggesting mandatory changes, do it as politely as possible providing documentation references. -* If your suggestion is optional or a matter of personal preferences, please say it explicitly. -* When asking for adding tests or for complex code refactoring, say that the author is welcome to ask for clarifications and help if they need. +* If your suggestion is optional or a matter of personal preference, please say it explicitly. +* When asking for adding tests or for complex code refactoring, say that the author is welcome to ask for clarifications and help if they need it. * If somebody suggests a good idea, mention it or put a thumbs up. * After merging, thank the author and reviewers for their time and effort. @@ -140,7 +140,7 @@ A good ``README`` includes a description of the collection, a link to the :ref:` The ``CONTRIBUTING`` file includes all the details or links to the details on how a new or continuing contributor can contribute to this collection. The ``CONTRIBUTING`` file should include: -* Information or links to new contributor guidelines, such as a quickstart on opening PRs. +* Information or links to new contributor guidelines, such as a quick start on opening PRs. * Information or links to contributor requirements, such as unit and integration test requirements. You can optionally include a ``CONTRIBUTORS`` and ``MAINTAINERS`` file to list the collection contributors and maintainers. diff --git a/docs/docsite/rst/community/maintainers_workflow.rst b/docs/docsite/rst/community/maintainers_workflow.rst index f26532cb2655c0..6754d125ffa3a8 100644 --- a/docs/docsite/rst/community/maintainers_workflow.rst +++ b/docs/docsite/rst/community/maintainers_workflow.rst @@ -31,10 +31,10 @@ Module maintainers ------------------ Module-scope maintainers exist in collections that have the `collection bot `_, -for example `community.general `_ +for example, `community.general `_ and `community.network `_. -Being a module maintainer is the stage prior to becoming a collection maintainer. Module maintainers are contributors who are listed in ``.github/BOTMETA.yml``. The scope can be any file (for example, a module or plugin), directory, or repository. Because in most cases the scope is a module or group of modules, we call these contributors module maintainers. The collection bot notifies module maintainers when issues / pull requests related to files they maintain are created. +Being a module maintainer is the stage prior to becoming a collection maintainer. Module maintainers are contributors who are listed in ``.github/BOTMETA.yml``. The scope can be any file (for example, a module or plugin), directory, or repository. Because in most cases the scope is a module or group of modules, we call these contributors module maintainers. The collection bot notifies module maintainers when issues/pull requests related to files they maintain are created. Module maintainers have indirect commit rights implemented through the `collection bot `_. When two module maintainers comment with the keywords ``shipit``, ``LGTM``, or ``+1`` on a pull request @@ -47,7 +47,7 @@ see to the `Collection bot overview `_. For more information, see the `repository's README `_, and the `Ansible community package collections requirements `. +If a collection is not included in Ansible (not shipped with Ansible package), maintainers can submit the collection for inclusion by creating a discussion under the `ansible-collections/ansible-inclusion repository `_. For more information, see the `repository's README `_, and the `Ansible community package collections requirements `. Stepping down as a collection maintainer =========================================== Times change, and so may your ability to continue as a collection maintainer. We ask that you do not step down silently. -If you feel you don't have time to maintain your collection any more, you should: +If you feel you don't have time to maintain your collection anymore, you should: - Inform other maintainers about it. - If the collection is under the ``ansible-collections`` organization, also inform relevant :ref:`communication_irc`, the ``community`` chat channels on IRC or matrix, or by email ``ansible-community@redhat.com``. diff --git a/docs/docsite/rst/installation_guide/intro_installation.rst b/docs/docsite/rst/installation_guide/intro_installation.rst index cb1ffa29d53ad7..d8627889f6220b 100644 --- a/docs/docsite/rst/installation_guide/intro_installation.rst +++ b/docs/docsite/rst/installation_guide/intro_installation.rst @@ -23,6 +23,7 @@ Managed node requirements ========================= The *managed* node (the machine that Ansible is managing) does not require Ansible to be installed, but requires Python 2.7, or Python 3.5 - 3.11 to run Ansible library code. +The managed node also needs a user account that can SSH to the node with an interactive POSIX shell. .. note:: diff --git a/docs/docsite/rst/playbook_guide/playbooks_reuse_roles.rst b/docs/docsite/rst/playbook_guide/playbooks_reuse_roles.rst index dc230da2dab3a0..99ca2bf1240475 100644 --- a/docs/docsite/rst/playbook_guide/playbooks_reuse_roles.rst +++ b/docs/docsite/rst/playbook_guide/playbooks_reuse_roles.rst @@ -535,6 +535,9 @@ To use ``allow_duplicates: true`` with role dependencies, you must specify it fo Embedding modules and plugins in roles ====================================== +.. note:: + This applies only to standalone roles. Roles in collections do not support plugin embedding; they must use the collection's ``plugins`` structure to distribute plugins. + If you write a custom module (see :ref:`developing_modules`) or a plugin (see :ref:`developing_plugins`), you might wish to distribute it as part of a role. For example, if you write a module that helps configure your company's internal software, and you want other people in your organization to use this module, but you do not want to tell everyone how to configure their Ansible library path, you can include the module in your internal_config role. To add a module or a plugin to a role: diff --git a/lib/ansible/modules/file.py b/lib/ansible/modules/file.py index 55489bcda503cf..150ff6414d5011 100644 --- a/lib/ansible/modules/file.py +++ b/lib/ansible/modules/file.py @@ -15,7 +15,7 @@ short_description: Manage files and file properties extends_documentation_fragment: [files, action_common_attributes] description: -- Set attributes of files, symlinks or directories. +- Set attributes of files, directories, or symlinks and their targets. - Alternatively, remove files, symlinks or directories. - Many other modules support the same options as the C(file) module - including M(ansible.builtin.copy), M(ansible.builtin.template), and M(ansible.builtin.assemble). @@ -72,6 +72,7 @@ follow: description: - This flag indicates that filesystem links, if they exist, should be followed. + - I(follow=yes) and I(state=link) can modify I(src) when combined with parameters such as I(mode). - Previous to Ansible 2.5, this was C(no) by default. type: bool default: yes diff --git a/lib/ansible/plugins/lookup/pipe.py b/lib/ansible/plugins/lookup/pipe.py index a190d2a3014de3..54df3fc078c90c 100644 --- a/lib/ansible/plugins/lookup/pipe.py +++ b/lib/ansible/plugins/lookup/pipe.py @@ -20,14 +20,14 @@ so if you need to different permissions you must change the command or run Ansible as another user. - Alternatively you can use a shell/command task that runs against localhost and registers the result. - Pipe lookup internally invokes Popen with shell=True (this is required and intentional). - This type of invocation is considered as security issue if appropriate care is not taken to sanitize any user provided or variable input. + This type of invocation is considered a security issue if appropriate care is not taken to sanitize any user provided or variable input. It is strongly recommended to pass user input or variable input via quote filter before using with pipe lookup. See example section for this. Read more about this L(Bandit B602 docs,https://bandit.readthedocs.io/en/latest/plugins/b602_subprocess_popen_with_shell_equals_true.html) """ EXAMPLES = r""" -- name: raw result of running date command" +- name: raw result of running date command ansible.builtin.debug: msg: "{{ lookup('ansible.builtin.pipe', 'date') }}"