Note
This plugin is part of the community.general collection (version 2.0.1).
To install it use: ansible-galaxy collection install community.general
.
To use it in a playbook, specify: community.general.lxc_container
.
The below requirements are needed on the host that executes this module.
Parameter | Choices/Defaults | Comments |
---|---|---|
archive boolean |
| Create an archive of a container. This will create a tarball of the running container. |
archive_compression string |
| Type of compression to use when creating an archive of a running container. |
archive_path path | Path the save the archived container. If the path does not exist the archive method will attempt to create it. | |
backing_store string |
| Backend storage type for the container. |
clone_name string | Name of the new cloned server. This is only used when state is clone. | |
clone_snapshot boolean |
| Create a snapshot a container when cloning. This is not supported by all container storage backends. Enabling this may fail if the backing store does not support snapshots. |
config path | Path to the LXC configuration file. | |
container_command string | Run a command within a container. | |
container_config list / elements=string | A list of key=value options to use when configuring a container. | |
container_log boolean |
| Enable a container log for host actions to the container. |
container_log_level string |
| Set the log level for a container where *container_log* was set. |
directory path | Place rootfs directory under DIR. | |
fs_size string | Default: "5G" | File system Size. |
fs_type string | Default: "ext4" | Create fstype TYPE. |
lv_name string | Name of the logical volume, defaults to the container name. If not specified, it defaults to $CONTAINER_NAME . | |
lxc_path path | Place container under PATH. | |
name string / required | Name of a container. | |
state string |
| Define the state of a container. If you clone a container using clone_name the newly cloned container created in a stopped state. The running container will be stopped while the clone operation is happening and upon completion of the clone the original container state will be restored. |
template string | Default: "ubuntu" | Name of the template to use within an LXC create. |
template_options string | Template options when building the container. | |
thinpool string | Use LVM thin pool called TP. | |
vg_name string | Default: "lxc" | If backend store is lvm, specify the name of the volume group. |
zfs_root string | Create zfs under given zfsroot. |
Note
- name: Create a started container community.general.lxc_container: name: test-container-started container_log: true template: ubuntu state: started template_options: --release trusty - name: Create a stopped container community.general.lxc_container: name: test-container-stopped container_log: true template: ubuntu state: stopped template_options: --release trusty - name: Create a frozen container community.general.lxc_container: name: test-container-frozen container_log: true template: ubuntu state: frozen template_options: --release trusty container_command: | echo 'hello world.' | tee /opt/started-frozen # Create filesystem container, configure it, and archive it, and start it. - name: Create filesystem container community.general.lxc_container: name: test-container-config backing_store: dir container_log: true template: ubuntu state: started archive: true archive_compression: none container_config: - "lxc.aa_profile=unconfined" - "lxc.cgroup.devices.allow=a *:* rmw" template_options: --release trusty # Create an lvm container, run a complex command in it, add additional # configuration to it, create an archive of it, and finally leave the container # in a frozen state. The container archive will be compressed using bzip2 - name: Create a frozen lvm container community.general.lxc_container: name: test-container-lvm container_log: true template: ubuntu state: frozen backing_store: lvm template_options: --release trusty container_command: | apt-get update apt-get install -y vim lxc-dev echo 'hello world.' | tee /opt/started if [[ -f "/opt/started" ]]; then echo 'hello world.' | tee /opt/found-started fi container_config: - "lxc.aa_profile=unconfined" - "lxc.cgroup.devices.allow=a *:* rmw" archive: true archive_compression: bzip2 register: lvm_container_info - name: Debug info on container "test-container-lvm" ansible.builtin.debug: var: lvm_container_info - name: Run a command in a container and ensure its in a "stopped" state. community.general.lxc_container: name: test-container-started state: stopped container_command: | echo 'hello world.' | tee /opt/stopped - name: Run a command in a container and ensure its it in a "frozen" state. community.general.lxc_container: name: test-container-stopped state: frozen container_command: | echo 'hello world.' | tee /opt/frozen - name: Start a container community.general.lxc_container: name: test-container-stopped state: started - name: Run a command in a container and then restart it community.general.lxc_container: name: test-container-started state: restarted container_command: | echo 'hello world.' | tee /opt/restarted - name: Run a complex command within a "running" container community.general.lxc_container: name: test-container-started container_command: | apt-get update apt-get install -y curl wget vim apache2 echo 'hello world.' | tee /opt/started if [[ -f "/opt/started" ]]; then echo 'hello world.' | tee /opt/found-started fi # Create an archive of an existing container, save the archive to a defined # path and then destroy it. - name: Archive container community.general.lxc_container: name: test-container-started state: absent archive: true archive_path: /opt/archives # Create a container using overlayfs, create an archive of it, create a # snapshot clone of the container and and finally leave the container # in a frozen state. The container archive will be compressed using gzip. - name: Create an overlayfs container archive and clone it community.general.lxc_container: name: test-container-overlayfs container_log: true template: ubuntu state: started backing_store: overlayfs template_options: --release trusty clone_snapshot: true clone_name: test-container-overlayfs-clone-snapshot archive: true archive_compression: gzip register: clone_container_info - name: Debug info on container "test-container" ansible.builtin.debug: var: clone_container_info - name: Clone a container using snapshot community.general.lxc_container: name: test-container-overlayfs-clone-snapshot backing_store: overlayfs clone_name: test-container-overlayfs-clone-snapshot2 clone_snapshot: true - name: Create a new container and clone it community.general.lxc_container: name: test-container-new-archive backing_store: dir clone_name: test-container-new-archive-clone - name: Archive and clone a container then destroy it community.general.lxc_container: name: test-container-new-archive state: absent clone_name: test-container-new-archive-destroyed-clone archive: true archive_compression: gzip - name: Start a cloned container. community.general.lxc_container: name: test-container-new-archive-destroyed-clone state: started - name: Destroy a container community.general.lxc_container: name: '{{ item }}' state: absent with_items: - test-container-stopped - test-container-started - test-container-frozen - test-container-lvm - test-container-config - test-container-overlayfs - test-container-overlayfs-clone - test-container-overlayfs-clone-snapshot - test-container-overlayfs-clone-snapshot2 - test-container-new-archive - test-container-new-archive-clone - test-container-new-archive-destroyed-clone
Common return values are documented here, the following are the fields unique to this module:
Key | Returned | Description | |
---|---|---|---|
lxc_container complex | success | container information | |
archive string | success, when archive is true | resulting state of the container Sample: /tmp/test-container-config.tar | |
clone boolean | success, when clone_name is specified | if the container was cloned Sample: True | |
init_pid integer | success | pid of the lxc init process Sample: 19786 | |
interfaces list / elements=string | success | list of the container's network interfaces Sample: ['eth0', 'lo'] | |
ips list / elements=string | success | list of ips Sample: ['10.0.3.3'] | |
name string | success | name of the lxc container Sample: test_host | |
state string | success | resulting state of the container Sample: running |
© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/collections/community/general/lxc_container_module.html