75 Commits

Author SHA1 Message Date
Felix Fontein b775bac593 docker_image: allow to tag images by name, improve docs (#149)
* Add test to tag image with ID.

* Document that source=local also works with image IDs.

* Improve 'repository' documentation.

* Fix typo.

* Looks like a fix is needed to make this work.

* ...

* Avoid unnecessary re.search() calls.

* Add changelog fragment.

* Improve main description.

* Remove import.
2021-06-07 07:01:10 +02:00
Felix Fontein c20186901b Only emit tls_hostname deprecation warning if TLS is actually used (#143)
* Only emit tls_hostname deprecation warning if TLS is actually used.

* Linting.
2021-05-17 13:24:50 +02:00
Shane St Savage a512e7fb9e feat: allow unlimited memory_swap in docker_container (#138)
* feat: allow unlimited memory_swap in docker_container

summary: in docker_container, allow `memory_swap: values
`unlimited` and `-1` for unlimited container swap usage.

`--memory-swap=-1` is a valid docker run value allowing
unlimited swap usage. `docker_container` should allow
setting this value via `memory_swap` values `unlimited`
and `-1` as it sometimes must explicitly be set to prevent
docker from attempting to limit swap usage to double the
`--memory` value by default. In rootless docker environments,
attempting to set `memory-swap` usage limits will result in an error
if the user doesn't have the ability to do so. Allowing explicit
unlimited swap usage via docker_container will prevent these errors.

https://docs.docker.com/config/containers/resource_constraints/#--memory-swap-details

* Update tests/integration/targets/docker_container/tasks/tests/options.yml

* Apply suggestions from code review

Co-authored-by: Felix Fontein <felix@fontein.de>
2021-05-10 20:24:04 +02:00
Felix Fontein 3a0d3e15fb Configure plugin after installing it. (#135) 2021-05-07 07:14:28 +02:00
Felix Fontein 74475d1d9b docker_swarm_service: fix crash during idempotence check if published_port is not specified (#136)
* Avoid crash during idempotence check if published_port is not specified.

* Add tests.

* Convert lambda to function.
2021-05-05 08:00:22 +02:00
Alexandr N. Zamaraev 859bc29f9e docker_compose: fix #12 (#119)
* fix #12

* Create 12-correct_pull_wo_starting.yaml

* Update changelogs/fragments/12-correct_pull_wo_starting.yaml

Co-authored-by: Felix Fontein <felix@fontein.de>

* Update changelogs/fragments/12-correct_pull_wo_starting.yaml

Co-authored-by: Amin Vakil <info@aminvakil.com>

* Update docker_compose.py

Co-authored-by: Felix Fontein <felix@fontein.de>
Co-authored-by: Amin Vakil <info@aminvakil.com>
2021-05-04 07:53:38 +02:00
Felix Fontein cffba7b15d Deprecate default for tls_hostname (#134)
* Start removing default.

* Add deprecate() function to AnsibleDockerClientBase.

* Deprecate default value for tls_hostname.

* Add changelog.

* Mention deprecation in documentation.
2021-05-04 07:50:33 +02:00
daeseokyoun 18ccec6b10 common: correct error message for docker sdk version (#125)
Annouced that 5.0.0 in Docker SDK for Python do not support Python 2.7 anymore.
When the system use Python 2.7, and run "pip install docker" command to
install Docker SDK for Python module. Then the 5.0.0 will be installed.

When occurred the error for mismatching version for Python 2.7, the user
could not feature it out why it failed.

Co-authored-by: Daeseok Youn <daeseok.youn@navercorp.com>
2021-04-16 23:53:20 +02:00
Felix Fontein a3b9648233 Improve exception handling. (#121) 2021-04-08 08:00:01 +02:00
Felix Fontein ff503d9bd7 Add docker_container_exec module (#105)
* Move some code from plugin_utils to module_utils.

* First version of docker_container_exec module.

* Linting.

* Avoid using display.

* Move common socket_handler code to module_utils.

* Add module support, use it in docker_container_exec.

* Add tests.

* Fix copyright lines.

* Add this and other 'new' modules to README.

* Apply suggestions from code review

Co-authored-by: Andrew Klychkov <aaklychkov@mail.ru>

* Update plugins/modules/docker_container_exec.py

Co-authored-by: Andrew Klychkov <aaklychkov@mail.ru>
2021-04-06 23:53:17 +02:00
Felix Fontein e9b10ee0a4 Add use_ssh_client flag (#114)
* Add use_ssh_client option.

* Unrelated cleanup (unneeded imports).

* Add SSH connection tests.
2021-04-02 10:14:09 +02:00
sgpinkus 149a3abbc3 Fix update_failure_action KeyError in docker_swarm_service (#100)
* Fix update_failure_action KeyError in docker_swarm_service.py

* Update plugins/modules/docker_swarm_service.py

Co-authored-by: Felix Fontein <felix@fontein.de>

Co-authored-by: Felix Fontein <felix@fontein.de>
2021-03-14 22:52:27 +01:00
sgpinkus 5b74313023 Make docker_swarm_service option publish.published_port optional (#101)
* Change docker_swarm_service option publish.published_port from required to optional. If not specified random high port is assigned by docker.

* Update changelogs/fragments/101-make-service-published-port-optional.yaml

Co-authored-by: Felix Fontein <felix@fontein.de>

Co-authored-by: Felix Fontein <felix@fontein.de>
2021-03-13 13:37:56 +01:00
Felix Fontein b42b76fc45 [security] docker_swarm: mark join_token as no_log (#103)
* Mark join_token as no_log.

* Apply suggestions from code review

Co-authored-by: Piotr Wojciechowski <23406016+WojciechowskiPiotr@users.noreply.github.com>

Co-authored-by: Piotr Wojciechowski <23406016+WojciechowskiPiotr@users.noreply.github.com>
2021-03-12 22:31:39 +01:00
Felix Fontein e42aadf3e9 docker_swarm_service: flag secrets option as not secret (#102)
* Flag secrets option as not secret.

* Add changelog fragment.
2021-03-12 22:01:11 +01:00
Felix Fontein f142f8c86d Add docker_image_load module (#90)
* Add docker_image_load module.

* Polish module.

* Fix bug and add tests.

* Apply suggestions from code review

Co-authored-by: Amin Vakil <info@aminvakil.com>

* Make sure that containers that still exist are also cleared.

* Always return stdout.

* Try to work around removal problems.

* Accept that the Docker daemon sometimes only reports the named image.

* More debug output.

* Also prune containers, in the hope that these cause the problems.

* Let's see whether pruning containers (but not images) is enough.

* Apply suggestions from code review

Co-authored-by: Andrew Klychkov <aaklychkov@mail.ru>

* Update plugins/modules/docker_image_load.py

Co-authored-by: Andrew Klychkov <aaklychkov@mail.ru>

Co-authored-by: Amin Vakil <info@aminvakil.com>
Co-authored-by: Andrew Klychkov <aaklychkov@mail.ru>
2021-03-05 09:06:21 +01:00
Sakar da62cfc24a New module docker_plugin (#95)
* New module docker-plugin with integration_tests

* Fix sanity test

* Changes made as per the reviewer suggested

* Fix check-mode and test directory

* Fix Sanity

* fix integration

* fix integration

* fix integration

* fix integration
2021-03-01 13:02:53 +01:00
Felix Fontein f2d16da643 docker_image: improve/fix handling of image IDs (#87)
* Improve/fix handling of image IDs in docker_image.

* Fix syntax error.

* Linting.

* Fix name collision.

* Add various tests.

* Fix tests.

* Improve image finding by ID, and fix various related bugs.

* accept_not_there -> accept_missing_image.

* Remove unnecessary dummy variable.
2021-02-28 10:40:11 +01:00
Felix Fontein ed9bf1117f docker_image: allow to specify pull platform (#89)
* Allow to specify pull platform.

* Add basic test and document that the value is not used for idempotency at the moment.

* Fix pulling.

* Simplify code.

* Add API version for pull_platform.

* Move pull_platform into new pull option. Use apply_defaults=True to avoid some special logic.

* Add example.

* Remove apply_defaults=True.
2021-02-24 23:45:34 +01:00
Felix Fontein f107ab281f Add storage_opts option. (#93) 2021-02-24 23:01:34 +01:00
Piotr Wojciechowski 3ddd75ac68 Replicas max per node (#92)
* Adding 'replicas_max_per_node' placement parameter

* Adding 'replicas_max_per_node' placement parameter

* Adding 'replicas_max_per_node' integration tests

* Adding 'replicas_max_per_node' feature

* 'replicas_max_per_node' documentation update

* 'replicas_max_per_node' unit test fix

* Documentation and changelog updates

* Update changelogs/fragments/92-replicas-max-per-node.yml

Co-authored-by: Felix Fontein <felix@fontein.de>

Co-authored-by: WojciechowskiPiotr <devel@it-playground.pl>
Co-authored-by: Felix Fontein <felix@fontein.de>
2021-02-24 10:14:06 +01:00
Felix Fontein f5d68755c4 Fix healthcheck idempotency issue with strict comparison. (#88) 2021-02-17 22:56:52 +01:00
David Moreau Simard 58babf738b docker swarm - Add no_log to the signing_ca_key argument (#80)
* docker swarm - Add no_log to the signing_ca_key argument

This will prevent accidental disclosure.

See: CVE-2021-20191

* Update changelogs/fragments/CVE-2021-20191_no_log.yml

Co-authored-by: Felix Fontein <felix@fontein.de>
2021-02-04 21:03:43 +01:00
Romain Lalaut 43cbe3095b docker.py: allow docker versions beginning with 'v' (#76)
* docker.py: allow docker versions with a leading 'v'

* Update changelogs/fragments/76-leading-v-support-in-docker-version.yml

Co-authored-by: Felix Fontein <felix@fontein.de>

Co-authored-by: Felix Fontein <felix@fontein.de>
2021-01-27 14:16:35 +00:00
Felix Fontein 8702713ac3 docker_image: do not crash in load_image for docker-py < 2.5.0. (#73)
* Avoid crash for docker-py < 2.5.0.

* Add warnings when load_image does not return a generator.

* Add test.

* Update plugins/modules/docker_image.py

Co-authored-by: Andrew Klychkov <aaklychkov@mail.ru>

Co-authored-by: Andrew Klychkov <aaklychkov@mail.ru>
2021-01-25 15:17:04 +01:00
Felix Fontein c1e6c2e699 Fix IPv6 zone handling (#66)
* Support IPv6 zones (RFC 4007).

* Add changelog fragment.

* Remove change for docker_network.

* Add IPv6 zone test.

It looks like an arbitrary zone name works. If Docker daemon ever starts
validating it (against what?) we either have to try to fix this test by
a valid value, or remove it again.
2021-01-25 15:16:35 +01:00
Felix Fontein 6adb148675 Add default_host_ip option. (#71) 2021-01-20 23:53:23 +01:00
Felix Fontein c7a3d9f057 docker_container: cgroup_parent (#59)
* Document that the Docker SDK for Python is used by the module.

* Allow to specify cgroup_parent for container.
2021-01-03 13:30:09 +01:00
Felix Fontein e4b747d788 docker_container: return status also when 0 for non-detached containers (#58)
* Return status also when 0.

* Fix PR number.
2021-01-02 18:53:25 +01:00
Felix Fontein 9b131399ce Docker inventory plugin (#61)
* Began with docker inventory plugin.

* Linting.

* Improve plugin, add basic unit tests.

* Linting.

* Add integration test.

* Adjust tests to case that there are more containers.

* There can be stopped containers.

ci_coverage

* docker -> docker_containers
2020-12-30 08:44:24 +01:00
Felix Fontein 2a0fb7d3ed Refactor docker_image line extraction code. (#62) 2020-12-28 15:16:35 +01:00
Felix Fontein a11f24c3a9 Fix docker_api connection: do not initialize client too early (#63)
* Fix docker_api connection: do not initialize client too early

* Make sure connection plugin tests are also run with Ansible 2.9 and 2.10.
2020-12-27 16:13:40 +01:00
Felix Fontein 5eef093e99 Check output of load_image and react upon. (#55) 2020-12-27 15:04:38 +01:00
Felix Fontein 1277942a4e Deprecate current behavior when specifying all with other port mappings. (#60) 2020-12-26 18:20:52 +01:00
Felix Fontein 117f132213 docker_image: always push, also when tagging is not necessary (#53)
* Always push, also when tagging is not necessary.

* Add tests.

* Fix tests.
2020-12-26 18:20:28 +01:00
Felix Fontein d40c2409d3 docker_image: allow to specify build platform (#54)
* Allow to specify build platform.

* Add basic tests.
2020-12-25 19:01:37 +01:00
Felix Fontein 8bd33b06c4 docker_api connection plugin (#40)
* Add basic docker_api connection test.

* Split AnsibleDockerClient into module-independent and module-specific part.

* Mention new connection plugin.

* Fix tests.

* Add first version of docker_api connection plugin.

* Linting.

* Fix references.

* Improve connection tests.

* Fix put_file for all Python versions.

* Fix fetch_file.

* Linting.

* Update plugins/connection/docker_api.py

Co-authored-by: Andrew Klychkov <aaklychkov@mail.ru>

* Move potential common code to module_utils / plugin_utils.

* Move socket_handler to plugin_utils.

* Fix typo.

Co-authored-by: Andrew Klychkov <aaklychkov@mail.ru>
2020-12-15 20:07:55 +00:00
Felix Fontein fe2d52ff29 Fix AZP tests, add current_container_facts module (#48)
* Add new facts module for determining whether the module is running inside a container or not.

* Add containers to main network.

* Fix running tests locally with newer docker.

* Simplify setup_openssl to only install cryptography.

* Add alias in network.

* Make sure to upgrade cryptography to something more sensible on Ubuntu 16.04.

* Don't jump through hoops for bridge.

* Try to use other IPv4 nets.

* Improve module docs.
2020-12-13 08:06:16 +00:00
Felix Fontein 518e99411a Fix capabilities validation for device_requests. (#43) 2020-12-08 13:31:17 +01:00
Felix Fontein bc0e0c3049 Adjust version_added, re-place tests. (#34) 2020-11-15 17:21:50 +01:00
Raghu Siddarth Udiyar ea8c107625 Add docker build output to task result (#805)
The build output is only added during failures, but its useful to
have this available during normal task execution as well.
2020-11-15 16:57:05 +01:00
Aram Akhavan 22ba76b4e9 Add a warning when ansible_key label is not found on a secret. (#31)
* add a warning when ansible_label is not found on a secret. addresses #30

* Update changelogs/fragments/31-docker-secret.yml

Co-authored-by: Felix Fontein <felix@fontein.de>

Co-authored-by: Felix Fontein <felix@fontein.de>
2020-11-09 08:31:55 +01:00
Felix Fontein e691ad72ab Remove ignore.txt entries (#29)
* Remove some ignore.txt entries.

* Prepare for validate-plugins.
2020-11-06 06:18:41 +01:00
Felix Fontein e4415eae28 Add version_added for device_requests. 2020-10-30 07:06:52 +01:00
Felix Fontein 5dba331bc7 Adjust deprecations (#1)
* First batch of c.g 2.0.0 deprecations.

* Remove use_tls and force from docker_image.

* More removals.

* Change community.general 3.0.0 deprecations to community.docker 2.0.0.

* Fix sanity.

* Fixing some bugs.

* Add PR URL to fragment.

ci_complete
ci_coverage

* Improve docs, remove superfluous code.
2020-10-30 07:05:51 +01:00
Felix Fontein 400c484a54 Remove version_added from community.general, and add changelog fragments since community.general 1.2.0. 2020-10-30 07:05:51 +01:00
Felix Fontein 6555a5a0de Initial cleanup. 2020-10-30 07:05:51 +01:00
Felix Fontein a8835f5bf5 docker_container: add device_requests option (#1119)
* docker_container: add device_requests option.

* Fix copy'n'paste mistake.

* Fix failure test.

* Added example.

* Adjust tense.
2020-10-30 07:05:51 +01:00
Felix Fontein 25e898068a docker_login: fix internal config file storage to handle credentials for more than one registry (#1118)
* docker_login: fix internal config file storage to handle credentials for more than one registry

* Improve setup for docker registry.

* Add second registry frontend. Add tests for #1118.

* Fix cleanup.
2020-10-30 07:05:51 +01:00
Felix Fontein 79784d2c82 Improve plugin sanity (#966)
* callback_type -> type.

* Mark authors as unknown.

* Add author field forgotten in #627.

* Fix author entries.

* Add author field forgotten in #127.

* Fix some types.
2020-10-30 07:05:51 +01:00