Модуль community.general.lxd_container — управление экземплярами LXD
Примечание
Этот модуль входит в коллекцию community.general (версия 12.6.1).
Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не входит в ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.
Чтобы установить её, используйте: ansible-galaxy collection install community.general.
Чтобы использовать её в плейбуке, укажите: community.general.lxd_container.
Краткое описание
- Управление контейнерами и виртуальными машинами LXD.
Параметры
Параметр | Комментарии |
|---|---|
architecture string | Архитектура экземпляра (например, См. https://documentation.ubuntu.com/lxd/en/latest/api/#/instances/instance_get. |
client_cert псевдонимы: cert_file path | Путь к файлу сертификата клиента. Если не указан, используется значение по умолчанию |
client_key псевдонимы: key_file path | Путь к файлу ключа сертификата клиента. Если не указан, используется значение по умолчанию |
config dictionary | Конфигурация экземпляра (например, Все значения в См. https://documentation.ubuntu.com/lxd/en/latest/api/#/instances/instance_get. Если экземпляр уже существует и значения «config» в метаданных, полученных из API LXD https://documentation.ubuntu.com/lxd/en/latest/api/#/instances/instance_get, отличаются, модуль попытается применить конфигурацию https://documentation.ubuntu.com/lxd/en/latest/api/#/instances/instance_put. Ключи, начинающиеся с |
devices dictionary | Устройства экземпляра (например, См. https://documentation.ubuntu.com/lxd/en/latest/api/#/instances/instance_get. |
ephemeral boolean | Является ли экземпляр временным (например, См. https://documentation.ubuntu.com/lxd/en/latest/api/#/instances/instance_get. Варианты:
|
force_stop boolean | Если установлено значение Варианты:
|
ignore_volatile_options boolean добавлено в community.general 3.7.0 | Если установлено значение Это поведение по умолчанию можно изменить, установив для этого параметра значение В community.general 6.0.0 значение по умолчанию изменено с Варианты:
|
name string / обязательный | Имя экземпляра. |
profiles list / элементы=string | Профиль, используемый экземпляром. |
project string добавлено в community.general 4.8.0 | Проект экземпляра. См. https://documentation.ubuntu.com/lxd/en/latest/projects/. |
snap_url string | Путь к сокету домена Unix, если LXD установлен с помощью менеджера пакетов snap. По умолчанию: |
source dictionary | Источник экземпляра (например, Полную документацию API см. на странице https://documentation.ubuntu.com/lxd/en/latest/api/. Обратите внимание, что |
state string | Задаёт состояние экземпляра. Варианты:
|
target string добавлено в community.general 1.0.0 | Для кластерных развёртываний. Модуль пытается создать экземпляр на целевом узле. Если экземпляр уже существует в другом месте кластера, он не заменяется и не перемещается. Имя должно совпадать с именем узла, отображаемым в |
timeout integer | Время ожидания изменения состояния экземпляра. Это значение также используется как время ожидания назначения IPv4-адресов всем сетевым интерфейсам экземпляра после запуска или перезапуска. По умолчанию: |
trust_password string | Пароль доверенного клиента. Перед запуском этого модуля необходимо задать этот пароль на сервере LXD с помощью следующей команды: Если задан trust_password, модуль отправляет запрос аутентификации перед отправкой любых других запросов. |
type string добавлено в community.general 4.1.0 | Тип экземпляра: Варианты:
|
url string | Путь к сокету домена Unix или URL-адрес https сервера LXD. По умолчанию: |
wait_for_container boolean добавлено в community.general 4.4.0 | Если установлено значение Варианты:
|
wait_for_ipv4_addresses boolean | Если установлено значение Варианты:
|
Атрибуты
Атрибут | Поддержка | Описание |
|---|---|---|
check_mode | Поддержка: полная добавлено в community.general 6.4.0 | Может работать в |
diff_mode | Поддержка: полная добавлено в community.general 6.4.0 | В режиме diff возвращает сведения об изменениях (или о том, что может потребоваться изменить в |
Примечания
Примечание
- Экземпляры могут быть контейнерами или виртуальными машинами; каждый из них должен иметь уникальное имя. Если попытаться создать экземпляр с именем, уже существующим в пространстве имён пользователя, модуль просто вернёт статус «без изменений».
- Есть два способа выполнять команды внутри контейнера или виртуальной машины: использовать модуль command или плагин подключения ansible lxd, входящий в Ansible >= 2.1. Для последнего требуется, чтобы в экземпляре был установлен Python; это можно сделать с помощью модуля command.
- Скопировать файл с хоста в экземпляр можно с помощью модулей Ansible ansible.builtin.copy и ansible.builtin.template, а также плагина подключения community.general.lxd. См. пример ниже.
- Скопировать файл из созданного экземпляра на локальный хост можно с помощью
command=lxc file pull instance_name/dir/filename filename. См. первый пример ниже. - В марте 2024 года Linuxcontainers.org прекратил поддержку LXC/LXD (https://discuss.linuxcontainers.org/t/important-notice-for-lxd-users-image-server/18479). Сейчас образы по-прежнему предоставляет только Ubuntu.
Примеры
# An example for creating a Ubuntu container and install python
- hosts: localhost
connection: local
tasks:
- name: Create a started container
community.general.lxd_container:
name: mycontainer
ignore_volatile_options: true
state: started
source:
type: image
mode: pull
server: https://cloud-images.ubuntu.com/releases/
protocol: simplestreams
alias: "22.04"
profiles: ["default"]
wait_for_ipv4_addresses: true
timeout: 600
- name: Check python is installed in container
delegate_to: mycontainer
ansible.builtin.raw: dpkg -s python
register: python_install_check
failed_when: python_install_check.rc not in [0, 1]
changed_when: false
- name: Install python in container
delegate_to: mycontainer
ansible.builtin.raw: apt-get install -y python
when: python_install_check.rc == 1
# An example for creating an Ubuntu 14.04 container using an image fingerprint.
# This requires changing 'server' and 'protocol' key values, replacing the
# 'alias' key with with 'fingerprint' and supplying an appropriate value that
# matches the container image you wish to use.
- hosts: localhost
connection: local
tasks:
- name: Create a started container
community.general.lxd_container:
name: mycontainer
ignore_volatile_options: true
state: started
source:
type: image
mode: pull
# Provides current (and older) Ubuntu images with listed fingerprints
server: https://cloud-images.ubuntu.com/releases
# Protocol used by 'ubuntu' remote (as shown by 'lxc remote list')
protocol: simplestreams
# This provides an Ubuntu 14.04 LTS amd64 image from 20150814.
fingerprint: e9a8bdfab6dc
profiles: ["default"]
wait_for_ipv4_addresses: true
timeout: 600
# An example of creating a ubuntu-minial container
- hosts: localhost
connection: local
tasks:
- name: Create a started container
community.general.lxd_container:
name: mycontainer
ignore_volatile_options: true
state: started
source:
type: image
mode: pull
# Provides Ubuntu minimal images
server: https://cloud-images.ubuntu.com/minimal/releases/
protocol: simplestreams
alias: "22.04"
profiles: ["default"]
wait_for_ipv4_addresses: true
timeout: 600
# An example for creating container in project other than default
- hosts: localhost
connection: local
tasks:
- name: Create a started container in project mytestproject
community.general.lxd_container:
name: mycontainer
project: mytestproject
ignore_volatile_options: true
state: started
source:
protocol: simplestreams
type: image
mode: pull
server: https://cloud-images.ubuntu.com/releases/
alias: "22.04"
profiles: ["default"]
wait_for_ipv4_addresses: true
timeout: 600
# An example for deleting a container
- hosts: localhost
connection: local
tasks:
- name: Delete a container
community.general.lxd_container:
name: mycontainer
state: absent
type: container
# An example for restarting a container
- hosts: localhost
connection: local
tasks:
- name: Restart a container
community.general.lxd_container:
name: mycontainer
state: restarted
type: container
# An example for restarting a container using https to connect to the LXD server
- hosts: localhost
connection: local
tasks:
- name: Restart a container
community.general.lxd_container:
url: https://127.0.0.1:8443
# These client_cert and client_key values are equal to the default values.
# client_cert: "{{ lookup('env', 'HOME') }}/.config/lxc/client.crt"
# client_key: "{{ lookup('env', 'HOME') }}/.config/lxc/client.key"
trust_password: mypassword
name: mycontainer
state: restarted
# Note your container must be in the inventory for the below example.
#
# [containers]
# mycontainer ansible_connection=lxd
#
- hosts:
- mycontainer
tasks:
- name: Copy /etc/hosts in the created container to localhost with name "mycontainer-hosts"
ansible.builtin.fetch:
src: /etc/hosts
dest: /tmp/mycontainer-hosts
flat: true
# An example for LXD cluster deployments. This example will create two new container on specific
# nodes - 'node01' and 'node02'. In 'target:', 'node01' and 'node02' are names of LXD cluster
# members that LXD cluster recognizes, not ansible inventory names, see: 'lxc cluster list'.
# LXD API calls can be made to any LXD member, in this example, we send API requests to
# 'node01.example.com', which matches ansible inventory name.
- hosts: node01.example.com
tasks:
- name: Create LXD container
community.general.lxd_container:
name: new-container-1
ignore_volatile_options: true
state: started
source:
type: image
mode: pull
alias: "22.04"
target: node01
- name: Create container on another node
community.general.lxd_container:
name: new-container-2
ignore_volatile_options: true
state: started
source:
type: image
mode: pull
alias: "22.04"
target: node02
# An example for creating a virtual machine
- hosts: localhost
connection: local
tasks:
- name: Create container on another node
community.general.lxd_container:
name: new-vm-1
type: virtual-machine
state: started
ignore_volatile_options: true
wait_for_ipv4_addresses: true
profiles: ["default"]
source:
protocol: simplestreams
type: image
mode: pull
server: ['...'] # URL to the image server
alias: debian/11
timeout: 600
Возвращаемые значения
Общие возвращаемые значения описаны здесь; ниже перечислены поля, уникальные для этого модуля:
Ключ | Описание |
|---|---|
actions list / элементы=string | Список действий, выполненных для экземпляра. Возвращается: при успешном выполнении Пример: |
addresses dictionary | Соответствие между именем сетевого устройства и списком IPv4-адресов экземпляра. Возвращается: если состояние — started или restarted Пример: |
logs list / элементы=string | Журналы запросов и ответов. Возвращается: если ansible-playbook запущен с параметром -vvvv. Пример: |
old_state string | Предыдущее состояние экземпляра. Возвращается: если состояние — started или restarted Пример: |
Ссылки на коллекцию
© 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/lxd_container_module.html