Spec-Zone.ru › Ansible

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

Примечание

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

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

Параметры

Параметр

Комментарии

archive

boolean

Создать архив контейнера.

Это создаст архивный файл работающего контейнера.

Варианты:

  • false ← (default)
  • true

archive_compression

string

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

Варианты:

  • "gzip" ← (default)
  • "bzip2"
  • "none"

archive_path

path

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

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

backing_store

string

Тип хранилища для контейнера.

Варианты:

  • "dir" ← (default)
  • "lvm"
  • "loop"
  • "btrfs"
  • "overlayfs"
  • "zfs"

clone_name

string

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

Используется только когда state — clone.

clone_snapshot

boolean

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

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

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

Варианты:

  • false ← (default)
  • true

config

path

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

container_command

string

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

container_config

list / elements=string

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

container_log

boolean

Включить лог контейнера для действий хоста в контейнере.

Варианты:

  • false ← (default)
  • true

container_log_level

string

Установить уровень логирования для контейнера, где была установлена container_log.

Варианты:

  • "Info"
  • "info"
  • "INFO" ← (default)
  • "Error"
  • "error"
  • "ERROR"
  • "Debug"
  • "debug"
  • "DEBUG"

directory

path

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

fs_size

string

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

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

fs_type

string

Создать fstype TYPE.

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

lv_name

string

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

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

lxc_path

path

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

name

string / required

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

state

string

Определить состояние контейнера.

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

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

Варианты:

  • "started" ← (default)
  • "stopped"
  • "restarted"
  • "absent"
  • "frozen"
  • "clone"

template

string

Имя шаблона для использования при создании LXC.

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

template_options

string

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

thinpool

string

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

vg_name

string

Если хранилище-бэкенд — lvm, укажите имя группы томов.

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

zfs_root

string

Создать zfs под заданным zfsroot.

Атрибуты

Атрибут

Поддержка

Описание

check_mode

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

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

diff_mode

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

Вернёт детали изменений (или, возможно, изменений, которые нужно внести в check_mode), когда используется режим diff.

Примечания

Примечание

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

complex

информация о контейнере

Возвращается: успех

archive

string

результативное состояние контейнера

Возвращается: успех, когда archive — true

Пример: "/tmp/test-container-config.tar"

clone

boolean

если контейнер был клонирован

Возвращается: успех, когда указано clone_name

Пример: true

init_pid

integer

pid процесса lxc init

Возвращается: успех

Пример: 19786

interfaces

list / elements=string

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

Возвращается: успех

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

ips

list / elements=string

список ip-адресов

Возвращается: успех

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

name

string

имя контейнера lxc

Возвращается: успех

Пример: "test_host"

state

string

результативное состояние контейнера

Возвращается: успех

Пример: "running"

Авторы

  • Кевин Картер (@cloudnull)

Ссылки на сборку

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

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

Spec-Zone.ru

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