Commit Graph

573 Commits (301d561420cd80b749db4973ff9a057ea829c9f2)

Author SHA1 Message Date
Felix Fontein 04e2a94687 Improve tagging examples. (#50321) 2018-12-26 15:10:14 +00:00
John Hu 9be3ebc596 docker_image: add network parameter (#50313)
* docker_image: add network parameter

Add a network parameter to the docker_image module to specify the
network to use for RUN commands.

Called it network instead of network_mode as the latter seems like a
legacy of when there were just a few default options to choose from,
while now the name of an arbitrary network can be specified.

Fixes #21433

* Format description

* Update docker_image option_minimal_versions

* Ensure network_mode param optional
2018-12-26 13:23:39 +00:00
Dag Wieers 05c6ff79f9 Convert to reduced list of known types (#50010) 2018-12-19 07:25:30 +10:00
Toshio Kuratomi 3fba006207 Update bare exceptions to specify Exception.
This will keep us from accidentally catching program-exiting exceptions
like KeyboardInterupt and SystemExit.
2018-12-16 15:03:19 -08:00
Dave Bendit d62d7176b0 [docker_container] Failing on non-string env values (#49843)
* [docker_container] Failing on non-string env values

Fixes #49802

* Clarify failure message

Co-Authored-By: DBendit <David@ibendit.com>

* Fixup from review
2018-12-14 13:21:54 -06:00
Dave Bendit c67f4290e6 [docker_volume] Checking option minimal versions (#49839)
Fixes #38833
2018-12-14 13:20:48 -06:00
Akshay Gaikwad 1e0363ec7d Support for cache_from parameter in docker_image module (#49787)
* Support for cache_from parameter in docker_image module

Fixes #21704

Signed-off-by: Akshay Gaikwad <akgaikwad001@gmail.com>

* Minimum docker version check for cache_from option

Signed-off-by: Akshay Gaikwad <akgaikwad001@gmail.com>

* Add changelog fragment

Signed-off-by: Akshay Gaikwad <akgaikwad001@gmail.com>

* cache_from fix when docker-py is older

Signed-off-by: Akshay Gaikwad <akgaikwad001@gmail.com>
2018-12-14 13:19:40 -06:00
Dave Bendit b67719ba1d Docker common consolidation (#49707)
* [docker] Consolidating Python Boolean conversion for Docker API (#49563)

* [docker] Consolidating docker option min version checks (#49564)

* [docker] Moving option min version checks out of docker_swarm (#49564)

Also renaming Boolean cleanup function and fixing docker_container minimum
version check for network interfaces.

* Cleanup from PR feedback
2018-12-12 09:05:12 +00:00
Dave Bendit 8fcf9e1a28 [docker_container] Fixes idempotency checks for network_mode (#49797)
Fixes #49794
2018-12-12 09:04:24 +00:00
Felix Fontein 495a426039 docker_swarm: fix minimal API version (#49691)
* Reduce minimally required docker API version to 1.25, with selective features requiring 1.30.

* Adjust test requirements.

* Forgot some imports.
2018-12-10 14:09:28 +05:30
Dario Zanzico b183eb4464 docker_swarm_service: ensure idempotency when the user parameter is None (#49235)
* ensure idempotency for user set to None

* Update `user` documentation and add changelog fragment

* clarify changelog fragments and parameters documentation

* use restructuredtext syntax in changelog fragment
2018-12-10 14:09:13 +05:30
Felix Fontein aec98b6aab Add docker_volume_facts module (#49692)
* Add docker_volume_facts module.

* Fix type confusion.

* Improve tests.
2018-12-10 15:41:46 +10:00
Dave Bendit f545763296 [docker_network_facts] Creating docker_network_facts module (#49644)
Part of #49267
2018-12-10 15:24:05 +10:00
Dave Bendit 73640a4190 [docker_network] Adding `scope` and `attachable` flags (#49562)
Incorporating the abandoned work from PRs #35288 and #45552. Also adding in
the version checking from `docker_container.py`, which should be abstracted
out to `docker_common.py`.
2018-12-06 18:50:45 +00:00
Akshay Gaikwad 597e449afe Support for pids_limit parameter in docker_container module (#49319)
* Support for pids_limit parameter in docker_container module

This add pids_limit parameter support in docker_container module

Fixes #43337

Signed-off-by: Akshay <akshay@localhost.localdomain>

* Add changelog for pids_limit parameter

Signed-off-by: Akshay Gaikwad <akgaikwad001@gmail.com>

* Remove unnecessary lines of code

The map is needed if the names are different.

Signed-off-by: Akshay Gaikwad <akgaikwad001@gmail.com>

* Update pids_limit option tests

It also run for docker-py < 1.10.0

Signed-off-by: Akshay Gaikwad <akgaikwad001@gmail.com>
2018-12-03 11:22:43 +00:00
Felix Fontein 9caaf7b109 docker_container: fix init option idempotency with old docker-py versions (#49078)
* Don't check options for idempotency which are not supported.

This check should be superfluous if every option would adhere to
the convention that options not specified should have value None.
Unfortunately, some options (such as init) which correspond to
container properties have an explicit default set.
2018-11-26 13:53:01 +00:00
Felix Fontein 3bb41ccb8e docker_* tests: check API version (#48620)
* Check minimal API and docker-py versions for all docker_* tests.

* Improve docker_swarm creation/destruction for tests.

* Fail when conditions aren't met.

* Don't hardcode address for advertise_addr.
2018-11-19 10:01:40 +00:00
Felix Fontein 891687284f docker_* modules: improve diff (#48546)
* Add difference tracking tool

* Improve --diff mode for docker_container.

* Improve diffs of sets by ordering the sets.

* Rewrite imports, get rid of HAS_DOCKER_PY_x variables and use docker_version instead.

* Rename container -> active (more generic).

* Add --diff for docker_volume. Change old diff output.

* Add --diff for docker_network. Change old diff output.

* Add --diff for docker_swarm_service.

* Add changelog.

* Add entry for porting guide on docker_network and docker_volume.
2018-11-19 09:59:54 +00:00
Felix Fontein ce3a9cfae5 Only pass ipam parameter to create_network() if needed. (#48735) 2018-11-16 01:20:32 -05:00
Abhijeet Kasurde 5126068a19 Missing min version in string format (#48715)
Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
2018-11-15 08:13:39 -05:00
Felix Fontein b1acabcd03 docker_container: fix tests and idempotency for init and shm_size (#48551)
* Fix tests: use same command if not testing command option.

* Fix idempotency of init option.

* Fix shm_size idempotency (it is included in inspect results from docker API version 1.22 on).

* Add changelog.
2018-11-13 13:07:36 +00:00
Felix Fontein f3a3f42490 docker_container: make condition less specific (#48590)
* Code seems to have changed from 409 to 400, so let's not check the code.

* Unpause container before removing it.

* Improve code.

* Same for stop_container.
2018-11-13 08:21:55 +00:00
Dario Zanzico 89bcd3ff1e clarify port.mode paramter requiremets, fail if unmet (#47938)
* clarify port.mode paramter requiremets, fail if unmet

* changelog fragment

* shorten too long line

* remove unnecessary indentation

* test version on docker_version for better maintainability

* normalize imports

* changelog fragment: minor_changes -> bugfixes

* rollback e96a7e57dfefd566fa47cf465a759637affd4795

* typo

Co-Authored-By: dariko <dariko@users.noreply.github.com>
2018-11-12 11:36:02 +00:00
Felix Fontein 0206a46e1d docker_* modules: updating argument_spec (#48491)
* Updating argument_spec for docker_* modules.

* Adjust docker_network to work with new recursive argument_spec.

* Adjust device IO limits to recursive argument_spec.

* Improve test (test Ansible's cast from str to int).

* Adjust healthcheck options construction.

* Remove superfluous check.

* Make flake8 happy.

* Simplify comparison.
2018-11-12 11:33:42 +00:00
Felix Fontein feb60b947c Docker volume fix labels (#48536)
* Add integration test for labels (which fails).

* Changing labels from list to dict.

* Add changelog.
2018-11-12 11:24:07 +00:00
Felix Fontein 602d02be5f Add docker_container_facts module. (#48062) 2018-11-06 15:08:28 +00:00
Dave Bendit d7686e1bc0 [docker_network] Add handling for Python booleans in driver_options (#48105)
Fixes #26708
2018-11-06 14:39:45 +00:00
Felix Fontein 2728a22f73 Add docker_prune module (#48063)
* Add docker_prune module.

* Fix spelling error.
2018-11-05 17:05:26 +00:00
Felix Fontein 569ec812e7 Improve paused test and behavior. (#48056) 2018-11-05 11:34:23 +00:00
Felix Fontein af2b477950 docker_container: fix container removal when auto_remove is used (#48061)
* Fix container removal when auto_remove is used.
2018-11-05 11:33:56 +00:00
Felix Fontein 35809e99bc docker_container: fix ipc_mode and pid_mode idempotency (#47997)
* Fix ipc_mode and pid_mode idempotency when container names are used.

* Add changelog.

* Update pid_mode documentation.
2018-11-05 10:26:13 +10:00
Felix Fontein 3cca4185be docker_container: simplify minimal required version per option handling (#47711)
* Store parsed docker-py / docker API versions in client.

* Began refactoring 'minimal required version' for docker_container options.

* Removing some fake defaults.

* Added changelog.

* Improve tests (check older docker versions).

* Fix comparison. The breaking point is not docker-py 2.0.0, but 1.10.0.

(Verified by testing with these versions.)

* Move docker-py/API version detection to setup_docker.

* Add YAML document starter.

* docker_network requirement for docker-py was bumped to 1.10.0 in #47492.
2018-11-05 10:25:11 +10:00
Stephan Müller 00bab2d24d [docker_network] add ipv6 support (#47492)
* [docker_network] add ipv6 support

* docker_network: review ipam_options

* docker_network: fix requirements

* docker_network: fix deprecation notice

* docker_network: add minimum docker version change

* docker_network: remove trailing whitespace

* docker_network: revert rename of network_four #discussion_r228707101

* docker_network: refactor IPAM config comparison #discussion_r228707255, #discussion_r228707280

* docker_network: correct spelling of IPv4 and IPv6 #discussion_r228707114, #discussion_r228707138

* docker_network: manually remove networks #discussion_r228709051

* docker_network: refactor enable_ipv6 condition #discussion_r228707317

* docker_network: add mutually_exclusive #discussion_r228707185

* docker_network: fix iprange #discussion_r228709072

* docker_network: add auxiliary addresses in examples and tests

* docker_network: link to docker docs #discussion_r228707018

* docker_network: remove list default #discussion_r228707060, #discussion_r228709091

* docker_network: introduce params syntax for create_network() #discussion_r228709031

* docker_network: beautify code

* docker_network: resolve change requests

* docker_network: add yaml header

* docker_networking: fix get_ip_version

* docker_network: extend CIDR test

* docker_network: use backported unittest2 for python 2.6

* docker_network: migrate unittest to pytest
2018-11-02 08:59:16 +10:00
Akshay Gaikwad 80ca779aa7 Support for device read write limit parameters (#47814)
* Support for device read write limit parameters

* Add following options in docker_container module
  - device_read_bps
  - device_write_bps
  - device_read_iops
  - device_write_iops

Fixes #36831

* test for device_read_iops
* combined test for device_write_bps and device_write_iops
2018-11-02 08:58:06 +10:00
Thierry Bouvet 87de2dde9f Fix advertise addr (#47608)
* Fix issue #46326

* Update example to create a default swarm
2018-11-01 08:10:03 +00:00
Felix Fontein 65768b996d docker_container: fix paused and add some tests (#47900)
* cleanup is already tested.

* Add test for paused.

* Add recreate and restart tests.

* timeout is a common docker option

* Implement paused and fix paused test.

* Add changelog.

* Improve paused test.
2018-11-01 08:08:43 +00:00
Felix Fontein 73533d3fc2 docker_* modules: simplify idempotency comparisons (#47709)
* More generic comparison code from docker_container to docker_common.

* More flexibility if a is None and method is allow_to_present.

Note that this odes not affect docker_container, as there a is never None.

* Update docker_secret and docker_config: simplify labels comparison.

* Added unit tests.

* Use proper subsequence test for allow_more_present for lists.

Note that this does not affect existing code in docker_container, since lists
don't use allow_more_present. Using allow_more_present will only be possible
in Ansible 2.8.

* pep8
2018-10-30 08:50:34 +00:00
Etienne Perot e217ba6e19 docker_image: Fix up 'changed' event in force mode (#33754)
* docker_image: Fix up 'changed' event in force mode

This is the same as https://github.com/ansible/ansible/pull/19235 except it applies to all image-building modes (building the image locally, loading the image from an archive, or pulling the image), rather than only when pulling the image.

* Use 'dummy' rather than '_' as unused variable name.

* Add changelog fragment for pull request #33754
2018-10-30 08:48:30 +00:00
Dario Zanzico 2162d7d4de Docker swarm service integration tests (#45674)
* integration test for docker_swarm_service

* ensure stack de-initialization

* Set default value for 'configs' parameter to None

Docker-py uses None as a default value for configs.
Using the same default here allows to create services on older docker
setups (docker_api<1.30).

* Set default value for 'update_order' parameter to None

Docker-py uses None as a default value for update_order.
Using the same default here allows to create services on older docker
setups (docker_api<1.29)

* Set default value for 'publish.mode' parameter to None

Docker-py uses None as a default value for publish_mode.
Using the same default here allows to create services on older docker
setups (docker_api<1.32)

* Allow tests to run on older version of docker.

* remove workarounds for old docker versions

* test correct swarm cleanup

* changelog fragment for docker_swarm_service defaults change
2018-10-29 11:28:51 +00:00
John Hu 82f1438b14 Add docker_config module (#38792)
* Add docker_config module

* Address review comments

* Merge description lines

* Stop returning empty config_id in results

* Add integration tests for docker_config

Based on docker_secret's tests.

* Ensure swarm using docker_swarm module

* Add minimum docker / docker api version requirements

ref: https://github.com/ansible/ansible/pull/47046

* Check Docker API version before running tests

ref: https://github.com/ansible/ansible/pull/47340

* Typo

* Wording

* Improve example

* Assert state == absent is idempotent
2018-10-26 10:58:17 +01:00
Akshay Gaikwad 20b95adf2b Add Support of healthcheck in docker_container module (#46772)
* Add Support of healthcheck in docker_container module

Fixes #33622
Now container can be started with healthcheck enabled

Signed-off-by: Akshay Gaikwad <akgaikwad001@gmail.com>

* Extend docker_container healthcheck (#1)

* Allowing to disable healthcheck.

* Added test for healthcheck.

* Make sure correct types are used.

* Healthcheck needs to be explicitly disabled with test: ['NONE'].

* pep8 fixes

Signed-off-by: Akshay Gaikwad <akgaikwad001@gmail.com>

* Fix bug if healthcheck interval is 1 day or more

`timedelta` object has days too and seconds are up to one day.
Therefore use `total_seconds()` to convert time into seconds.

Signed-off-by: Akshay Gaikwad <akgaikwad001@gmail.com>

* Add test for healthcheck when healthcheck is not specified

This is to avoid the situation when healthcheck is not specified and
treat this as healthcheck is changed or removed.

Signed-off-by: Akshay Gaikwad <akgaikwad001@gmail.com>

* Convert string syntax for healthcheck test to CMD-SHELL

Also add another test case to check idempotency when healthcheck test
is specified as string

Signed-off-by: Akshay Gaikwad <akgaikwad001@gmail.com>

* Playbook fails if minimun docker version is not satisfy for healthcheck

This is to make more consistent with other non-supported options.

Signed-off-by: Akshay Gaikwad <akgaikwad001@gmail.com>
2018-10-24 11:49:56 +01:00
Felix Fontein a11073df9a docker_image: allow to delete image by ID (#47393)
* Allow to delete docker image by ID.

* Added changelog.
2018-10-23 07:52:36 +01:00
Felix Fontein 4ffe3b14d4 docker_container: warn if ipvX_address is used for networks but not supported by docker-py (#47395)
* Only add parameters which are actually used.

* Fail if ipvX_address is used when not supported.

* Added changelog.
2018-10-23 07:52:08 +01:00
Felix Fontein 3afdb28209 docker_container: fix interaction of detach:no with auto_remove:yes (#47396)
* Behave better if auto_remove and output_logs are combined. Warn if output cannot be retrieved because of auto_remove.

* Add tests.

* Added changelog.
2018-10-23 07:51:24 +01:00
Dave Bendit 29b4b36501 Adding "internal" option to "docker_network" module (#35370)
Fixes #27065
2018-10-23 07:49:26 +01:00
Felix Fontein 8ef994fbc5 Fix option change detection / force support for docker_volume. (#47390) 2018-10-23 07:48:09 +01:00
Valentin 2939f68897 Fix #33045: get existing network via inspect_network (Rebased #33048) (#43997) 2018-10-23 01:14:51 -04:00
Eugene Zvyagintsev 4c2efa4b67 Documentation for docker_container: fix documentation for memory_swappiness. Default value will not equal 0, it will be inherited from the host machine (#47296) 2018-10-19 06:12:28 -04:00
Pluggi f13091d142 Add runtime option to docker_container module (#47247)
* Add runtime option to docker_container module

Signed-off-by: Antoine Bardoux <abardoux@nvidia.com>

* Add changelog fragment

Signed-off-by: Antoine Bardoux <abardoux@nvidia.com>

* Add idempotency test for docker_container.runtime

Signed-off-by: Antoine Bardoux <abardoux@nvidia.com>
2018-10-19 09:04:17 +01:00
Felix Fontein 32e8251f86 docker_* modules: unify docker module version checks (#47046)
* Unify docker module version checks.

* Improve messages depending on required docker-py versions.

* Linting.
2018-10-18 10:51:58 +01:00
Michael Scherer 1be69cd69c Clean up of docker swarm service (#45525)
* Remove redundant assignation of variable

Found with https://lgtm.com/

* Fix check_mode when force_update is used
2018-10-17 17:29:47 -04:00
Dani Hodovic 28ba10b877 fix: Parse docker_service scale parameter to int (#45508) 2018-10-17 13:58:09 -04:00
Felix Fontein a74774488d docker_container: add port range and IPv6 support for published_ports (#46596)
* Allow port ranges.

* Adding IPv6 support for published_ports.

* Die when hostname is passed instead of IP address.

* Added changelog.
2018-10-08 10:53:24 +01:00
Felix Fontein 77127d6768 docker_container: allow more mount modes for volumes (#46598)
* Being more strict about volume mount modes.
2018-10-08 10:11:03 +01:00
Felix Fontein c5ea3d058e docker_container: fix problem with published_ports idempotency (#46595)
* Fix comparisons for expected_ports (set vs dict).

* Added changelog.
2018-10-08 08:41:15 +01:00
Felix Fontein 8afe46dc02 docker_container: improve publish all ports functionality (#46594)
* Improve handling of published_ports: all.

* Add changelog.
2018-10-08 08:23:23 +01:00
Felix Fontein a520ca3298 docker_container, docker_image_facts: allow to use image IDs (#46324)
* Allow to specify images by hash for docker_container and docker_image_facts.

* flake8

* More sanity checks.

* Added changelog.

* Added test.

* Make compatible with Python < 3.4.

* Remove out-commented imports.
2018-10-06 08:50:31 -05:00
Felix Fontein 895019c59b docker_container: fix behavior when image is not specified (#46322)
* Don't simply ignore container in present() if image is not specified.

* Use image from existing container for recreation if not specified.

* Added changelog.

* Improve comment.
2018-10-06 08:50:12 -05:00
Remo Wenger 83e584577a docker_container: ambiguous parameter "stop_timeout" (#43874)
* docker_container: Honour stop_timeout when creating docker containers (#43814)

* Adjusting description to what actually happens.

See docker-py changelog for 2.7.0: 'APIClient.stop will
no longer override the stop_timeout value present in the
container’s configuration.'

* Add a test whether stop_timeout can be configured for the container.

* Added changelog.

* Integrate with comparisons (by default, ignore stop_timeout value for restarts; will be configurable with PR ansible/ansible#44789).

* Fix config change code and tests (#2)

* Improving wildcard test.
* Using correct config.
2018-09-30 12:03:53 +01:00
Felix Fontein 84682464c7 docker_container: allow to configure comparison for existing containers (#44789)
* Added comparison configuration.

* Improving user feedback on specifying a wrong option.

* Avoid bare except.

* Added basic integration tests.

* Adding wildcard support.

* Warn if ignore_image=yes is overridden.

* Added changelog fragment.
2018-09-28 08:33:38 +01:00
Felix Fontein 95cfcac694 docker-py: bump minimal version to 1.8.0 (#46134)
* Bumping docker-py minimal version to 1.8.0.
* Improve docs formatting.
2018-09-26 11:58:32 +05:30
Felix Fontein 7caf70db42 docker_container: fix various idempotency problems and non-working options (#45905)
* Sorting args.

* Doing comparisons of options with container parameters in a more context-sensitive way.

This prevents unnecessary restarts, or missing restarts (f.ex. if parameters are removed from ``cmd``).

* Make blkio_weight work.

* Fix cap_drop idempotency problem.

* Making groups idempotent if it contains integers.

* Make cpuset_mems work.

* Make dns_opts work.

* Fixing log_opts: docker expects string values, returns error for integer.

* Adding tests from felixfontein/ansible-docker_container-test#2.

* Make uts work.

* Adding changelog entry.

* Forgot option security_opts.

* Fixing typo.

* Explain strict set(dict) comparison a bit more.

* Improving idempotency tests.

* Making dns_servers a list, since the ordering is relevant.

* Making dns_search_domains a list, since the ordering is relevant.

* Improving dns_search_domains/dns_servers.

* Fixing entrypoint test.

* Making sure options are only supported for correct docker-py versions.
2018-09-24 10:40:05 +01:00
Dario Zanzico 54c3d1c24e New module: add docker_stack module (clound/docker/docker_stack) (#24588)
* add docker_stack module + tests
2018-09-18 09:54:44 +01:00
Felix Fontein 0961d914d7 Don't parse/interpret options if state is 'absent'. (#45700) 2018-09-17 22:07:52 -04:00
William 2ea9cfcd52 Fix python 3 compatibility for network id lookup (#45467)
Due to a change in python 3 filters return filter instead of list. This breaks the network name to id lookup for the docker_swarm_module. By wrapping it in list it ensures it is a list when returned and the id is extracted.
2018-09-11 15:45:42 -04:00
Lachlan Cooper 1e7ab24e40 Fix minor issues with docker_login docs (#35081)
* Fix typos in docker_login reauthorize parameter

* Remove note about docker_login email address

Docker Hub no longer requires an email address.

* Remove check for email parameter with Docker Hub

This is no longer required, so login should not fail if it's not provided.
2018-08-30 05:33:39 +01:00
Felix Fontein 1dcf52c8fe docker_container: improving idempotency (#44808)
* Only handle cpu_shares, volume_driver, auto_remove as in _host_config().

* Don't compare log_options (resp restart_retries) if log_driver (resp restart_policy) is not specified.

* Warn that log_options (resp restart_retries) is ignored if log_driver (resp restart_policy) is not specified.
2018-08-29 21:07:32 -04:00
Felix Fontein 63fde92b60 Improve description of default network removal. (#44861) 2018-08-29 20:53:26 -04:00
Felix Fontein ed22efb2a6 Clarify that uninstalling docker-py can break docker (and vice versa). (#43238) 2018-08-28 17:53:43 +01:00
Felix Fontein fabba43da7 docker_container: fix check mode for container creation (#42380)
* Create copy of HostConfig object before adding it to results.

* Create general sanitize function in docker_common. Using it for all return values of docker_container.

* Make Python 2.6 compatible.
2018-08-28 12:03:33 +01:00
Dag Wieers b6b36276a4 Clean up BOTMETA.yml (#44574)
This PR includes:
- Removal of maintainers that are listed as author in the module
- Removal of entries that do not extend the original author list
- Move ignored-statement to namespace/directory (where useful)
- In some cases, fix the authors-list or add missing github id

We end up with a list of exceptions/additions and a large set of
namespace/directory maintainers or team of maintainers.

Some entries could be further improved by discussing with some
maintainers.
2018-08-24 19:43:35 -04:00
Toshio Kuratomi b2932a41b0 Fixup removed and deprecated modules
* Removed modules no longer have documentation
  Decided this was causing people to think that modules were supported
  even after being removed.  This change is a new strategy to have the
  error message trying to use a removed module point people to the older
  documentation.

* Add stubs for modules removed in 2.7
  These are freshly removed so we want people who are still using them
  when they upgrade Ansible to have a hint as to where to find information
  on how to port.

* Finish properly undeprecating include
  include was undeprecated earlier but not all of the pieces that marked
  it as deprecated were reverted.  This change fixes the remaining
  pieces
2018-08-24 15:37:13 -07:00
Dario Zanzico d0bf38ab6a New module: docker_swarm_service (#19229) 2018-08-24 15:40:40 -04:00
Vincent Rischmann 81a5aba0a2 docker_container: allow arbitrary log_driver (#33579)
Docker supports logging plugin (see https://docs.docker.com/engine/admin/logging/plugins)
so it no longer makes sense to limit the log_driver option to a set of
fixed choices.
2018-08-23 07:05:42 -04:00
Felix Fontein c8ee383783 Clarify usage of env_file (#42211). (#44535) 2018-08-23 02:16:48 -04:00
bhuztez dd8edf5ae2 docker_container: fix working_dir (#42857)
WorkingDir should be read from Config instead of HostConfig, check
https://docs.docker.com/engine/api/v1.37/#operation/ContainerInspect
2018-08-22 13:42:56 -04:00
Christoph 2b9d4b9253 More consistent Docker unit parsing (#16748)
* Docker: Convert units for kernel_memory

Other memory arguments already use human_to_bytes to convert the
units.  This change makes the behavior more consistent.

* Update Docker unit parsing documentation

This explains the units more precisely and makes the documentation
more consistent.

This fixes #16526.
2018-08-22 13:05:23 -04:00
David Wittman a24898b715 Add cap_drop to docker_container module (#36889)
Closes #29578
2018-08-07 12:11:52 +05:30
Nathan Hyde d3230b9172 Correct link to Getting Started with Docker Guide (#42709)
Update link to the docker getting started guide.

+label: docsite_pr
2018-07-26 10:39:01 -05:00
Martin Szulecki 2653bd3f50 Fix docker_image archive features to work with Python 3
Without binary mode, ansible shows a "write() argument must be str,
not bytes" error when using Python 3.
2018-07-19 12:30:07 -04:00
Raoul Scarazzini 86387df8b3 Fix docker_container stop/start image dependency (#41678)
This commit adds a conditional inside the constructor so that if a user
didn't specified an image parameter all the code related to the image
version comparison is omitted.
This is extremely useful when a user want to just stop and start
containers using just the name, keeping everything as it is, without the
need of specifying all the image and command stuff used at creation.
Today if you don't specify the image you get an error, and this is a
confusing [1] behavior.

[1] https://github.com/ansible/ansible/issues/27960
2018-07-19 06:40:23 -04:00
Felix Fontein 765a5130d5 Docker modules: improve documentation on docker vs. docker-py Python package requirements (#42457)
* Make sure all docker-py/docker requirements are listed, and clarify about docker vs. docker-py.

* Adjusting changes made in #40839.
2018-07-11 17:57:39 -04:00
Pilou 3301a0b530 docker_container: fix init check requirements (#40839)
* docker_container: ensure 'init' is supported

Check docker-py version too.

Move API version check in docker_container module since 'init' module
parameter isn't defined by other docker modules.

docker-py supports 'init' since 2.2.0:
https://github.com/docker/docker-py/blob/2.2.0/docs/change-log.md

* docker_container: fix compat with docker-py<2.2

Exception was:
TypeError: create_host_config() got an unexpected keyword argument 'init'
fatal: [localhost]: FAILED! => {
    "changed": false,
    "module_stderr": "Traceback (most recent call last):
                        File ansible_module_docker_container.py, line 2089, in <module>
                          main()
                        File ansible_module_docker_container.py, line 2084, in main
                          cm = ContainerManager(client)
                        File ansible_module_docker_container.py, line 1704, in __init__
                            self.present(state)
                        File ansible_module_docker_container.py, line 1724, in present
                            new_container = self.container_create(self.parameters.image, self.parameters.create_parameters)
                        File ansible_module_docker_container.py, line 826, in create_parameters
                            host_config=self._host_config(),
                        File ansible_module_docker_container.py, line 932, in _host_config
                            return self.client.create_host_config(**params)
                        File lib/python3.6/site-packages/docker/api/container.py, line 157, in create_host_config
                            return utils.create_host_config(*args, **kwargs)
                      TypeError: create_host_config() got an unexpected keyword argument 'init'",
    "module_stdout": "",
    "msg": "MODULE FAILURE",
    "rc": 1
}
2018-07-09 07:32:51 +02:00
rcgoodfellow 3a695acf37 Update docker package version (#42394)
The docker API init parameter is the dependency requiring this bump. It was introduced 2.3.0 release of the docker package as per commit 13b5f785a7ab459960aae82fae00e4245e391387 in github.com/docker/docker-py.
2018-07-06 10:48:24 -04:00
rcgoodfellow e3478e0da5 Update docker_container.py (#42370)
`docker-py` is no longer a thing.

https://github.com/docker/docker-py/issues/1431
2018-07-05 14:03:50 -04:00
Dag Wieers da49aaf1d9 Add trailing dot and make it a separate item 2018-06-21 12:33:03 -04:00
Camillevau 79982473ca Update docker_container.py
<!--- Your description here -->

 label: docsite_pr
2018-06-21 12:33:03 -04:00
Sharp Hall 3935cce394 docker: Allow publishing of ports with the same number but different protocol (#38412)
* Don't deduplicate docker container ports with different protocols

* Test _parse_exposed_ports
2018-06-15 12:36:20 -04:00
Ben Berry 32c191ee9c expand user before calling abspath (#40196)
* expand user before calling abspath

* omit expanduser code smell check for volumes
2018-06-13 21:18:02 -04:00
Thierry BOUVET 8b9fe42c72 Add new module to create/update a docker swarm. (#38280)
* Add new module to create/update a docker swarm.

* Fix ansible-test sanity

* Fix requirements

* Fix requirements

* Add tag for author

* Test integration test.

* Fix main.yml

* Add linux arch

* Add template

* Fix test result

* Integration test to create/remove a swarm manager

* fix join test

* Downgrade docker-py

* fix rhel

* Fix review documentation.

* Fix whitespace

* Check docker installation.

* test docker install

* check

* Remove docker socket

* Fix docker install

* Fix sanity test

* Rebase

* Add docker_swarm maintainer

* Fix review

* Fix new version.

* Add docker default values

* Fix description.

* Reworked documentation

* Fix YAML error

* Rebase

* Fix example for update state.

* Fix idempotent states. Fix states: present/absent.

* Fix sanity

* Fix variables sanity

* Update example for absent state.

* fix sanity

* Wrap the contents of error message in to_native.


Co-authored by: Dag Wieers <dag@wieers.com>
2018-06-08 10:45:09 -04:00
Clint Byrum 6635748c8f Enable check mode for docker_image_facts (#38944)
This module never changes anything. As such, there is no reason not to
just enable check mode.
2018-06-06 11:03:26 +02:00
Achintha Gunasekara d98c892017 Adding a switch to output docker logs (#40693)
* Adding a switch to print logs

* Update to docs

* Adding `version_added` for the new option

* Updating version added

* Moving `output_logs` before `paued` for alphabetically ordering.
2018-06-06 10:50:04 +02:00
Suzuki Shunsuke 38c86b7eef Add 'init' option to docker_container module to support docker's `--init` option (#34547)
* Add support for `--init` option to `docker_container` module

Fixes #30761

* Validate docker API's version when docker_container's init option is True

https://github.com/ansible/ansible/pull/34547#pullrequestreview-122355244
https://docs.docker.com/engine/reference/commandline/run/#options

init option requires docker API 1.25+ .

* Fix failure of sanity test
2018-05-24 12:55:16 -05:00
Matt Clay 8deced3e04
Fix shebangs and file modes and update tests. (#40563)
* Add execute bit sanity test and apply fixes.
* Add shebang test for `lib` dirs and apply fixes.
* Shebang and execute bit cleanup.
2018-05-22 14:25:36 -07:00
Alberto Murillo 0f3480d359 docker_image: Fix idempotency of pull (#31956)
when pulling an image with force=yes the task was marked as changed
everytime even when the image hasn't changed.

This was due to a bad comparison of the image tag before the pull
and after the pull.

Fixes #22596

Signed-off-by: Alberto Murillo <albertomurillosilva@gmail.com>
2018-04-25 12:58:29 -04:00
jctanner 2f32e0ba2d
Remove me from botmeta (#39263)
* Remove myself from team_vmware
* Remove myself from maintainership of all modules
2018-04-24 19:55:04 -04:00
Thierry BOUVET 4117b2dd29 Fix documentation fragments for docker (#38378) 2018-04-17 08:51:56 -07:00
Matt Martz 897c8df8d0 Ensure the MAC address uses colons instead of hyphens for later comparison. Fixes #35463 (#35465) 2018-03-27 15:20:01 -04:00
Dag Wieers cdd21e2170
Clean up module documentation (#36909)
* Clean up module documentation

This PR includes:
- Removal of `default: None` (and variations)
- Removal of `required: false`
- Fixing booleans and `type: bool` where required

* Fix remaining (new) validation issues
2018-03-15 22:15:24 +01:00
skylerbunny d984afa5ba Add compatibility for docker-py version 3 (#36973) 2018-03-06 07:14:31 -05:00
Joni Salmi ff0f6286d7 Docker service update project_name doc (#36713)
```
FAILED! => {"changed": false, "msg": "Parameter error - project_name required when providing definition."}
```
2018-02-26 08:25:50 -05:00
Abhijeet Kasurde 4cc7af7372
docker_login: Hide password from response (#34491)
Fixes: #32869

Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
2018-02-16 10:41:54 +05:30
Michael Nugent d212ca11b3 False matches the docs and intentions of the previous developer (#35762) 2018-02-15 15:40:10 -05:00
John R Barker a23c95023b
Module deprecation: docs, scheme and tests (#34100)
Enforce module deprecation.
After module has reached the end of it's deprecation cycle we will replace it with a docs stub.

* Replace deprecated modules with docs-only sub
* Use of deprecated past deprecation cycle gives meaningful message (see examples below)
* Enforce documentation.deprecation dict via `schema.py`
* Update `ansible-doc` and web docs to display documentation.deprecation
* Document that structure in `dev_guide`
* Ensure that all modules starting with `_` have a `deprecation:` block
* Ensure `deprecation:` block is only used on modules that start with `_`
* `removed_in` A string which represents when this module needs **deleting**
* CHANGELOG.md and porting_guide_2.5.rst list removed modules as well as alternatives
* CHANGELOG.md links to porting guide index

To ensure that meaningful messages are given to the user if they try to use a module at the end of it's deprecation cycle we enforce the module to contain:
```python
if __name__ == '__main__':
    removed_module()
```
2018-01-30 12:23:52 +00:00
Michael 75130b4a4d Support domainname in docker_containers (#32292) 2018-01-23 08:24:37 -06:00
Yury Tsarev 7c8120d0de Fix misleading cleanup/detach documentation (#34674)
* Fix misleading cleanup/detach documentation

Current documentation is not concrete regarding desired
state of `detach` to make container be properly removed
with `cleanup`

Make `detach:false` be mentioned explicitly

* Tweak formatting
2018-01-10 15:33:22 +00:00
John Barker c57a7f05e1 Bulk autopep8 (modules)
As agreed in 2017-12-07 Core meeting bulk fix pep8 issues

Generated using:
autopep8 1.3.3 (pycodestyle: 2.3.1)
autopep8 -r  --max-line-length 160 --in-place --ignore E305,E402,E722,E741 lib/ansible/modules

Manually fix issues that autopep8 has introduced
2017-12-07 20:25:55 +00:00
Nicolas DOUILLET 4b4c1fdb13 Fix memory_reservation typo in docker_container module (#33375) 2017-11-29 19:01:49 -05:00
Harris Dimitriou 9e9f2b9ad5 Added userns support on docker_container module Fixes #20648 (#22195)
* added userns support on docker_container module

* Fixes #20648 - changed 'version_added' of userns_mode to 2.3 from 2.2

* version_added 2.5
2017-11-28 16:54:19 +00:00
Dag Wieers 9d156c6cb1
docker: PEP8 compliancy and documentation changes (#32628)
This PR includes:
- PEP8 compliancy changes
- Documentation changes
2017-11-07 15:35:50 +01:00
UnderwayNYC 11faafcbf7 Fix error when there are no docker volumes present yet (#28145)
* Fix error when there are no docker volumes present yet

* fixes suggested by Shippable
2017-10-30 15:53:08 -04:00
Kenny Gillen 1234a79349 Fix gender pronouns and the odd typo (#31709) 2017-10-13 13:52:38 -04:00
Toshio Kuratomi 75eed6a51a Port arg specs from type='str' to type='path' 2017-10-09 21:15:56 -07:00
François Scala aade5234a9 Fix urlparse import for Python3 (#31240)
* Fix urlparse import for Python3 in

* contrib/inventory/consul_io.py
* contrib/inventory/rudder.py
* contrib/inventory/windows_azure.py
* lib/ansible/module_utils/known_hosts.py
* lib/ansible/modules/cloud/centurylink/clc_firewall_policy.py
* lib/ansible/modules/cloud/docker/_docker.py
* lib/ansible/modules/cloud/ovirt/ovirt_disk.py
* lib/ansible/plugins/action/ce_template.py
2017-10-09 20:18:09 -07:00
John R Barker e859d0da9c data should be redacted in docker_secret (#31366) 2017-10-05 14:07:23 -04:00
Andrew Lihonosov 4c0889e8fc docker_service build command respects the "pull: no" parameter
Fixes #30296.
2017-10-02 11:11:48 -04:00
Artem Bolshakov fb4d065654 Fix running docker container with not readable logging driver. Fixes #27278 2017-10-02 11:00:16 -04:00
Sebastien Boyron cb5f2c7ac3 [fix] issue #29886 - it misses oom_killer in host_config_params (#30712)
so it was never passed to docker API.
2017-09-25 20:42:02 -04:00
Sebastien Boyron 901bc2cffe Clean code, fd.close not required since open as fd if used; remove get_redirected_output from cleanup_redirection_tempfiles since output is not used
(cherry picked from commit ef51f00bbc9f24485915040b863c9d034d3c272c)
2017-09-21 20:01:13 -07:00
Toshio Kuratomi f66c74915c Fix docker_service python3 incompatibility
Looks like this is supposed to operate on native strings so there's no
need to encode or decode at all here

Fixes #30354
2017-09-21 19:50:54 -07:00
Abdul Anshad A 272c0ce68c fixes #5732 - Add support for using network ID (#22503) 2017-08-30 17:32:45 -04:00
Stephen Jennings be2d4cc1c9 Check for an existing docker_network before trying to modify it (#24048)
This eliminates a TypeError in check mode.
2017-08-23 12:10:53 -04:00
Jun Guo 655667527d [docker] Fix ignore_image option not work issue. (#19039)
Currently the ignore_image option can be set, but can not work as it is
descripted in document. The reason is the code will check the difference
of configurations between current container and target image, and it
will mark the `different` to `True` when the image is different even we
set `ignore_image=true`, that will cause the container being re-create.
2017-08-17 13:47:52 -04:00
Alvaro Aleman f8e79eb481 Fix changed event for docker_image in force mode 2017-08-17 10:42:09 -04:00
Toshio Kuratomi f203ca7907 Update metadata to 1.1 2017-08-15 23:12:08 -07:00
Abhijeet Kasurde e419a55c71 Add correct URL for docker guide (#27465)
Fixes : #27463

Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
2017-07-30 10:08:43 +01:00
Toshio Kuratomi 1ee08c0f06 Get rid of more wildcard imports and add boilerplate to more modules
This commit cleans up the following module categories:
* messaging
* inventory
* crypto
* commands
* clustering
* cloud/webfaction
* cloud/docker
* cloud/digital_ocean
2017-07-29 07:02:12 -07:00
Toshio Kuratomi 225fa5d092 Fix undefined variables, basestring usage, and some associated python3 issues 2017-07-25 15:58:23 -07:00
Toshio Kuratomi df15583ad0 Promulgate house's fix for docker_volume to docker_secret
* Revert change to docker_common as it's not as good as the try: except fix
* limit docker_volume fix to ImportErrors
* fix docker_secret i nthe same way
* Remove docker_secret from import tests
2017-07-19 13:20:47 -07:00
Chris Houseknecht 2e073e73d2 Fixes doc string in docker_volume (#27074) 2017-07-19 15:42:31 -04:00
Alex Grönholm 657ab58139 Added the docker_volume module (#24957)
* Added the docker_volume module

* Code style fixes

* Added yours truly to the copyright statement

* Added documentation link

* Fixed YAML syntax in documentation string

* Documentation style fixes based on the code review

* Implemented requested code corrections

* Added documentation for the "labels" option
* Handled APIErrors from docker-py
* Fixed the type of the "labels" option (dict -> list)

* Fixed typo

* Import APIError from docker_common, not from docker-py
2017-07-19 13:43:54 -04:00
Will Medlar 3f67d167fe [Fixes #26690] Supports Python 3 handling of base64 encoding (#26876)
* [Fixes #26690] Supports Python 3 handling of base64 encoding

* Set text auth to separate variable for reuse
2017-07-17 21:11:52 -07:00
Chris Houseknecht 6af53cf0ef Adds docker_secret module (#26469) 2017-07-06 09:22:04 -04:00
Chris Houseknecht 8765eadb30 Fixes list comparison (#26042) 2017-06-26 11:06:57 -04:00
Will Rouesnel 42b608db0c Add support for tmpfs to docker_container. (#25747) 2017-06-23 08:03:28 -04:00
Matthew Schick 846174b4ba Update nocache to be the proper bool type instead of string (#24358)
* Update nocache to be the proper bool type instead of string

* Add proper bool type for params
2017-06-19 11:24:19 +01:00
Chris Houseknecht 20bddde669 docker_service: Forward stderr-based output from docker-compose (#25456)
PR #5165 at https://github.com/ansible/ansible-modules-core/pull/5165
adds redirection and capture of stdout during execution of
docker-compose.

This doesn't necessarily catch all errors, since some are printed to
stderr and lost.

This extends the redirection to include stderr, and does minor string
processing to attempt to find a 'useful' message to present as the
final Ansible error.
2017-06-07 23:30:26 -04:00
Kassian Sun 42d57782c0 Try to fix travis 2017-06-02 10:10:34 -07:00
Kassian Sun 981249daa1 use single line for-loop 2017-06-02 10:10:34 -07:00
Kassian Sun b3a37da671 Add --sysctl support for cloud/docker_container 2017-06-02 10:10:34 -07:00
louis 7363776174 fixes #19550 (docker_container with empty links list always restarts) 2017-05-24 16:14:10 -07:00
kkjang 5c43bd3bae Cmp python3 compat (#25008)
* Use double-quotes for expect integration tests

* Cast user input to string for expect integration tests

* Remove usage of cmp() for python3 compatibility

- Add code smell test to look for cmp usage

- Fixes #24756
2017-05-24 15:59:59 -07:00
Konrad Klimaszewski 64f63a3cac Properly handle Docker image comparison for published_ports defined as IP::PORT
- Published port defined as IP::PORT where parsed in expected.parameters
  as 0.0.0.0::PORT leading to changed==True on every playbook run.
2017-05-24 15:55:30 -07:00
bengerman 5b39368108 use two-tuples rather than dicts to allow multiple aliases for the same target 2017-05-24 15:48:12 -07:00
Nikolay Murga 3610a2457f Fixed #21464 - docker_network: TypeError with existing network (#24266)
Fixed #22530 - docker_network Failed but Overlay network created successfully on Docker swarm mode
2017-05-24 14:21:24 -07:00
bengerman cb3026f769 rebuild docker containers if there are less ports exposed 2017-05-24 12:37:29 -07:00
bengerman fab2dfd1c6 typo in security opts 2017-05-24 12:16:31 -07:00
Michael Sheinberg 272125023f Add working_dir to docker_container (#20044) (#24977)
* docker_container: add working_dir (fixes #20044)

Added a working directory option that will get passed with the other
docker container parameters. This is optional and addresses feature
request #20044.
2017-05-24 11:41:54 -07:00
Andrew Shewmaker f5fd32eae6 docker_container: do not split command on commas (#24900)
* docker_container: do not split command on commas

Fix issue #24430

* docker_container: document command parameter

Prior behavior was strange, splitting strings on commas
only to join them again ... replacing commas with spaces.

FYI, docker-py accepts strings or lists, using shlex.split
on strings ... splitting on spaces while respecting things
like quotes.

https://github.com/docker/docker-py/blob/master/docker/api/container.py
https://github.com/docker/docker-py/blob/master/docker/types/containers.py
https://github.com/docker/docker-py/blob/master/docker/utils/utils.py

More info regarding Dockerfile syntax for CMD strings and lists
can be found at https://docs.docker.com/engine/reference/builder/#cmd
2017-05-22 15:39:57 -07:00
Matt Martz 3324d0a4b0 Support auto_remove in docker_container (#22929)
* Support auto_remove in docker_container

* Fail if not docker>=2 and auto_remove=True, don't set auto_remove in host_config if not docker>=2

* Make quoting more readable in ansible errors
2017-05-09 16:19:27 -04:00