mirror of https://github.com/ansible/ansible.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
207 lines
5.5 KiB
Markdown
207 lines
5.5 KiB
Markdown
|
|
# Docker_Image Module Proposal
|
|
|
|
## Purpose and Scope
|
|
|
|
The purpose is to update the existing docker_image module. The updates include expanding the module's capabilities to
|
|
match the build, load, pull, push, rmi, and save docker commands and adding support for remote registries.
|
|
|
|
Docker_image will manage images using docker-py to communicate with either a local or remote API. It will
|
|
support API versions >= 1.14. API connection details will be handled externally in a shared utility module similar
|
|
to how other cloud modules operate.
|
|
|
|
## Parameters
|
|
|
|
Docker_image will support the parameters listed below. API connection parameters will be part of a shared utility
|
|
module as mentioned above.
|
|
|
|
```
|
|
archive_path:
|
|
description:
|
|
- Save image to the provided path. Use with state present to always save the image to a tar archive. If
|
|
intermediate directories in the path do not exist, they will be created. If a matching
|
|
archive already exists, it will be overwritten.
|
|
default: null
|
|
|
|
config_path:
|
|
description:
|
|
- Path to a custom docker config file. Docker-py defaults to using ~/.docker/config.json.
|
|
|
|
cgroup_parent:
|
|
description:
|
|
- Optional parent cgroup for build containers.
|
|
default: null
|
|
|
|
cpu_shares:
|
|
description:
|
|
- CPU shares for build containers. Integer value.
|
|
default: 0
|
|
|
|
cpuset_cpus:
|
|
description:
|
|
- CPUs in which to allow build container execution C(1,3) or C(1-3).
|
|
default: null
|
|
|
|
dockerfile:
|
|
description:
|
|
- Name of dockerfile to use when building an image.
|
|
default: Dockerfile
|
|
|
|
email:
|
|
description:
|
|
- The email for the registry account. Provide with username and password when credentials are not encoded
|
|
in docker configuration file or when encoded credentials should be updated.
|
|
default: null
|
|
nolog: true
|
|
|
|
force:
|
|
description:
|
|
- Use with absent state to un-tag and remove all images matching the specified name. Use with present state to
|
|
force a pull or rebuild of the image.
|
|
default: false
|
|
|
|
load_path:
|
|
description:
|
|
- Use with state present to load a previously save image. Provide the full path to the image archive file.
|
|
default: null
|
|
|
|
memory:
|
|
description:
|
|
- Build container limit. Memory limit specified as a positive integer for number of bytes.
|
|
|
|
memswap:
|
|
description:
|
|
- Build container limit. Total memory (memory + swap). Specify as a positive integer for number of bytes or
|
|
-1 to disable swap.
|
|
default: null
|
|
|
|
name:
|
|
description:
|
|
- Image name or ID.
|
|
required: true
|
|
|
|
nocache:
|
|
description:
|
|
- Do not use cache when building an image.
|
|
deafult: false
|
|
|
|
password:
|
|
description:
|
|
- Password used when connecting to the registry. Provide with username and email when credentials are not encoded
|
|
in docker configuration file or when encoded credentials should be updated.
|
|
default: null
|
|
nolog: true
|
|
|
|
path:
|
|
description:
|
|
- Path to Dockerfile and context from which to build an image.
|
|
default: null
|
|
|
|
push:
|
|
description:
|
|
- Use with state present to always push an image to the registry.
|
|
default: false
|
|
|
|
registry:
|
|
description:
|
|
- URL of the registry. If not provided, defaults to Docker Hub.
|
|
default: null
|
|
|
|
rm:
|
|
description:
|
|
- Remove intermediate containers after build.
|
|
default: true
|
|
|
|
tag:
|
|
description:
|
|
- Image tags. When pulling or pushing, set to 'all' to include all tags.
|
|
default: latest
|
|
|
|
url:
|
|
description:
|
|
- The location of a Git repository. The repository acts as the context when building an image.
|
|
- Mutually exclusive with path.
|
|
|
|
username:
|
|
description:
|
|
- Username used when connecting to the registry. Provide with password and email when credentials are not encoded
|
|
in docker configuration file or when encoded credentials should be updated.
|
|
default: null
|
|
nolog: true
|
|
|
|
state:
|
|
description:
|
|
- "absent" - if image exists, unconditionally remove it. Use the force option to un-tag and remove all images
|
|
matching the provided name.
|
|
- "present" - check if image is present with the provided tag. If the image is not present or the force option
|
|
is used, the image will either be pulled from the registry, built or loaded from an archive. To build the image,
|
|
provide a path or url to the context and Dockerfile. To load an image, use load_path to provide a path to
|
|
an archive file. If no path, url or load_path is provided, the image will be pulled. Use the registry
|
|
parameters to control the registry from which the image is pulled.
|
|
|
|
required: false
|
|
default: present
|
|
choices:
|
|
- absent
|
|
- present
|
|
|
|
http_timeout:
|
|
description:
|
|
- Timeout for HTTP requests during the image build operation. Provide a positive integer value for the number of
|
|
seconds.
|
|
default: null
|
|
|
|
```
|
|
|
|
|
|
## Examples
|
|
|
|
```
|
|
- name: build image
|
|
docker_image:
|
|
path: "/path/to/build/dir"
|
|
name: "my_app"
|
|
tags:
|
|
- v1.0
|
|
- mybuild
|
|
|
|
- name: force pull an image and all tags
|
|
docker_image:
|
|
name: "my/app"
|
|
force: yes
|
|
tags: all
|
|
|
|
- name: untag and remove image
|
|
docker_image:
|
|
name: "my/app"
|
|
state: absent
|
|
force: yes
|
|
|
|
- name: push an image to Docker Hub with all tags
|
|
docker_image:
|
|
name: my_image
|
|
push: yes
|
|
tags: all
|
|
|
|
- name: pull image from a private registry
|
|
docker_image:
|
|
name: centos
|
|
registry: https://private_registry:8080
|
|
|
|
```
|
|
|
|
|
|
## Returns
|
|
|
|
```
|
|
{
|
|
changed: True
|
|
failed: False
|
|
rc: 0
|
|
action: built | pulled | loaded | removed | none
|
|
msg: < text confirming the action that was taken >
|
|
results: {
|
|
< output from docker inspect for the affected image >
|
|
}
|
|
}
|
|
``` |