Spec-Zone.ru › Ansible 2.11

community.general.lxc_container – Управление контейнерами LXC

Примечание

Этот плагин входит в коллекцию community.general (версия 2.0.1).

Для его установки используйте: ansible-galaxy collection install community.general.

Чтобы использовать его в плейбуке, укажите: community.general.lxc_container.

  • Обзор
  • Требования
  • Параметры
  • Примечания
  • Примеры
  • Возвращаемые значения

Обзор

  • Управление контейнерами LXC.

Требования

Ниже перечислены требования к хосту, на котором будет выполняться этот модуль.

  • lxc >= 1.0 # Пакет ОС
  • python >= 2.6 # Пакет ОС
  • lxc-python2 >= 0.1 # Пакет PIP из https://github.com/lxc/python2-lxc

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
archive
boolean
    Варианты:
  • нет ←
  • да
Создать архив контейнера.
Создаст архив (tarball) работающего контейнера.
archive_compression
строка
    Варианты:
  • gzip ←
  • bzip2
  • none
Тип сжатия, используемый при создании архива работающего контейнера.
archive_path
путь
Путь для сохранения архива контейнера.
Если путь не существует, метод архивирования попытается его создать.
backing_store
строка
    Варианты:
  • dir ←
  • lvm
  • loop
  • btrfs
  • overlayfs
  • zfs
Тип хранилища контейнера.
clone_name
строка
Имя нового клонируемого сервера.
Используется только при state = clone.
clone_snapshot
boolean
    Варианты:
  • нет ←
  • да
Создать моментальный снимок контейнера при клонировании.
Не поддерживается всеми хранилищами контейнеров.
Включение может завершиться ошибкой, если хранилище не поддерживает снимки.
config
путь
Путь к файлу конфигурации LXC.
container_command
строка
Выполнить команду внутри контейнера.
container_config
список / элементы=строка
Список key=value опций для конфигурации контейнера.
container_log
boolean
    Варианты:
  • нет ←
  • да
Включить журналы контейнера для действий хоста в контейнере.
container_log_level
строка
    Варианты:
  • Информация
  • info
  • INFO ←
  • Ошибка
  • error
  • ERROR
  • Отладка
  • debug
  • DEBUG
Установить уровень журналирования контейнера, если *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 create.
template_options
строка
Опции шаблона при создании контейнера.
thinpool
строка
Использовать LVM тонкий пул с именем TP.
vg_name
строка
По умолчанию:
"lxc"
Если тип хранилища lvm, укажите имя группы томов.
zfs_root
строка
Создать zfs в указанной директории zfsroot.

Примечания

Примечание

  • Контейнеры должны иметь уникальное имя. Если вы попытаетесь создать контейнер с именем, которое уже существует в пространстве имен пользователя, модуль просто вернёт «без изменений».
  • «container_command» может быть использован с любым состоянием, кроме «absent». Если используется со «stopped», контейнер будет «запущен», команда выполнена, а затем контейнер снова «остановлен». Аналогично, если состояние «stopped» и контейнер не существует, он сначала будет создан, «запущен», выполнена команда, а затем «остановлен». Если вы используете «|» в переменной, вы можете использовать стандартное форматирование скрипта внутри самой переменной. Опция «container_command» всегда выполняется как BASH. При использовании «container_command» создаётся файл журнала в директории /tmp, который содержит как вывод stdout, так и вывод stderr любой выполненной команды.
  • Если «archive» true, система попытается создать сжатый tarball работающего контейнера. Опция «archive» поддерживает контейнеры с поддержкой LVM и создаст моментальный снимок работающего контейнера при создании архива.
  • Если у вашей дистрибуции нет пакета «python2-lxc», который является требованием для этого модуля, его можно установить из исходного кода по адресу «https://github.com/lxc/python2-lxc» или установить через pip с именем пакета lxc-python2.

Примеры

- 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
сложное
успех
информация о контейнере

archive
строка
успех, когда archive = true
результат состояния контейнера

Пример:
/tmp/test-container-config.tar
clone
boolean
успех, когда clone_name указан
был ли контейнер клонирован

Пример:
True
init_pid
целое число
успех
PID процесса lxc init

Пример:
19786
interfaces
список / элементы=строка
успех
список сетевых интерфейсов контейнера

Пример:
['eth0', 'lo']
ips
список / элементы=строка
успех
список IP-адресов

Пример:
['10.0.3.3']
name
строка
успех
имя контейнера lxc

Пример:
test_host
state
строка
успех
результирующее состояние контейнера

Пример:
запущен


Авторы

  • Kevin Carter (@cloudnull)

© 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

Spec-Zone.ru

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