mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
160 lines
4.2 KiB
Markdown
160 lines
4.2 KiB
Markdown
|
# 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
|
||
|
}
|
||
|
}
|
||
|
|
||
|
```
|