Commit Graph

353 Commits (4a0a9cd1fccb2be29850941554db2c10f221f1c7)

Author SHA1 Message Date
Brian Coca 061da7dc05 updated version_added 9 years ago
Alexey Wasilyev d61772807c Add cpu_shares option for docker module 9 years ago
Brian Coca 4be34067de added versions note in description for new choice 9 years ago
Brian Coca c1df014e3b Merge pull request #2485 from sebi-hgdata/sebi/docker_unless_stopped
added unless stopped option to docker module
9 years ago
Brian Coca f1754fb51e Merge pull request #2376 from mtpereira/fix_2351
Add support for legacy registries to pull_image().
9 years ago
Pavel Derendyaev 61fdb52039 Add "timeout" option to Docker module 9 years ago
sebi aa15231cb7 added unless stopped option 9 years ago
Toshio Kuratomi 15c1c0cca7 entrypoint feature added in 2.1 9 years ago
Toshio Kuratomi 2220dc8e12 Merge pull request #2185 from AndrewPashkin/add_entrypoint_param_to_docker_module
Add entrypoint parameter to docker module
9 years ago
Toshio Kuratomi ba3ee25172 labels is actually not aded in 1.9.4 but in 2.1 9 years ago
Omar Khan 19ebc45364 Add stop_timeout option to docker module 9 years ago
Toshio Kuratomi d907f889a3 Merge pull request #1972 from yannh/docker-restarted
Docker module: restarted should update the container when necessary
9 years ago
Toshio Kuratomi 581b4f6de6 Add version_added to documentation 9 years ago
Joe Quadrino 8fe5d6f7ef add devices parameter for docker module 9 years ago
Brian Coca 4e8d04d248 Merge pull request #2159 from leonty/devel
Support 'labels' parameter for docker.
9 years ago
Brian Coca a876704740 Merge pull request #2239 from boushley/devel
Fix issue with comparing versions improperly
9 years ago
Brian Coca ed43b66d77 made note that Z/z are only 2.1 options 9 years ago
Will Rouesnel 7237798f20 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.
9 years ago
Steve Spencer fc5da26dee Sync up with allowable docker volume mounting modes 9 years ago
Steve Spencer 2c95641d66 Add support for mounting host volumes with Z and z options 9 years ago
Toshio Kuratomi f2943bd404 Add zfil as an owner of the docker module 9 years ago
Toshio Kuratomi 4ed7b690f6 Add a new contributor as a maintainer of the docker module 9 years ago
Toshio Kuratomi 750aa16a06 Merge pull request #2093 from zfil/fix_facts
docker module: fix regressions introduced by f38186c and 80aca4b
9 years ago
Leonty cff83dd257 Merge remote-tracking branch 'upstream/devel' into devel 9 years ago
Leonty 5b904c1401 Corrected misspelling in the 'labels' docker parameter documentation. 9 years ago
Toshio Kuratomi e318be30ff Fix issues version_added and chaged => changed typo 9 years ago
Michael Schuett 80c2e28a48 Fix message
Previous fix did not actual work. This fix does however.
9 years ago
Michael Schuett b0357bf9e8 Handle connection error
Try and help when mac hits a connection error.
9 years ago
Michael Schuett 1dcb31cad6 remove .geturl()
Can't call geturl on a string.
9 years ago
Michael Schuett c126498899 Remove faulty logic
Update logic after splitting the error into two separate messages.
9 years ago
Michael Schuett 1e8d20b0da Documentation Fix
Updated documentation to match current module state.
9 years ago
Michael Schuett 0a5b7087bd Improve Message
Give user a course of action in the case where the suggestions do not
work. This will hopefully allow us to work through any further issues
much faster.
9 years ago
Michael Schuett addbc329be Improve Error Reporting
This will hopefully help mac users be able to quickly resolve any issues
they may find when trying to use this module.
9 years ago
Michael Schuett bf5929d32a docker_image TLS
Check commit enables using tls when using the docker_image module. It
also removes the default for docker_url which doesn't allow us to check
for DOCKER_HOST which is a more sane default. This allows you to use
docker_image on OSX but more documentation is needed.
9 years ago
Manuel Tiago Pereira 3079c5e001 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.
9 years ago
Brian Coca 4c14e6267f Merge pull request #2258 from SamYaple/fix_docker_bug_2257
Don't assume ExposedPorts exists (bug #2257)
9 years ago
Adam Williamson 64b8596250 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.
9 years ago
Sam Yaple f15d285514 Catch the second occurance of ExposedPorts as well 9 years ago
Sam Yaple 9db5ac8e45 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
9 years ago
Brian Coca da1a317f7d Merge pull request #2139 from justnom/devel
Adding additional Docker log drivers.
9 years ago
Aaron Boushley 81e9d1bde5 Fix issue with comparing versions improperly.
This allows old versions of docker api to function.
9 years ago
Andrew Pashkin cee7e928fc Add 'entrypoint' parameter to Docker module 9 years ago
Colin Hutchinson f7aa6c4d27 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
9 years ago
Andrew Pashkin e96549c95d 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()'.
9 years ago
Leonty 2080c8ab6e Support 'labels' parameter for docker. 9 years ago
justnom 518ac36878 Adding additional Docker log drivers.
Adding additional `log_driver` choices:
* journald
* gelf
* fluentd

Compatible with Docker version >= 1.8.0
9 years ago
Philippe Jandot 8052d49b07 fix regression introduced by f38186ce8b, and propose a fix for docker facts 9 years ago
David Dyball a0a374b8ca Updated PR based on comments 9 years ago
Toshio Kuratomi 6e5a832dc2 Fix read-only usage to depend on the docker-py and docker server version 9 years ago
Toshio Kuratomi 1f358f349b 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. 9 years ago
Yann Hamon 8f03f1e4e1 Docker module: restarted should update the container when necessary 9 years ago
Omri Iluz daf7a0551b 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
9 years ago
Ilya Epifanov d951172920 fixed memory_limit for docker api version >= 1.19 9 years ago
sebi 599d60efc0 mem_limit client version check 9 years ago
Toshio Kuratomi 1001eae3c8 Set a default value for DEFAULT_DOCKER_API_VERSION so we can create the AnsibleModule without docker-py 9 years ago
Brian Coca c6da9d0758 added missing version_Added to extra_hosts
fixes #1843
9 years ago
Toshio Kuratomi 2785364ebe Merge pull request #1736 from larsks/bug/docker-version-parse
docker: fix parsing of docker __version__ string
9 years ago
Brian Coca 49400d90ac Merge pull request #1830 from ecliptik/devel
Fix incorrect var name for api_version
9 years ago
Micheal Waltz b43f236b05 Fix incorrect var name for api_version 9 years ago
Brian Coca dbdbcb33cc defined DEFAULT_DOCKER_API_VERSION to avoid it erroring out before we send the message that docker.py is missing 9 years ago
Brian Coca 44d23ababd Merge pull request #1767 from ecliptik/devel
Use proper HostConfig element which contains the proper Memory value …
9 years ago
Brian Coca d91834bdf5 Merge pull request #1763 from larsks/bug/missing-mem-limit
restore mem_limit
9 years ago
Micheal Waltz 613fe54908 Use a if/else instead to avoid loading possibly invalid values for Memory 9 years ago
Micheal Waltz 77d1c896fe Set the API version when checking differences in containers and use
this to determine the location of the Memory value depending on the version used.

In v1.18 and earlier it was ['Config']['Memory'], but in v1.19 it
changed to ['HostConfig']['Memory'].
9 years ago
Johan Haals 1ea03e7182 ensures API compatibility for read_only containers 9 years ago
Johan Haals 851e55b55f changed version_added for read_only param
this feature will be released in 2.0
9 years ago
Johan Haals 8ec6538ad4 Merge remote-tracking branch 'upstream/devel' into docker-read-only-container 9 years ago
Christian Hammerl b96d304b93 docker: add support to add/drop capabilities 9 years ago
Micheal Waltz b0b1566b89 Use proper HostConfig element which contians the proper Memory value - fixes #1766 9 years ago
Lars Kellogg-Stedman 6aedc1020e restore mem_limit
mem_limit got lost in the #1744; this restores it.  Thanks to @dgromov
for the report.
9 years ago
Johan Haals 38f01b52e8 Added support for --read-only Docker containers
Adds support for mounting the container's root filesystem as read only.
9 years ago
Brian Coca 88167a5dac minor doc fixes to docker_user 9 years ago
Brian Coca 5240124525 Merge pull request #361 from simono/docker-add-user
Add option docker_user for docker module.
9 years ago
Brian Coca 030d6d645c added version_Added for new signal option in docker module 9 years ago
Brian Coca ac28f16126 Merge pull request #1014 from nemunaire/docker-kill-signal
[Docker] Add signal parameter when killing container
9 years ago
Brian Coca 2441928484 corrected v ersion added 9 years ago
Daniel Kerwin d4d78a1998 Too late for 1.8 9 years ago
Daniel Kerwin a702dbd29a Switch to _cap_ver_req and add cpu_set to create_containers 9 years ago
Daniel Kerwin a8bc50a11f Renamed to cpu_set 9 years ago
Daniel Kerwin fca75a9705 Add support for cpusets. Requires docker-py >= 0.6.0 9 years ago
Brian Coca cf25888e2d Merge pull request #978 from bobrik/faster-docker-updates
[docker] pulling missing docker image before doing anything
9 years ago
Maksim Losev efb6088c27 Use HostConfig object when creating container with Docker Remote API > 1.15
This is mlosev's patch (from #1208), rebased against devel as of
2790af2.  It resolves #1707, which was caused by an API incompatibility
between the docker module and server API version 1.19.
9 years ago
Lars Kellogg-Stedman 444a2ad808 Do not erroneously mask exceptions
There was a catch-all `except` statement in `create_containers`:

        try:
            containers = do_create(count, params)
        except:
            self.pull_image()
            containers = do_create(count, params)

This would mask a variety of errors that should be exposed, including
API compatability errors (as in #1707) and common Python exceptions (KeyError, ValueError, etc) that could result from errors in the code.

This change makes the `except` statement more specific, and only attempts to pull the image and start a container if the original create attempt failed due to a 404 error from the docker API.
9 years ago
Lars Kellogg-Stedman 6672205f49 docker: permit empty or false pid
The `docker` Python module only accepts `None` or `'host'` as arguments.
This makes it difficult to conditionally set the `pid` attribute using
standard Ansible syntax.

This change converts any value that evaluates as boolean `False` to
`None`, which includes empty strings:

    pid:

As well as an explicit `false`:

    pid: false

This permits the following to work as intended:

    - hosts: localhost
      tasks:
      - name: starting container
        docker:
          docker_api_version: 1.18
          image: larsks/mini-httpd
          name: web
          pid: "{{ container_pid|default('') }}"

If `container_pid` is set to `host` somewhere, this will create a
Docker container with `pid=host`; otherwise, this will create a
container with normal isolated pid namespace.
9 years ago
Lars Kellogg-Stedman b7e92b3e52 docker: fix parsing of docker __version__ string
If `docker.__version__` contains non-digit characters, such as:

    >>> import docker
    >>> docker.__version__
    '1.4.0-dev'

Then `get_docker_py_versioninfo` will fail with:

    ValueError: invalid literal for int() with base 10: '0-de'

This patch corrects the parsing of the version string so that
`get_docker_py_versioninfo` in this example would return:

    (1, 4, 0, '-dev')
9 years ago
Brian Coca 51b6b725cc Merge pull request #1078 from andrewgdavis/devel
ansible_facts reflects 1.8 output
9 years ago
Brian Coca afeb3c8d07 Merge pull request #1031 from smashwilson/docker-wait
[docker] Wait for process exit on detached=no.
10 years ago
Brian Coca 5f5f01833f Merge pull request #1508 from tarrychk/issue_1442
Fix computation of port bindings
10 years ago
Brian Coca 038cc05f4e Merge pull request #1609 from smashwilson/default-net-bridge
[docker] Prevent unnecessary reloads due to the net parameter
10 years ago
Brian Coca ec15b67712 Merge pull request #547 from steveeJ/devel
Fix bind-volumes on docker >= 1.4.0
10 years ago
Simon Olofsson dc3161dfdd Add option docker_user for docker module.
docker_user can be used to specify the user or UID to use within the
container.
10 years ago
Ash Wilson 29e4a127e1 Default net to 'bridge' in container diff
This prevents an unnecessary reload when the `net` parameter is unspecified
(i.e. almost always).
10 years ago
Toshio Kuratomi 964d731722 Add version_added documentation to log_driver parameter 10 years ago
Toshio Kuratomi 718f32a042 Merge pull request #1405 from ryanwalls/docker-module-log-driver
Add support for --log-driver option that docker released with Docker 1.6
10 years ago
Brian Coca 19f6099777 minor doc fixes 10 years ago
Robin Roth 64fe01178f add comment: ports need to be exposed.
port mapping with this module only works for ports that are exposed either in the Dockerfile or via an additional arguments. This is different from the command line docker client, that is willing to also map ports that are not exposed.

This comments makes the behaviour more obvious.
10 years ago
Greg DeKoenigsberg 28a869a030 Updating cloud modules with proper github author information 10 years ago
Ed Hein 558f2ace1f Fix computation of port bindings. Port bindings configuration can be a list
if several host ports are bound to the same guest port.
10 years ago
Ryan Walls a2630d40fb Fix typo in Docker module. 10 years ago
Ryan Walls 88eddb13c0 Update docker module to avoid false positives when containers are first created. Also have the module check
for api compatibility before trying to set a "--log-driver" option.
10 years ago
Ryan Walls c95717afe5 Set default "log_driver" option to None in docker module. 10 years ago
Ryan Walls 5f1d88a829 Update docker module to look at log_driver variable when deciding if container configuration has changed. 10 years ago
Andrew Pashkin 27c174128b Add 'docker_api_version' to docker_image
By default docker-py uses latest version of Docker API. This is not
always desireable, and this patch adds option to specify version, that
should be used.
10 years ago
Ryan Walls 3f679933a6 Add support for --log-driver option that docker released with Docker 1.6 10 years ago
Pierre Baillet 06e3ac7bf4 Support optional dockerfile name 10 years ago
Toshio Kuratomi 60a66a544d Several cleanups to many modules:
* Fix docs to specify when python2.6+ is required (due to a library
  dep).  This helps us know when it is okay to use python2.6+ syntax in
  the file.
* remove BabyJson returns.  See #1211  This commit fixes all but the
  openstack modules.
* Use if __name__ == '__main__' to only run the main part of the module
  if the module is run as a program.  This allows for the potential to
  unittest the code later.
10 years ago
Ian Babrou 501a665060 Pulling missing docker image before doing anything 10 years ago
Ratnadeep Debnath be66acb436 Fixed typo in cloud docker module. 10 years ago
Toshio Kuratomi f444e49dfa Fix error when container has no names.
Rename loop variable from "i" to more informative "container"

Fixes #1188
10 years ago
Pascal Borreli f29a6ec54d Fixed typos 10 years ago
Toshio Kuratomi 1fdf75d49d Second try at fixing #1227 -- set e default value earlier 10 years ago
Toshio Kuratomi e51ea29d8f Return empty list if an image has no repo_tags 10 years ago
Toshio Kuratomi e356692c74 Get docker's default api version definition from both 1.2 location and pre-1.2 location
Fixes #1227
10 years ago
Brian Coca 09aa79c58f Merge pull request #1102 from heiparta/extra_hosts
Add support for extra_hosts to docker module
10 years ago
Brian Coca a811b9f12e removed deprecated docs, not true anymore 10 years ago
Toshio Kuratomi e95c0b2df3 Only split on the first colon.
Fixes #1214
10 years ago
Heikki Partanen 91ca2d6386 Add support for extra_hosts to docker module
extra_hosts parameter (maps to --add-host in 'docker run' syntax) is used
to add host-to-ip mappings to the container.
10 years ago
Andrew Davis f38186ce8b ansible_facts reflects 1.8 output 10 years ago
Ash Wilson 45b067f097 Record facts for each changed container. 10 years ago
Ash Wilson b28459e6f5 Wait for process exit on detached=no. 10 years ago
Ryan Trauntvein 5320cc93e6 Specify that "state: reloaded" was added in Ansible 1.9 10 years ago
nemunaire 7f3df5634a Add optional signal parameter when killing docker container 10 years ago
Ash Wilson 9ce2fc718a Only fetch details when necessary. 10 years ago
Ash Wilson 47f4c3f2e5 Compare container images to Config.Image. 10 years ago
moncho 3421712e05 Update docker.py
Fix typo that prevents use_tls 'encrypt' option from working properly.
10 years ago
Toshio Kuratomi 76198a8223 Merge pull request #961 from nemunaire/fix-docker-version-print
[docker] Fix formating error when remote host doesn't have required version
10 years ago
Toshio Kuratomi e338fef730 Add another valid status from downloading images 10 years ago
nemunaire fce8c21176 Convert tuple items to string before format 10 years ago
Toshio Kuratomi 8658b82de7 Some code cleanup (removed unused variables and imports) 10 years ago
Toshio Kuratomi 34c4e0d495 Also use DOCKER_TLS_VERIFY env var to turn on tls verification 10 years ago
Toshio Kuratomi ceda82603a Merge pull request #947 from ansible/docker-tls-none
When no use_tls is not specified and no tls parameters are given we need to not attempt tls.
10 years ago
Toshio Kuratomi b0d194ea94 Fix a potential bug in docker pull 10 years ago
Toshio Kuratomi 5b4d7a2182 When no use_tls is not specified and no tls parameters are given we need to not attempt tls. 10 years ago
Toshio Kuratomi 45637176dc Merge branch 'volumes_from' of https://github.com/lorin/ansible-modules-core into lorin-volumes_from
Remove volumes_from altogether

Conflicts:
	cloud/docker/docker.py
10 years ago
Toshio Kuratomi e4a5b46cfb Merge pull request #936 from ansible/docker-pid-mode
Make pid_mode parameter do minimum docker-py/docker server version checks
10 years ago
Toshio Kuratomi 81fc92bd66 Make state=running work for backwards compatibility with 1.8 10 years ago
Toshio Kuratomi bddd02bfcb Fix lookup of parameter name to be pid instead of pid_mode 10 years ago
Toshio Kuratomi 9d0d54b9a6 Merge pull request #926 from ansible/docker-tls-alt-854
Alternative implementation of tls for docker
10 years ago
Toshio Kuratomi cf9374f3ea Make pid_mode parameter do minimum docker-py/docker server version checks 10 years ago
Toshio Kuratomi 3a6cc86578 Fix for problems found by @dguerri
* TLSConfig['verify'] has to be set to False if we're only encrypting the
  connection, not verifying the host.
* tls_hostname was not set if tls_ca_cert was not present

https://github.com/ansible/ansible-modules-core/pull/926#issuecomment-78573877
10 years ago
Toshio Kuratomi 1add8ed9e5 Implement comments from @smashwilson:
* if tls_ca_cert is set then use tls to verify the server
* take tls_hostname from the environment variable DOCKER_TLS_HOSTNAME
  if it's not specified in the playbook

https://github.com/ansible/ansible-modules-core/pull/926#issuecomment-78542210
10 years ago
Stefan Junker c3f92cca21 docker: Use a list instead of a dict for volumes according to the docker-py docs. Do not add host-binds to volumes list. 10 years ago
Stefan Junker d8df5da49f merge and resolve conflict in docker.py 10 years ago
Ian Babrou 763f472f5b fixed: global name 'e' is not defined 10 years ago
Toshio Kuratomi 3e0cbc82f1 Alternative implementation of tls for docker
Alternative to #854
10 years ago
Toshio Kuratomi ca32205c7b Documentation style changes 10 years ago
Ian Babrou 9ecfde7551 not triggering reload for links and not string env variables 10 years ago
Ash Wilson 0969fd75c8 Use {0}, {1} style format indices for 2.6 compat 10 years ago
Ash Wilson 19664a96db Expect module env vars to override Dockerfile ones. 10 years ago
Ash Wilson 608ddbea29 Include bind mounts in VOLUMES check. 10 years ago