Spec-Zone.ru › Ansible 2.6

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
    Варианты:
  • gzip ←
  • bzip2
  • none
Тип сжатия, используемый при создании архива запущенного контейнера.
archive_path
Путь для сохранения архива контейнера. Если путь не существует, метод архивации попытается его создать.
backing_store
    Варианты:
  • dir ←
  • lvm
  • loop
  • btrfs
  • overlayfs
  • zfs
Тип хранилища для контейнера.
clone_name
bool

(добавлено в 2.0)
    Варианты:
  • нет ←
  • да
Имя нового клонированного сервера. Используется только при состоянии clone.
clone_snapshot
bool

(добавлено в 2.0)
    Варианты:
  • нет ←
  • да
Создать снимок контейнера при клонировании. Эта функция не поддерживается всеми хранилищами контейнеров. Включение может завершиться ошибкой, если хранилище не поддерживает снимки.
config
Путь к файлу конфигурации LXC.
container_command
Выполнить команду внутри контейнера.
container_config
Список опций 'ключ=значение' для конфигурации контейнера.
container_log
bool
    Варианты:
  • нет ←
  • да
Включить логирование действий хоста в контейнере.
container_log_level
    Варианты:
  • INFO ←
  • ERROR
  • DEBUG
Установить уровень логирования для контейнера, где *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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API