lxc_container – Управление контейнерами LXC
Описание
- Управление контейнерами LXC
Требования
Ниже перечислены требования к хосту, на котором выполняется этот модуль.
- lxc >= 1.0 # Пакет ОС
- python >= 2.6 # Пакет ОС
- lxc-python2 >= 0.1 # Пакет PIP из https://github.com/lxc/python2-lxc
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| archive boolean |
| Создать архив контейнера. Это создаст tarball запущенного контейнера. |
| archive_compression - |
| Тип сжатия, используемый при создании архива запущенного контейнера. |
| archive_path - | Путь для сохранения архива контейнера. Если путь не существует, метод архивирования попытается его создать. | |
| backing_store - |
| Тип хранилища для контейнера. |
| clone_name string | Имя нового клонированного сервера. Используется только при состоянии «клон». | |
| clone_snapshot boolean |
| Создать снимок контейнера при клонировании. Не поддерживается всеми хранилищами контейнеров. Включение может завершиться ошибкой, если хранилище не поддерживает снимки. |
| config - | Путь к файлу конфигурации LXC. | |
| container_command - | Выполнить команду внутри контейнера. | |
| container_config - | Список опций 'ключ=значение' для настройки контейнера. | |
| container_log boolean |
| Включить журнал действий хоста внутри контейнера. |
| container_log_level - |
| Установить уровень логирования для контейнера, где *container_log* был установлен. |
| directory - | Расположить директорию rootfs в DIR. | |
| fs_size - | По умолчанию: "5Г" | Размер файловой системы. |
| fs_type - | По умолчанию: "ext4" | Создать файловую систему типа TYPE. |
| lv_name - | По умолчанию: "$CONTAINER_NAME" | Имя логического тома, по умолчанию совпадает с именем контейнера. |
| lxc_path - | Расположить контейнер в PATH | |
| name - / обязательно | Имя контейнера. | |
| state - |
| Определить состояние контейнера. Если вы клонируете контейнер с помощью `clone_name`, новый клонированный контейнер создается в состоянии «остановлен». Запущенный контейнер будет остановлен во время операции клонирования, а после завершения клонирования исходное состояние контейнера будет восстановлено. |
| template - | По умолчанию: "ubuntu" | Имя шаблона для использования в создании LXC. |
| template_options - | Параметры шаблона при построении контейнера. | |
| thinpool - | Использовать LVM тонкий пул TP. | |
| vg_name - | По умолчанию: "lxc" | Если тип хранилища lvm, укажите имя группы томов. |
| zfs_root - | Создать zfs по заданному zfsroot. |
Примечания
Примечание
- Контейнеры должны иметь уникальное имя. Если вы попытаетесь создать контейнер с именем, которое уже существует в пространстве имен пользователя, модуль просто вернёт «без изменений».
- «container_command» может использоваться с любым состоянием, кроме «отсутствует». Если используется с состоянием «остановлен», контейнер будет «запущен», команда выполнится, а затем контейнер «остановлен» снова. Аналогично, если состояние «остановлен», а контейнер не существует, он будет сначала создан, «запущен», выполнена команда, а затем «остановлен». Если вы используете «|» в переменной, вы можете использовать стандартную форматирование скриптов в самой переменной. Опция «container_command» всегда будет выполняться как BASH. При использовании «container_command» создается файл журнала в каталоге /tmp, который содержит как стандартный вывод, так и стандартную ошибку любой выполненной команды.
- Если «archive» равно true, система попытается создать сжатый tarball запущенного контейнера. Опция «archive» поддерживает контейнеры с хранилищем LVM и создаст снимок запущенного контейнера при создании архива.
- Если в вашей дистрибутиве нет пакета «python2-lxc», который является требованием для этого модуля, его можно установить из исходного кода по адресу «https://github.com/lxc/python2-lxc» или установить через pip с именем пакета lxc-python2.
Примеры
- name: Create a started container
lxc_container:
name: test-container-started
container_log: true
template: ubuntu
state: started
template_options: --release trusty
- name: Create a stopped container
lxc_container:
name: test-container-stopped
container_log: true
template: ubuntu
state: stopped
template_options: --release trusty
- name: Create a frozen container
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
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
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"
debug:
var: lvm_container_info
- name: Run a command in a container and ensure its in a "stopped" state.
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.
lxc_container:
name: test-container-stopped
state: frozen
container_command: |
echo 'hello world.' | tee /opt/frozen
- name: Start a container
lxc_container:
name: test-container-stopped
state: started
- name: Run a command in a container and then restart it
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
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
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
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"
debug:
var: clone_container_info
- name: Clone a container using snapshot
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
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
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.
lxc_container:
name: test-container-new-archive-destroyed-clone
state: started
- name: Destroy a container
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 строка | успех, когда archive равно true | результирующее состояние контейнера Пример: /tmp/test-container-config.tar | |
| clone логическое значение | успех, когда указано clone_name | был ли контейнер клонирован Пример: True | |
| init_pid целое число | успех | pid процесса lxc init Пример: 19786 | |
| interfaces список | успех | список сетевых интерфейсов контейнера Пример: ['eth0', 'lo'] | |
| ips список | успех | список IP-адресов Пример: ['10.0.3.3'] | |
| name строка | успех | имя контейнера lxc Пример: test_host | |
| state строка | успех | результирующее состояние контейнера Пример: запущен | |
Статус
- Данный модуль не гарантирует обратную совместимость интерфейса. [превью]
- Этот модуль поддерживается сообществом Ansible. [сообщество]
Авторы
- Kevin Carter (@cloudnull)
Подсказка
Если вы заметили какие-либо проблемы в этой документации, вы можете отредактировать этот документ, чтобы улучшить его.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.9/modules/lxc_container_module.html