diff --git a/CHANGELOG.rst b/CHANGELOG.rst index f4b035fd3..0f385f10e 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -336,7 +336,7 @@ Minor Changes - docker_container - allow to specify ``platform`` (https://github.com/ansible-collections/community.docker/issues/123, https://github.com/ansible-collections/community.docker/pull/426). - modules and plugins communicating directly with the Docker daemon - improve default TLS version selection for Python 3.6 and newer. This is only a change relative to older community.docker 3.0.0 pre-releases or with respect to Docker SDK for Python < 6.0.0. Docker SDK for Python 6.0.0 will also include this change (https://github.com/ansible-collections/community.docker/pull/434). - modules and plugins communicating directly with the Docker daemon - simplify use of helper function that was removed in Docker SDK for Python to find executables (https://github.com/ansible-collections/community.docker/pull/438). -- socker_handler and socket_helper module utils - improve Python forward compatibilty, create helper functions for file blocking/unblocking (https://github.com/ansible-collections/community.docker/pull/415). +- socker_handler and socket_helper module utils - improve Python forward compatibility, create helper functions for file blocking/unblocking (https://github.com/ansible-collections/community.docker/pull/415). Breaking Changes / Porting Guide -------------------------------- @@ -529,7 +529,7 @@ Minor Changes Bugfixes -------- -- docker_container, docker_image - adjust image finding code to pecularities of ``podman-docker``'s API emulation when Docker short names like ``redis`` are used (https://github.com/ansible-collections/community.docker/issues/292). +- docker_container, docker_image - adjust image finding code to peculiarities of ``podman-docker``'s API emulation when Docker short names like ``redis`` are used (https://github.com/ansible-collections/community.docker/issues/292). v2.1.1 ====== @@ -578,7 +578,7 @@ Bugfixes - docker_api connection plugin - avoid passing an unnecessary argument to a Docker SDK for Python call that is only supported by version 3.0.0 or later (https://github.com/ansible-collections/community.docker/pull/243). - docker_container_exec - ``chdir`` is only supported since Docker SDK for Python 3.0.0. Make sure that this option can only use when 3.0.0 or later is installed, and prevent passing this parameter on when ``chdir`` is not provided to this module (https://github.com/ansible-collections/community.docker/pull/243, https://github.com/ansible-collections/community.docker/issues/242). -- nsenter connection plugin - ensure the ``nsenter_pid`` option is retrieved in ``_connect`` instead of ``__init__`` to prevent a crasher due to bad initialization order (https://github.com/ansible-collections/community.docker/pull/249). +- nsenter connection plugin - ensure the ``nsenter_pid`` option is retrieved in ``_connect`` instead of ``__init__`` to prevent a crash due to bad initialization order (https://github.com/ansible-collections/community.docker/pull/249). - nsenter connection plugin - replace the use of ``--all-namespaces`` with specific namespaces to support compatibility with Busybox nsenter (used on, for example, Alpine containers) (https://github.com/ansible-collections/community.docker/pull/249). v2.0.1 @@ -828,9 +828,9 @@ Bugfixes - docker_container - fix healthcheck disabling idempotency issue with strict comparison (https://github.com/ansible-collections/community.docker/issues/85). - docker_image - prevent module failure when removing image that is removed between inspection and removal (https://github.com/ansible-collections/community.docker/pull/87). -- docker_image - prevent module failure when removing non-existant image by ID (https://github.com/ansible-collections/community.docker/pull/87). +- docker_image - prevent module failure when removing non-existent image by ID (https://github.com/ansible-collections/community.docker/pull/87). - docker_image_info - prevent module failure when image vanishes between listing and inspection (https://github.com/ansible-collections/community.docker/pull/87). -- docker_image_info - prevent module failure when querying non-existant image by ID (https://github.com/ansible-collections/community.docker/pull/87). +- docker_image_info - prevent module failure when querying non-existent image by ID (https://github.com/ansible-collections/community.docker/pull/87). New Modules ----------- @@ -985,7 +985,7 @@ Removed Features (previously deprecated) - docker_image - the ``source`` option is now mandatory (https://github.com/ansible-collections/community.docker/pull/1). - docker_image - the ``use_tls`` option has been removed. Use ``tls`` and ``validate_certs`` instead (https://github.com/ansible-collections/community.docker/pull/1). - docker_image - the default of the ``build.pull`` option changed to ``false`` (https://github.com/ansible-collections/community.docker/pull/1). -- docker_image_facts - this alias is on longer availabe, use ``docker_image_info`` instead (https://github.com/ansible-collections/community.docker/pull/1). +- docker_image_facts - this alias is on longer available, use ``docker_image_info`` instead (https://github.com/ansible-collections/community.docker/pull/1). - docker_network - no longer returns ``ansible_facts`` (https://github.com/ansible-collections/community.docker/pull/1). - docker_network - the ``ipam_options`` option has been removed. Use ``ipam_config`` instead (https://github.com/ansible-collections/community.docker/pull/1). - docker_service - no longer returns ``ansible_facts`` (https://github.com/ansible-collections/community.docker/pull/1). diff --git a/changelogs/changelog.yaml b/changelogs/changelog.yaml index 1e690d558..a0ed12da2 100644 --- a/changelogs/changelog.yaml +++ b/changelogs/changelog.yaml @@ -36,7 +36,7 @@ releases: instead (https://github.com/ansible-collections/community.docker/pull/1). - docker_image - the default of the ``build.pull`` option changed to ``false`` (https://github.com/ansible-collections/community.docker/pull/1). - - docker_image_facts - this alias is on longer availabe, use ``docker_image_info`` + - docker_image_facts - this alias is on longer available, use ``docker_image_info`` instead (https://github.com/ansible-collections/community.docker/pull/1). - docker_network - no longer returns ``ansible_facts`` (https://github.com/ansible-collections/community.docker/pull/1). - docker_network - the ``ipam_options`` option has been removed. Use ``ipam_config`` @@ -213,11 +213,11 @@ releases: comparison (https://github.com/ansible-collections/community.docker/issues/85). - docker_image - prevent module failure when removing image that is removed between inspection and removal (https://github.com/ansible-collections/community.docker/pull/87). - - docker_image - prevent module failure when removing non-existant image by + - docker_image - prevent module failure when removing non-existent image by ID (https://github.com/ansible-collections/community.docker/pull/87). - docker_image_info - prevent module failure when image vanishes between listing and inspection (https://github.com/ansible-collections/community.docker/pull/87). - - docker_image_info - prevent module failure when querying non-existant image + - docker_image_info - prevent module failure when querying non-existent image by ID (https://github.com/ansible-collections/community.docker/pull/87). minor_changes: - docker_container - add ``storage_opts`` option to specify storage options @@ -475,7 +475,7 @@ releases: module (https://github.com/ansible-collections/community.docker/pull/243, https://github.com/ansible-collections/community.docker/issues/242). - nsenter connection plugin - ensure the ``nsenter_pid`` option is retrieved - in ``_connect`` instead of ``__init__`` to prevent a crasher due to bad initialization + in ``_connect`` instead of ``__init__`` to prevent a crash due to bad initialization order (https://github.com/ansible-collections/community.docker/pull/249). - nsenter connection plugin - replace the use of ``--all-namespaces`` with specific namespaces to support compatibility with Busybox nsenter (used on, for example, @@ -528,7 +528,7 @@ releases: 2.2.0: changes: bugfixes: - - docker_container, docker_image - adjust image finding code to pecularities + - docker_container, docker_image - adjust image finding code to peculiarities of ``podman-docker``'s API emulation when Docker short names like ``redis`` are used (https://github.com/ansible-collections/community.docker/issues/292). minor_changes: @@ -791,7 +791,7 @@ releases: with ansible-core 2.12+. For ansible-core 2.11, uses ``distutils.version`` for Python < 3.12. There is no support for ansible-core 2.11 with Python 3.12+ (https://github.com/ansible-collections/community.docker/pull/271). - - socker_handler and socket_helper module utils - improve Python forward compatibilty, + - socker_handler and socket_helper module utils - improve Python forward compatibility, create helper functions for file blocking/unblocking (https://github.com/ansible-collections/community.docker/pull/415). release_summary: First alpha prerelease of community.docker 3.0.0. This version has several breaking changes and features rewrites of several modules to directly diff --git a/docs/docsite/rst/scenario_guide.rst b/docs/docsite/rst/scenario_guide.rst index edfe3c729..60f8d845c 100644 --- a/docs/docsite/rst/scenario_guide.rst +++ b/docs/docsite/rst/scenario_guide.rst @@ -18,7 +18,7 @@ The `community.docker collection `_. The SDK needs to be installed on the machines where the modules and plugins are executed, and for the Python version(s) with which the modules and plugins are executed. You can use the :ref:`community.general.python_requirements_info module ` to make sure that the Docker SDK for Python is installed on the correct machine and for the Python version used by Ansible. +Most of the modules and plugins in community.docker require the `Docker SDK for Python `_. The SDK needs to be installed on the machines where the modules and plugins are executed, and for the Python version(s) with which the modules and plugins are executed. You can use the :ansplugin:`community.general.python_requirements_info module ` to make sure that the Docker SDK for Python is installed on the correct machine and for the Python version used by Ansible. Note that plugins (inventory plugins and connection plugins) are always executed in the context of Ansible itself. If you use a plugin that requires the Docker SDK for Python, you need to install it on the machine running ``ansible`` or ``ansible-playbook`` and for the same Python interpreter used by Ansible. To see which Python is used, run ``ansible --version``. @@ -126,54 +126,66 @@ Plain Docker daemon: images, networks, volumes, and containers For working with a plain Docker daemon, that is without Swarm, there are connection plugins, an inventory plugin, and several modules available: docker connection plugin - The :ref:`community.docker.docker connection plugin ` uses the Docker CLI utility to connect to Docker containers and execute modules in them. It essentially wraps ``docker exec`` and ``docker cp``. This connection plugin is supported by the :ref:`ansible.posix.synchronize module `. + The :ansplugin:`community.docker.docker connection plugin ` uses the Docker CLI utility to connect to Docker containers and execute modules in them. It essentially wraps ``docker exec`` and ``docker cp``. This connection plugin is supported by the :ansplugin:`ansible.posix.synchronize module `. docker_api connection plugin - The :ref:`community.docker.docker_api connection plugin ` talks directly to the Docker daemon to connect to Docker containers and execute modules in them. + The :ansplugin:`community.docker.docker_api connection plugin ` talks directly to the Docker daemon to connect to Docker containers and execute modules in them. docker_containers inventory plugin - The :ref:`community.docker.docker_containers inventory plugin ` allows you to dynamically add Docker containers from a Docker Daemon to your Ansible inventory. See :ref:`dynamic_inventory` for details on dynamic inventories. + The :ansplugin:`community.docker.docker_containers inventory plugin ` allows you to dynamically add Docker containers from a Docker Daemon to your Ansible inventory. See :ref:`dynamic_inventory` for details on dynamic inventories. The `docker inventory script `_ is deprecated. Please use the inventory plugin instead. The inventory plugin has several compatibility options. If you need to collect Docker containers from multiple Docker daemons, you need to add every Docker daemon as an individual inventory source. docker_host_info module - The :ref:`community.docker.docker_host_info module ` allows you to retrieve information on a Docker daemon, such as all containers, images, volumes, networks and so on. + The :ansplugin:`community.docker.docker_host_info module ` allows you to retrieve information on a Docker daemon, such as all containers, images, volumes, networks and so on. docker_login module - The :ref:`community.docker.docker_login module ` allows you to log in and out of a remote registry, such as Docker Hub or a private registry. It provides similar functionality to the ``docker login`` and ``docker logout`` CLI commands. + The :ansplugin:`community.docker.docker_login module ` allows you to log in and out of a remote registry, such as Docker Hub or a private registry. It provides similar functionality to the ``docker login`` and ``docker logout`` CLI commands. docker_prune module - The :ref:`community.docker.docker_prune module ` allows you to prune no longer needed containers, images, volumes and so on. It provides similar functionality to the ``docker prune`` CLI command. + The :ansplugin:`community.docker.docker_prune module ` allows you to prune no longer needed containers, images, volumes and so on. It provides similar functionality to the ``docker prune`` CLI command. docker_image module - The :ref:`community.docker.docker_image module ` provides full control over images, including: build, pull, push, tag and remove. + The :ansplugin:`community.docker.docker_image module ` provides full control over images, including: build, pull, push, tag and remove. + + docker_image_load + The :ansplugin:`community.docker.docker_image_load module ` allows you to import one or multiple images from tarballs. docker_image_info module - The :ref:`community.docker.docker_image_info module ` allows you to list and inspect images. + The :ansplugin:`community.docker.docker_image_info module ` allows you to list and inspect images. docker_network module - The :ref:`community.docker.docker_network module ` provides full control over Docker networks. + The :ansplugin:`community.docker.docker_network module ` provides full control over Docker networks. docker_network_info module - The :ref:`community.docker.docker_network_info module ` allows you to inspect Docker networks. + The :ansplugin:`community.docker.docker_network_info module ` allows you to inspect Docker networks. docker_volume_info module - The :ref:`community.docker.docker_volume_info module ` provides full control over Docker volumes. + The :ansplugin:`community.docker.docker_volume_info module ` provides full control over Docker volumes. docker_volume module - The :ref:`community.docker.docker_volume module ` allows you to inspect Docker volumes. + The :ansplugin:`community.docker.docker_volume module ` allows you to inspect Docker volumes. docker_container module - The :ref:`community.docker.docker_container module ` manages the container lifecycle by providing the ability to create, update, stop, start and destroy a Docker container. + The :ansplugin:`community.docker.docker_container module ` manages the container lifecycle by providing the ability to create, update, stop, start and destroy a Docker container. + + docker_container_copy_into + The :ansplugin:`community.docker.docker_container_copy_into module ` allows you to copy files from the control node into a container. + + docker_container_exec + The :ansplugin:`community.docker.docker_container_exec module ` allows you to execute commands in a running container. docker_container_info module - The :ref:`community.docker.docker_container_info module ` allows you to inspect a Docker container. + The :ansplugin:`community.docker.docker_container_info module ` allows you to inspect a Docker container. + + docker_plugin + The :ansplugin:`community.docker.docker_plugin module ` allows you to manage Docker plugins. Docker Compose -------------- -The :ref:`community.docker.docker_compose module ` +The :ansplugin:`community.docker.docker_compose module ` allows you to use your existing Docker compose files to orchestrate containers on a single Docker daemon or on Swarm. Supports compose versions 1 and 2. @@ -183,13 +195,13 @@ Next to Docker SDK for Python, you need to install `docker-compose ` allows you to dynamically add Docker Machine hosts to your Ansible inventory. +The :ansplugin:`community.docker.docker_machine inventory plugin ` allows you to dynamically add Docker Machine hosts to your Ansible inventory. Docker stack ------------ -The :ref:`community.docker.docker_stack module ` module allows you to control Docker stacks. Information on stacks can be retrieved by the :ref:`community.docker.docker_stack_info module `, and information on stack tasks can be retrieved by the :ref:`community.docker.docker_stack_task_info module `. +The :ansplugin:`community.docker.docker_stack module ` module allows you to control Docker stacks. Information on stacks can be retrieved by the :ansplugin:`community.docker.docker_stack_info module `, and information on stack tasks can be retrieved by the :ansplugin:`community.docker.docker_stack_task_info module `. Docker Swarm @@ -203,19 +215,19 @@ Swarm management One inventory plugin and several modules are provided to manage Docker Swarms: docker_swarm inventory plugin - The :ref:`community.docker.docker_swarm inventory plugin ` allows you to dynamically add all Docker Swarm nodes to your Ansible inventory. + The :ansplugin:`community.docker.docker_swarm inventory plugin ` allows you to dynamically add all Docker Swarm nodes to your Ansible inventory. docker_swarm module - The :ref:`community.docker.docker_swarm module ` allows you to globally configure Docker Swarm manager nodes to join and leave swarms, and to change the Docker Swarm configuration. + The :ansplugin:`community.docker.docker_swarm module ` allows you to globally configure Docker Swarm manager nodes to join and leave swarms, and to change the Docker Swarm configuration. docker_swarm_info module - The :ref:`community.docker.docker_swarm_info module ` allows you to retrieve information on Docker Swarm. + The :ansplugin:`community.docker.docker_swarm_info module ` allows you to retrieve information on Docker Swarm. docker_node module - The :ref:`community.docker.docker_node module ` allows you to manage Docker Swarm nodes. + The :ansplugin:`community.docker.docker_node module ` allows you to manage Docker Swarm nodes. docker_node_info module - The :ref:`community.docker.docker_node_info module ` allows you to retrieve information on Docker Swarm nodes. + The :ansplugin:`community.docker.docker_node_info module ` allows you to retrieve information on Docker Swarm nodes. Configuration management ........................ @@ -223,16 +235,16 @@ Configuration management The community.docker collection offers modules to manage Docker Swarm configurations and secrets: docker_config module - The :ref:`community.docker.docker_config module ` allows you to create and modify Docker Swarm configs. + The :ansplugin:`community.docker.docker_config module ` allows you to create and modify Docker Swarm configs. docker_secret module - The :ref:`community.docker.docker_secret module ` allows you to create and modify Docker Swarm secrets. + The :ansplugin:`community.docker.docker_secret module ` allows you to create and modify Docker Swarm secrets. Swarm services .............. -Docker Swarm services can be created and updated with the :ref:`community.docker.docker_swarm_service module `, and information on them can be queried by the :ref:`community.docker.docker_swarm_service_info module `. +Docker Swarm services can be created and updated with the :ansplugin:`community.docker.docker_swarm_service module `, and information on them can be queried by the :ansplugin:`community.docker.docker_swarm_service_info module `. Helpful links diff --git a/plugins/action/docker_container_copy_into.py b/plugins/action/docker_container_copy_into.py index 372cbd0a3..fed0af00b 100644 --- a/plugins/action/docker_container_copy_into.py +++ b/plugins/action/docker_container_copy_into.py @@ -15,7 +15,7 @@ class ActionModule(ActionBase): - # Set to True when transfering files to the remote + # Set to True when transferring files to the remote TRANSFERS_FILES = False def run(self, tmp=None, task_vars=None): diff --git a/plugins/connection/nsenter.py b/plugins/connection/nsenter.py index fff36afbb..f429f8cef 100644 --- a/plugins/connection/nsenter.py +++ b/plugins/connection/nsenter.py @@ -128,7 +128,7 @@ def exec_command(self, cmd, in_data=None, sudoable=True): # This plugin does not support pipelining. This diverges from the behavior of # the core "local" connection plugin that this one derives from. if sudoable and self.become and self.become.expect_prompt(): - # Create a pty if sudoable for privlege escalation that needs it. + # Create a pty if sudoable for privilege escalation that needs it. # Falls back to using a standard pipe if this fails, which may # cause the command to fail in certain situations where we are escalating # privileges or the command otherwise needs a pty. diff --git a/plugins/inventory/docker_machine.py b/plugins/inventory/docker_machine.py index 9edf7c27e..c9c9c2c13 100644 --- a/plugins/inventory/docker_machine.py +++ b/plugins/inventory/docker_machine.py @@ -49,7 +49,7 @@ default: true verbose_output: description: - - When V(true), include all available nodes metadata (for exmaple C(Image), C(Region), C(Size)) as a JSON object + - When V(true), include all available nodes metadata (for example C(Image), C(Region), C(Size)) as a JSON object named C(docker_machine_node_attributes). type: bool default: true diff --git a/plugins/module_utils/_api/api/client.py b/plugins/module_utils/_api/api/client.py index d9ec5870d..44f17924f 100644 --- a/plugins/module_utils/_api/api/client.py +++ b/plugins/module_utils/_api/api/client.py @@ -455,7 +455,7 @@ def _get_result(self, container, stream, res): return self._get_result_tty(stream, res, self._check_is_tty(container)) def _get_result_tty(self, stream, res, is_tty): - # We should also use raw streaming (without keep-alives) + # We should also use raw streaming (without keep-alive) # if we're dealing with a tty-enabled container. if is_tty: return self._stream_raw_result(res) if stream else \ diff --git a/plugins/module_utils/module_container/module.py b/plugins/module_utils/module_container/module.py index 230dbfb40..c526e9c9d 100644 --- a/plugins/module_utils/module_container/module.py +++ b/plugins/module_utils/module_container/module.py @@ -132,7 +132,7 @@ def _parse_comparisons(self): self.all_options['image'].comparison = 'ignore' if self.module.params['purge_networks']: self.all_options['networks'].comparison = 'strict' - # Process comparsions specified by user + # Process comparisons specified by user if self.module.params.get('comparisons'): # If '*' appears in comparisons, process it first if '*' in self.module.params['comparisons']: diff --git a/plugins/modules/docker_login.py b/plugins/modules/docker_login.py index 69146a061..bb4e00b87 100644 --- a/plugins/modules/docker_login.py +++ b/plugins/modules/docker_login.py @@ -261,7 +261,7 @@ def __init__(self, client, results): def run(self): ''' - Do the actuall work of this task here. This allows instantiation for partial + Do the actual work of this task here. This allows instantiation for partial testing. ''' diff --git a/plugins/modules/docker_swarm.py b/plugins/modules/docker_swarm.py index fb2ae83a7..dc04c0a40 100644 --- a/plugins/modules/docker_swarm.py +++ b/plugins/modules/docker_swarm.py @@ -266,7 +266,7 @@ RETURN = ''' swarm_facts: - description: Informations about swarm. + description: Information about swarm. returned: success type: dict contains: diff --git a/tests/integration/targets/docker_node/tasks/test_node.yml b/tests/integration/targets/docker_node/tasks/test_node.yml index 89c9b3555..c326fc9f3 100644 --- a/tests/integration/targets/docker_node/tasks/test_node.yml +++ b/tests/integration/targets/docker_node/tasks/test_node.yml @@ -697,7 +697,7 @@ - label6 - label7 check_mode: true - register: output_add_del_overlap_lables_1 + register: output_add_del_overlap_labels_1 - name: Try to add or update and remove overlapping labels at the same time docker_node: @@ -708,7 +708,7 @@ labels_to_remove: - label6 - label7 - register: output_add_del_overlap_lables_2 + register: output_add_del_overlap_labels_2 - name: Try to add or update and remove overlapping labels at the same time (idempotent) docker_node: @@ -719,7 +719,7 @@ labels_to_remove: - label6 - label7 - register: output_add_del_overlap_lables_3 + register: output_add_del_overlap_labels_3 - name: Try to add or update and remove overlapping labels at the same time (idempotent check) docker_node: @@ -731,19 +731,19 @@ - label6 - label7 check_mode: true - register: output_add_del_overlap_lables_4 + register: output_add_del_overlap_labels_4 - name: assert adding or updating and removing overlapping labels from swarm node assert: that: - - 'output_add_del_overlap_lables_1 is changed' - - 'output_add_del_overlap_lables_2 is changed' - - 'output_add_del_overlap_lables_3 is not changed' - - 'output_add_del_overlap_lables_4 is not changed' - - 'output_add_del_overlap_lables_2.node.Spec.Labels | length == 3' - - '"label7" not in output_add_del_overlap_lables_2.node.Spec.Labels' - - 'output_add_del_overlap_lables_2.node.Spec.Labels.label6 == "value6666"' - - 'output_add_del_overlap_lables_2.node.Spec.Labels.label22 == "value22"' + - 'output_add_del_overlap_labels_1 is changed' + - 'output_add_del_overlap_labels_2 is changed' + - 'output_add_del_overlap_labels_3 is not changed' + - 'output_add_del_overlap_labels_4 is not changed' + - 'output_add_del_overlap_labels_2.node.Spec.Labels | length == 3' + - '"label7" not in output_add_del_overlap_labels_2.node.Spec.Labels' + - 'output_add_del_overlap_labels_2.node.Spec.Labels.label6 == "value6666"' + - 'output_add_del_overlap_labels_2.node.Spec.Labels.label22 == "value22"' #################################################################### ## Replace labels ############################################# @@ -828,7 +828,7 @@ check_mode: true register: output_remove_labels_4 - - name: assert removing all lables from swarm node + - name: assert removing all labels from swarm node assert: that: - 'output_remove_labels_1 is changed' diff --git a/tests/integration/targets/docker_swarm_info/tasks/test_swarm_info.yml b/tests/integration/targets/docker_swarm_info/tasks/test_swarm_info.yml index 288e2a0b0..a2cd5f8f9 100644 --- a/tests/integration/targets/docker_swarm_info/tasks/test_swarm_info.yml +++ b/tests/integration/targets/docker_swarm_info/tasks/test_swarm_info.yml @@ -14,7 +14,7 @@ ignore_errors: true register: output - - name: assert failure when called when swarm is not in use or not run on mamager node + - name: assert failure when called when swarm is not in use or not run on manager node assert: that: - 'output is failed' @@ -58,7 +58,7 @@ nodes: true register: output - - name: assert reding swarm facts with list of nodes option + - name: assert reading swarm facts with list of nodes option assert: that: - 'output.swarm_facts.JoinTokens.Manager'