Spec-Zone.ru › Ansible

Модуль community.general.lxc_container — управление контейнерами LXC

Примечание

Этот модуль входит в коллекцию community.general (версия 12.6.1).

Возможно, эта коллекция уже установлена, если вы используете пакет 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

логическое значение

Если задано значение true, система пытается создать сжатый tar-архив работающего контейнера. Параметр archive поддерживает контейнеры на основе LVM и при создании архива делает снимок работающего контейнера.

Варианты:

  • false ← (по умолчанию)
  • true

archive_compression

строка

Тип сжатия, используемый при создании архива работающего контейнера.

Варианты:

  • "gzip" ← (по умолчанию)
  • "bzip2"
  • "none"

archive_path

путь

Путь для сохранения архива контейнера.

Если путь не существует, метод архивирования пытается его создать.

backing_store

строка

Тип хранилища, используемого контейнером.

Варианты:

  • "dir" ← (по умолчанию)
  • "lvm"
  • "loop"
  • "btrfs"
  • "overlayfs"
  • "zfs"

clone_name

строка

Имя нового клонированного сервера.

Используется только при значении состояния clone.

clone_snapshot

логическое значение

Создать снимок контейнера при клонировании.

Поддерживается не всеми серверными хранилищами контейнеров.

Включение этого параметра может завершиться ошибкой, если базовое хранилище не поддерживает снимки.

Варианты:

  • false ← (по умолчанию)
  • true

config

путь

Путь к файлу конфигурации LXC.

container_command

строка

Выполнить команду внутри контейнера.

Параметр container_command можно использовать с любым состоянием, кроме absent. При использовании с состоянием stopped контейнер started, выполняется команда, а затем контейнер снова stopped. Аналогично, если задано state=stopped и контейнер не существует, сначала он создается, затем started, выполняется команда, а затем stopped. Если использовать в переменной |, в самой переменной можно применять обычный формат сценария. Параметр container_command всегда выполняется от имени bash. При использовании container_command в каталоге /tmp/ создается файл журнала, содержащий как stdout, так и stderr любой выполненной команды.

container_config

список / элементы=строка

Список параметров key=value для настройки контейнера.

container_log

логическое значение

Включить журнал действий узла с контейнером.

Варианты:

  • false ← (по умолчанию)
  • true

container_log_level

строка

Задать уровень ведения журнала контейнера, для которого установлен параметр container_log.

Варианты:

  • "Info"
  • "info"
  • "INFO" ← (по умолчанию)
  • "Error"
  • "error"
  • "ERROR"
  • "Debug"
  • "debug"
  • "DEBUG"

directory

путь

Разместить каталог rootfs в DIR.

fs_size

строка

Размер файловой системы.

По умолчанию: "5G"

fs_type

строка

Создать файловую систему типа TYPE.

По умолчанию: "ext4"

lv_name

строка

Имя логического тома; по умолчанию используется имя контейнера.

Если не указано, по умолчанию используется CONTAINER_NAME.

lxc_path

путь

Разместить контейнер в PATH.

name

строка / обязательный

Имя контейнера.

state

строка

Задать состояние контейнера.

При клонировании контейнера с помощью clone_name новый клонированный контейнер создается в остановленном состоянии.

На время операции клонирования работающий контейнер останавливается, а после завершения клонирования восстанавливается его исходное состояние.

Варианты:

  • "started" ← (по умолчанию)
  • "stopped"
  • "restarted"
  • "absent"
  • "frozen"
  • "clone"

template

строка

Имя шаблона для создания LXC-контейнера.

По умолчанию: "ubuntu"

template_options

строка

Параметры шаблона при создании контейнера.

thinpool

строка

Использовать пул тонких томов LVM с именем TP.

vg_name

строка

Если серверным хранилищем является LVM, укажите имя группы томов.

По умолчанию: "lxc"

zfs_root

строка

Создать ZFS в указанном zfsroot.

Атрибуты

Атрибут

Поддержка

Описание

check_mode

Поддержка: нет

Модуль может работать в режиме check_mode и возвращать прогноз изменения состояния без изменения целевого объекта.

diff_mode

Поддержка: нет

В режиме различий возвращает сведения об изменениях (или возможных изменениях в check_mode).

Примечания

Примечание

  • Имена контейнеров должны быть уникальными. Если вы попытаетесь создать контейнер с именем, уже существующим в пространстве имен пользователя, модуль просто вернет статус «без изменений».
  • Если для вашего дистрибутива нет пакета python3-lxc, необходимого для работы этого модуля, его можно установить из исходного кода по адресу https://github.com/lxc/python3-lxc или установить с помощью pip install 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 it is 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 it is 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

логическое значение

Был ли контейнер клонирован.

Возвращается: при успешном выполнении, если задан clone_name

Пример: true

init_pid

целое число

PID процесса инициализации LXC.

Возвращается: при успешном выполнении

Пример: 19786

interfaces

список / элементы=строка

Список сетевых интерфейсов контейнера.

Возвращается: при успешном выполнении

Пример: ["eth0", "lo"]

ips

список / элементы=строка

Список IP-адресов.

Возвращается: при успешном выполнении

Пример: ["10.0.3.3"]

name

строка

Имя контейнера LXC.

Возвращается: при успешном выполнении

Пример: "test_host"

state

строка

Итоговое состояние контейнера.

Возвращается: при успешном выполнении

Пример: "running"

Авторы

  • Kevin Carter (@cloudnull)

Ссылки на коллекцию

  • Отслеживание проблем
  • Репозиторий (исходный код)
  • Запросить помощь
  • Сообщить об ошибке
  • Предложить новую возможность
  • Связь

© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/community/general/lxc_container_module.html

Spec-Zone.ru

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