summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Coca <bcoca@ansible.com>2016-03-21 07:21:15 -0700
committerBrian Coca <bcoca@ansible.com>2016-03-21 07:21:15 -0700
commit4a01a5fbce62ecfa4fe7bb8db91294f9f3cb0a29 (patch)
treee729327dedbea66b7476b9c4fe2a6ebb588cb75c
parentd026bc5e17df8a9e8a0f8832fa23f02b0581479f (diff)
parent6edf1443db41ad0ebbf63be57111494b8eac5fbd (diff)
downloadansible-4a01a5fbce62ecfa4fe7bb8db91294f9f3cb0a29.tar.gz
Merge pull request #14733 from chouseknecht/docker_files_proposal
Adding docker_files module proposal.
-rw-r--r--docs/proposals/docker/docker_files_module.md159
1 files changed, 159 insertions, 0 deletions
diff --git a/docs/proposals/docker/docker_files_module.md b/docs/proposals/docker/docker_files_module.md
new file mode 100644
index 0000000000..3970584f0d
--- /dev/null
+++ b/docs/proposals/docker/docker_files_module.md
@@ -0,0 +1,159 @@
+# Docker_Files Modules Proposal
+
+## Purpose and Scope
+
+The purpose of docker_files is to provide for retrieving a file or folder from a container's file system,
+inserting a file or folder into a container, exporting a container's entire filesystem as a tar archive, or
+retrieving a list of changed files from a container's file system.
+
+Docker_files will manage a container 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_files accepts the parameters listed below. API connection parameters will be part of a shared utility module
+as mentioned above.
+
+```
+diff:
+ description:
+ - Provide a list of container names or IDs. For each container a list of changed files and directories found on the
+ container's file system will be returned. Diff is mutually exclusive from all other options except event_type.
+ Use event_type to choose which events to include in the output.
+ default: null
+
+export:
+ description:
+ - Provide a container name or ID. The container's file system will be exported to a tar archive. Use dest
+ to provide a path for the archive on the local file system. If the output file already exists, it will not be
+ overwritten. Use the force option to overwrite an existing archive.
+ default: null
+
+dest:
+ description:
+ - Destination path of copied files. If the destination is a container file system, precede the path with a
+ container name or ID + ':'. For example, C(mycontainer:/path/to/file.txt). If the destination path does not
+ exist, it will be created. If the destination path exists on a the local filesystem, it will not be overwritten.
+ Use the force option to overwrite existing files on the local filesystem.
+ default: null
+
+force:
+ description:
+ - Overwrite existing files on the local filesystem.
+ default: false
+
+follow_link:
+ description:
+ - Follow symbolic links in the src path. If src is local and file is a symbolic link, the symbolic link, not the
+ target is copied by default. To copy the link target and not the link, set follow_link to true.
+ default: false
+
+event_type:
+ description:
+ - Select the specific event type to list in the diff output.
+ choices:
+ - all
+ - add
+ - delete
+ - change
+ default: all
+
+src:
+ description:
+ - The source path of file(s) to be copied. If source files are found on the container's file system, precede the
+ path with the container name or ID + ':'. For example, C(mycontainer:/path/to/files).
+ default: null
+
+```
+
+## Examples
+
+```
+- name: Copy files from the local file system to a container's file system
+ docker_files:
+ src: /tmp/rpm
+ dest: mycontainer:/tmp
+ follow_links: yes
+
+- name: Copy files from the container to the local filesystem and overwrite existing files
+ docker_files:
+ src: container1:/var/lib/data
+ dest: /tmp/container1/data
+ force: yes
+
+- name: Export container filesystem
+ docker_file:
+ export: container1
+ dest: /tmp/conainer1.tar
+ force: yes
+
+- name: List all differences for multiple containers.
+ docker_files:
+ diff:
+ - mycontainer1
+ - mycontainer2
+
+- name: Included changed files only in diff output
+ docker_files:
+ diff:
+ - mycontainer1
+ event_type: change
+```
+
+## Returns
+
+Returned from diff:
+
+```
+{
+ changed: false,
+ failed: false,
+ rc: 0,
+ results: {
+ mycontainer1: [
+ { state: 'C', path: '/dev' },
+ { state: 'A', path: '/dev/kmsg' },
+ { state: 'C', path: '/etc' },
+ { state: 'A', path: '/etc/mtab' }
+ ],
+ mycontainer2: [
+ { state: 'C', path: '/foo' },
+ { state: 'A', path: '/foo/bar.txt' }
+ ]
+ }
+}
+```
+
+Returned when copying files:
+
+```
+{
+ changed: true,
+ failed: false,
+ rc: 0,
+ results: {
+ src: /tmp/rpms,
+ dest: mycontainer:/tmp
+ files_copied: [
+ 'file1.txt',
+ 'file2.jpg'
+ ]
+ }
+}
+```
+
+Return when exporting container filesystem:
+
+```
+{
+ changed: true,
+ failed: false,
+ rc: 0,
+ results: {
+ src: container_name,
+ dest: local/path/archive_name.tar
+ }
+}
+
+```