community.general.lxc_container модуль – Управление контейнерами LXC
Примечание
Этот модуль входит в коллекцию community.general (версия 9.5.0).
Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не включена в ansible-core. Чтобы проверить установку, выполните ansible-galaxy collection list.
Для установки используйте: ansible-galaxy collection install community.general. Для использования этого модуля необходимы дополнительные требования, см. Требования для получения подробной информации.
Для использования в книге задач укажите: community.general.lxc_container.
Обзор
- Управление контейнерами LXC.
Требования
Ниже перечислены требования, необходимые на хосте, на котором выполняется этот модуль.
- lxc >= 2.0 # Пакет ОС
- python3 >= 3.5 # Пакет ОС
- python3-lxc # Пакет ОС
Параметры
Параметр | Комментарии |
|---|---|
archive boolean | Создать архив контейнера. Это создаст архивный файл работающего контейнера. Варианты:
|
archive_compression string | Тип сжатия, используемый при создании архива работающего контейнера. Варианты:
|
archive_path path | Путь для сохранения заархивированного контейнера. Если путь не существует, метод архивации попытается его создать. |
backing_store string | Тип хранилища для контейнера. Варианты:
|
clone_name string | Имя нового клонированного сервера. Используется только когда state — clone. |
clone_snapshot boolean | Создать снимок контейнера при клонировании. Поддерживается не всеми хранилищами контейнеров. Включение этой опции может привести к ошибке, если хранилище не поддерживает снимки. Варианты:
|
config path | Путь к конфигурационному файлу LXC. |
container_command string | Выполнить команду внутри контейнера. |
container_config list / elements=string | Список опций |
container_log boolean | Включить лог контейнера для действий хоста в контейнере. Варианты:
|
container_log_level string | Установить уровень логирования для контейнера, где была установлена Варианты:
|
directory path | Разместить корневой каталог rootfs в DIR. |
fs_size string | Размер файловой системы. По умолчанию: |
fs_type string | Создать fstype TYPE. По умолчанию: |
lv_name string | Имя логического тома, по умолчанию — имя контейнера. Если не указано, по умолчанию используется |
lxc_path path | Разместить контейнер в |
name string / required | Имя контейнера. |
state string | Определить состояние контейнера. Если вы клонируете контейнер с помощью Работающий контейнер будет остановлен во время операции клонирования, и после завершения клонирования исходное состояние контейнера будет восстановлено. Варианты:
|
template string | Имя шаблона для использования при создании LXC. По умолчанию: |
template_options string | Параметры шаблона при сборке контейнера. |
thinpool string | Использовать пул LVM с тонким размещением под названием TP. |
vg_name string | Если хранилище-бэкенд — lvm, укажите имя группы томов. По умолчанию: |
zfs_root string | Создать zfs под заданным zfsroot. |
Атрибуты
Атрибут | Поддержка | Описание |
|---|---|---|
check_mode | Поддержка: нет | Может работать в режиме |
diff_mode | Поддержка: нет | Вернёт детали изменений (или, возможно, изменений, которые нужно внести в |
Примечания
Примечание
- Контейнеры должны иметь уникальное имя. Если вы пытаетесь создать контейнер с именем, которое уже существует в пространстве имен пользователя, модуль просто вернёт «без изменений».
container_commandможет использоваться с любым состоянием, кромеabsent. Если используется со значением состоянияstopped, контейнер будетstarted, команда выполнится, а затем контейнерstoppedснова. Аналогично, еслиstate=stoppedи контейнер не существует, он будет сначала создан,started, команда выполнится, а затемstopped. Если вы используете «|» в переменной, вы можете использовать обычный форматирование скриптов внутри самой переменной. Вариантcontainer_commandвсегда выполняется как BASH. При использованииcontainer_command, в директории/tmp/создаётся файл журнала, содержащий какstdout, так иstderrлюбой выполненной команды.- Если
archive=true, система попытается создать сжатый архив tarball текущего контейнера. Вариантarchiveподдерживает контейнеры с поддержкой LVM и создаст снимок текущего контейнера при создании архива. - Если в вашей дистрибутиве нет пакета для
python3-lxc, что является требованием для этого модуля, его можно установить из исходного кода по адресу https://github.com/lxc/python3-lxc или установить через pip с именем пакетаlxc.
Примеры
- 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
Значения возврата
Общие значения возврата описаны в здесь, следующие — поля, уникальные для данного модуля:
Ключ | Описание |
|---|---|
lxc_container complex | информация о контейнере Возвращается: успех |
|
archive string |
результативное состояние контейнера Возвращается: успех, когда archive — true Пример: |
|
clone boolean |
если контейнер был клонирован Возвращается: успех, когда указано clone_name Пример: |
|
init_pid integer |
pid процесса lxc init Возвращается: успех Пример: |
|
interfaces list / elements=string |
список сетевых интерфейсов контейнера Возвращается: успех Пример: |
|
ips list / elements=string |
список ip-адресов Возвращается: успех Пример: |
|
name string |
имя контейнера lxc Возвращается: успех Пример: |
|
state string |
результативное состояние контейнера Возвращается: успех Пример: |
Ссылки на сборку
© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/community/general/lxc_container_module.html