Commit graph

142 commits

Author SHA1 Message Date
Alexey Wasilyev
4971c7fe82 docker: support polling image by digest (#2932) 2016-12-08 11:24:18 -05:00
Fabian von Feilitzsch
32c744e82a make binds a list instead of a dict (to prevent overwriting when copying the same file to two places) (#2294) 2016-12-08 11:24:17 -05:00
Ash Wilson
6e2f724919 Remove myself from the docker module maintainers
Apologies, but I no longer use this module day-to-day myself, and I don't have the bandwidth right now to effectively triage changes in any kind of timely fashion.
2016-12-08 11:24:14 -05:00
Michael Scherer
daddfb490b Improve/fix type checking for docker module
tls_* point to files, so should be type=path
count is a int, so tag it as such and avoid converting later
password should be tagged as no_log
2016-12-08 11:24:14 -05:00
Victor Beresnev
2e94affde6 If cmd and entrypoint not set, don't match them
Hello!
I wanted stop the containers matched only by image name, but can't do this, if I not set cmd in playbook.
This behavior confused me.

If cmd or entrypoint is defined for running container, but not defined in playbook, makes matching behavior as this sample:
https://github.com/ansible/ansible-modules-core/blob/devel/cloud/docker/docker.py#L463
2016-12-08 11:24:14 -05:00
Yannig Perré
72d3aab736 Add an example of extra_hosts option. 2016-12-08 11:24:13 -05:00
Schlueter
734811910e Add missing quote in docker documentation 2016-12-08 11:24:11 -05:00
Tobias Gesellchen
db14b544a5 add env_file support (original code from @vpetersson) 2016-12-08 11:24:09 -05:00
Konstantin Suvorov
762bd3a801 Fix docker container restart
restart_containers(containers.running) may try to restart containers
that are deleted when looping through get_differing_containers()
fix this by refreshing list after first loop
2016-12-08 11:24:07 -05:00
Daan Oosterveld
6b4fbe62de Adds ulimit to the docker module
The ulimit will be specified as a list and separated by colons. The
hard limit is optional, in which case it is equal to the soft limit.

The ulimits are compared to the ulimits of the container and added
or adjusted accordingly on by a reload.

The module ensures that ulimits are available in the capabilities
iff ulimits is passes as a parameter.
2016-12-08 11:24:07 -05:00
Alexey Wasilyev
f8adc99196 docker: fix failing in case of empty image tag 2016-12-08 11:24:02 -05:00
Brian Coca
b25c2a4261 added note about awslogs version added 2016-12-08 11:23:59 -05:00
jefferson fermo
9d9daeb73c add awslog option in docker log driver. this option is available starting with ansible 2.1 2016-12-08 11:23:59 -05:00
Alexey Wasilyev
4d30ae313d Add cpu_shares option for docker module 2016-12-08 11:23:57 -05:00
Will Rouesnel
b565da78b3 docker: Fix state=reloaded to detect default LoggingDriver for docker
Previously the logging module hard coded the default logging driver. This means
if the docker daemon is started with a different logging driver, the ansible
module would continually restart it when run.

This fix adds a call to docker.Client.info(), which is inspected if a logging
driver is not supplied in the playbook, and the container only restarted if
the logging driver applied differs from the configured default.

In usage, this has solved issues with using alternative logging drivers.
2016-12-08 11:23:57 -05:00
Brian Coca
0ca9356675 added versions note in description for new choice 2016-12-08 11:23:56 -05:00
Pavel Derendyaev
3129154a2a Add "timeout" option to Docker module 2016-12-08 11:23:56 -05:00
sebi
76af56eaca added unless stopped option 2016-12-08 11:23:55 -05:00
Manuel Tiago Pereira
057cbacf8a Add support for legacy registries to pull_image().
Since we now have several exceptions to the assumption that the
result of the pull would be on the last status line returned by
docker-py's pull(), I've changed the function so that it looks
through the status lines and returns what if finds on it.
Despite the repeated `break`s, the code seems simpler and a little
more coherent like this. From what I've checked using
`https://github.com/jlafon/ansible-profile`, the execution time is
mostly the same.
2016-12-08 11:23:54 -05:00
Toshio Kuratomi
4fa9de5af3 entrypoint feature added in 2.1 2016-12-08 11:23:54 -05:00
Toshio Kuratomi
eb65f819f5 labels is actually not aded in 1.9.4 but in 2.1 2016-12-08 11:23:54 -05:00
Andrew Pashkin
c811a3f4bc Add 'entrypoint' parameter to Docker module 2016-12-08 11:23:54 -05:00
Andrew Pashkin
8342397427 Harden matching running containers by "command" in the Docker module
Before this patch:

  - Command was matched if 'Command' field of docker-py
    representation of Docker container ends with 'command' passed
    to Ansible docker module by user.
  - That can give false positives and false negatives.
  - For example:
      a) If 'command' was set up with more than one spaces,
         like 'command=sleep  123', it would be never matched again
         with a container(s) launched by this task.
         Because after launching, command would be normalized and
         appear, in docker-py API call, just as 'sleep 123' - with one
         space. This is false negative case.
      b) If 'entrypoint + command = command', for example
         'sleep + 123 = sleep 123', module would give false positive
         match.

This patch fixes it, by making matching more explicit - against
'Config'->Cmd' field of 'docker inspect' output, provided by docker-py
API and with proper normalization of user input by splitting it to
tokens with 'shlex.split()'.
2016-12-08 11:23:54 -05:00
Omar Khan
369fe78c60 Add stop_timeout option to docker module 2016-12-08 11:23:54 -05:00
Toshio Kuratomi
a708ad65c4 Add version_added to documentation 2016-12-08 11:23:54 -05:00
Joe Quadrino
b6e2b2dce1 add devices parameter for docker module 2016-12-08 11:23:54 -05:00
Yann Hamon
1faf8dd5c2 Docker module: restarted should update the container when necessary 2016-12-08 11:23:54 -05:00
Brian Coca
b4f87ac7fe made note that Z/z are only 2.1 options 2016-12-08 11:23:52 -05:00
Steve Spencer
d4aca8eacc Sync up with allowable docker volume mounting modes 2016-12-08 11:23:52 -05:00
Steve Spencer
769d7db1d0 Add support for mounting host volumes with Z and z options 2016-12-08 11:23:52 -05:00
Leonty
22648e88cd Corrected misspelling in the 'labels' docker parameter documentation. 2016-12-08 11:23:52 -05:00
Aaron Boushley
876bdb62e1 Fix issue with comparing versions improperly.
This allows old versions of docker api to function.
2016-12-08 11:23:51 -05:00
Leonty
8638d9d26c Support 'labels' parameter for docker. 2016-12-08 11:23:51 -05:00
Toshio Kuratomi
6f214bccca Add zfil as an owner of the docker module 2016-12-08 11:23:47 -05:00
Toshio Kuratomi
edaa4c3f32 Add a new contributor as a maintainer of the docker module 2016-12-08 11:23:47 -05:00
Philippe Jandot
5b7d72e4ef fix regression introduced by f38186ce8b49ea98e29241712da45917a3154e73, and propose a fix for docker facts 2016-12-08 11:23:46 -05:00
Adam Williamson
83d941da27 fix #2043: strip empty dict from end of 'pull' stream
When pulling an image using Docker 1.8, it seems the output
JSON stream has an empty dict at the very end. This causes
ansible to fail when pulling an image, as it's expecting a
status message in that dict which it uses to determine whether
it had to download the image or not. As a bit of an ugly hack
for that which remains backward compatible, try the last item
in the stream, and if it's an empty dict, take the last-but-one
item instead.

The strip() is needed as the exact value appears to be '{}/r/n';
we could just match that, but it seems like the kind of thing
where maybe it'd happen to just be '{}/n' or '{}' or something
in some cases, so let's just use strip() in case.
2016-12-08 11:23:40 -05:00
Sam Yaple
a4a4b6f423 Catch the second occurance of ExposedPorts as well 2016-12-08 11:23:40 -05:00
Sam Yaple
463fb5a058 Don't assume ExposedPorts exists (bug #2257)
A recent change [1] in docker between v1.8.2 and v1.8.3 changed what
is returned in the json when inspecting an image. Five variables which
could have been expected before will now be omited when empty. Only
one of those variables is being addressed in the docker, ExposedPorts.

Unfortunately there was also no API version change on this so this
can't be easily corrected with pinning the API to the older version.

This does a get() which will return None if the variable is not in the
dict formed from the json that was returned. Everything else works the
same way.

[1] 9098628b29
2016-12-08 11:23:40 -05:00
Colin Hutchinson
d70c33f932 make a text link into a actual hyperlink
the text link doesn't fit on some screen resolutions. Making it into sphinx hyperlink will solve that
2016-12-08 11:23:39 -05:00
justnom
b724bf8f1c Adding additional Docker log drivers.
Adding additional `log_driver` choices:
* journald
* gelf
* fluentd

Compatible with Docker version >= 1.8.0
2016-12-08 11:23:38 -05:00
David Dyball
cdff62643b Updated PR based on comments 2016-12-08 11:23:35 -05:00
Toshio Kuratomi
b3262479e9 Fix read-only usage to depend on the docker-py and docker server version 2016-12-08 11:23:34 -05:00
Toshio Kuratomi
13ab511642 We had two separate methods trying to do the same thing but neither one was complete. This merges them so that all of the options get parsed and applied. 2016-12-08 11:23:34 -05:00
Omri Iluz
1c6acc3e8f No need for .keys on volumes list
Since c3f92cca21 changed "volumes" to be a list instead of a dictionary, we don't need (and cannot) .keys when appending to set.
Reported as bug #1957
2016-12-08 11:23:33 -05:00
Ilya Epifanov
cbbf284a74 fixed memory_limit for docker api version >= 1.19 2016-12-08 11:23:32 -05:00
sebi
ce1afd01e0 mem_limit client version check 2016-12-08 11:23:30 -05:00
Brian Coca
9241955076 added missing version_Added to extra_hosts fixes #1843 2016-12-08 11:23:27 -05:00
Micheal Waltz
5f0d989973 Fix incorrect var name for api_version 2016-12-08 11:23:27 -05:00
Brian Coca
92dfe33021 defined DEFAULT_DOCKER_API_VERSION to avoid it erroring out before we send the message that docker.py is missing 2016-12-08 11:23:26 -05:00