lxc_container — Управление контейнерами LXC
Новая в версии 1.8.0.
Обзор
- Управление контейнерами LXC
Требования
Ниже перечислены требования, необходимые на хосте, на котором выполняется этот модуль.
- lxc >= 1.0 # Пакет ОС
- python >= 2.6 # Пакет ОС
- lxc-python2 >= 0.1 # Пакет PIP из https://github.com/lxc/python2-lxc
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| archive bool |
| Создать архив контейнера. Это создаст tar-архив запущенного контейнера. |
| archive_compression |
| Тип сжатия, используемый при создании архива запущенного контейнера. |
| archive_path | Путь для сохранения архива контейнера. Если путь не существует, метод архивации попытается его создать. | |
| backing_store |
| Тип хранилища для контейнера. |
| clone_name bool (добавлено в 2.0) |
| Имя нового клонированного сервера. Используется только при состоянии clone. |
| clone_snapshot bool (добавлено в 2.0) |
| Создать снимок контейнера при клонировании. Эта функция не поддерживается всеми хранилищами контейнеров. Включение может завершиться ошибкой, если хранилище не поддерживает снимки. |
| config | Путь к файлу конфигурации LXC. | |
| container_command | Выполнить команду внутри контейнера. | |
| container_config | Список опций 'ключ=значение' для конфигурации контейнера. | |
| container_log bool |
| Включить логирование действий хоста в контейнере. |
| container_log_level |
| Установить уровень логирования для контейнера, где *container_log* был установлен. |
| directory | Разместить корневой каталог под 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" | Если хранилище Backend — lvm, укажите имя группы томов. |
| zfs_root | Создать zfs в указанном zfsroot. |
Примечания
Примечание
- Контейнеры должны иметь уникальное имя. Если вы попытаетесь создать контейнер с именем, которое уже существует в пространстве имен пользователя, модуль просто вернёт «без изменений».
- «container_command» может быть использован с любым состоянием, кроме «отсутствует». Если использовать с состоянием «остановлен», контейнер будет «запущен», команда будет выполнена, а затем контейнер снова «остановлен». Точно так же, если состояние «остановлен», а контейнер не существует, он будет сначала создан, «запущен», команда будет выполнена, а затем «остановлен». Если в переменной используется «|», вы можете использовать стандартную форматирование скрипта в самой переменной. Опция «container_command» всегда будет выполняться как BASH. При использовании «container_command» создаётся файл журнала в каталоге /tmp, который содержит как стандартный вывод, так и стандартную ошибку любой выполненной команды.
- Если «archive» — истина, система попытается создать сжатый tar-архив запущенного контейнера. Опция «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 сложное | успех | информация о контейнере | |
| name строка | успех | имя контейнера lxc Пример: test_host | |
| init_pid целое число | успех | PID процесса lxc init Пример: 19786 | |
| interfaces список | успех | список сетевых интерфейсов контейнера Пример: ['eth0', 'lo'] | |
| ips список | успех | список IP-адресов Пример: ['10.0.3.3'] | |
| state строка | успех | результативное состояние контейнера Пример: запущен | |
| archive строка | успех, когда archive — истина | результативное состояние контейнера Пример: /tmp/test-container-config.tar | |
| clone булево | успех, когда указано clone_name | был ли контейнер клонирован Пример: True | |
Статус
Этот модуль помечен как превью, что означает, что его интерфейс не гарантируется как обратный.
Техническое обслуживание
Этот модуль помечен как community, что означает, что его поддерживает сообщество Ansible. Дополнительную информацию см. в Технической поддержке и обслуживании модулей.
Список других модулей, также поддерживаемых сообществом 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.6/modules/lxc_container_module.html