diff --git a/cloud/docker b/cloud/docker index 8efccdb9f26..64a12909cd0 100644 --- a/cloud/docker +++ b/cloud/docker @@ -144,10 +144,8 @@ options: required: false default: aliases: [] -author: Cove Schneider +author: Cove Schneider, Pavel Antonov requirements: [ "docker-py" ] -notes: - - Currently supports Docker version <= 0.6.4 only. ''' EXAMPLES = ''' diff --git a/cloud/docker_image b/cloud/docker_image index 4121babed10..2059bcb2760 100644 --- a/cloud/docker_image +++ b/cloud/docker_image @@ -3,6 +3,8 @@ # (c) 2014, Pavel Antonov # +# This file is part of Ansible +# # This module is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or @@ -20,167 +22,84 @@ DOCUMENTATION = ''' --- -module: docker -version_added: "1.4" -short_description: manage docker containers +module: docker_image +author: Pavel Antonov +version_added: "1.5" +short_description: manage docker images description: - - Manage the life cycle of docker containers. + - Create, check and remove docker images options: - count: - description: - - Set number of containers to run - required: False - default: 1 - aliases: [] - image: - description: - - Set container image to use - required: true - default: null - aliases: [] - command: + path: description: - - Set command to run in a container on startup + - Path to directory with Dockerfile required: false default: null aliases: [] - ports: + name: description: - - Set private to public port mapping specification (e.g. ports=22,80 or ports=:8080 maps 8080 directly to host) - required: false + - Image name to work with + required: true default: null aliases: [] - volumes: + tag: description: - - Set volume(s) to mount on the container + - Image tag to work with required: false - default: null + default: "" aliases: [] - volumes_from: + nocache: description: - - Set shared volume(s) from another container + - Do not use cache with building required: false - default: null - aliases: [] - memory_limit: - description: - - Set RAM allocated to container - required: false - default: null + default: false aliases: [] - default: 256MB docker_url: description: - URL of docker host to issue commands to required: false default: unix://var/run/docker.sock aliases: [] - username: - description: - - Set remote API username - required: false - default: null - aliases: [] - password: - description: - - Set remote API password - required: false - default: null - aliases: [] - hostname: - description: - - Set container hostname - required: false - default: null - aliases: [] - env: - description: - - Set environment variables (e.g. env="PASSWORD=sEcRe7,WORKERS=4") - required: false - default: null - aliases: [] - dns: - description: - - Set custom DNS servers for the container - required: false - default: null - aliases: [] - detach: - description: - - Enable detached mode on start up, leaves container running in background - required: false - default: true - aliases: [] state: description: - - Set the state of the container + - Set the state of the image required: false default: present - choices: [ "present", "stopped", "absent", "killed", "restarted" ] - aliases: [] - privileged: - description: - - Set whether the container should run in privileged mode - required: false - default: false + choices: [ "present", "absent", "build" ] aliases: [] - lxc_conf: + timeout: description: - - LXC config parameters, e.g. lxc.aa_profile:unconfined + - Set image operation timeout required: false - default: + default: 600 aliases: [] -author: Cove Schneider requirements: [ "docker-py" ] -notes: - - Currently supports Docker version <= 0.6.4 only. ''' EXAMPLES = ''' -Start one docker container running tomcat in each host of the web group and bind tomcat's listening port to 8080 -on the host: +Build docker image if required. Path should contains Dockerfile to build image: - hosts: web sudo: yes tasks: - - name: run tomcat servers - docker: image=centos command="service tomcat6 start" ports=:8080 + - name: check or build image + docker_image: path="/path/to/build/dir" name="my/app" state=present -The tomcat server's port is NAT'ed to a dynamic port on the host, but you can determine which port the server was -mapped to using docker_containers: +Build new version of image: - hosts: web sudo: yes tasks: - - name: run tomcat servers - docker: image=centos command="service tomcat6 start" ports=8080 count=5 - - name: Display IP address and port mappings for containers - debug: msg={{inventory_hostname}}:{{item.NetworkSettings.Ports['8080/tcp'][0].HostPort}} - with_items: docker_containers + - name: check or build image + docker_image: path="/path/to/build/dir" name="my/app" state=build -Just as in the previous example, but iterates over the list of docker containers with a sequence: +Remove image from local docker storage: - hosts: web sudo: yes - vars: - start_containers_count: 5 tasks: - name: run tomcat servers - docker: image=centos command="service tomcat6 start" ports=8080 count={{start_containers_count}} - - name: Display IP address and port mappings for containers - debug: msg={{inventory_hostname}}:{{docker_containers[{{item}}].NetworkSettings.Ports['8080/tcp'][0].HostPort}}" - with_sequence: start=0 end={{start_containers_count - 1}} - -Stop, remove all of the running tomcat containers and list the exit code from the stopped containers: + docker_image: name="my/app" state=absent -- hosts: web - sudo: yes - tasks: - - name: stop tomcat servers - docker: image=centos command="service tomcat6 start" state=absent - - name: Display return codes from stopped containers - debug: msg="Returned {{inventory_hostname}}:{{item}}" - with_items: docker_containers ''' try: @@ -266,7 +185,6 @@ def main(): argument_spec = dict( path = dict(required=False, default=None), name = dict(required=True), - #id = dict(required=False, default=None), tag = dict(required=False, default=""), nocache = dict(default=False, type='bool'), state = dict(default='present', choices=['absent', 'present', 'build']),