community.general.lxd_container модуль — Управление экземплярами LXD
Примечание
Этот модуль является частью коллекции community.general (версия 9.5.0).
У вас, возможно, уже установлена эта коллекция, если вы используете пакет ansible. Она не включена в ansible-core. Чтобы проверить установку, выполните ansible-galaxy collection list.
Для установки используйте: ansible-galaxy collection install community.general.
Чтобы использовать его в playbook, укажите: community.general.lxd_container.
Обзор
- Управление контейнерами и виртуальными машинами LXD.
Параметры
Параметр | Комментарии |
|---|---|
architecture string | Архитектура экземпляра (например, |
client_cert aliases: cert_file path | Путь к файлу клиентского сертификата. Если не указан, по умолчанию используется |
client_key aliases: key_file path | Путь к файлу ключа клиентского сертификата. Если не указан, по умолчанию используется |
config dictionary | Конфигурация экземпляра (например, Если экземпляр уже существует и его значения «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 | Устройства для экземпляра (например, |
ephemeral boolean | Является ли экземпляр эфемерным (например, Варианты:
|
force_stop boolean | Если это Варианты:
|
ignore_volatile_options boolean добавлено в community.general 3.7.0 | Если установлено в Это поведение по умолчанию можно изменить, установив этот параметр в Значение по умолчанию изменилось с Варианты:
|
name string / required | Имя экземпляра. |
profiles list / elements=string | Профиль, используемый экземпляром. |
project string добавлено в community.general 4.8.0 | Проект экземпляра. См. https://documentation.ubuntu.com/lxd/en/latest/projects/. |
snap_url string | Путь сокета домена Unix, когда LXD установлен с помощью менеджера пакетов snap. По умолчанию: |
source dictionary | Источник для экземпляра (например, См. https://documentation.ubuntu.com/lxd/en/latest/api/ для полной документации по 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 | Возвращает подробности о том, что изменилось (или, возможно, нуждается в изменении в |
Примечания
Примечание
- Экземпляры могут быть контейнером или виртуальной машиной, оба должны иметь уникальное имя. Если вы попытаетесь создать экземпляр с именем, которое уже существует в пространстве имен пользователя, модуль просто вернет «без изменений».
- Существует два способа выполнения команд внутри контейнера или виртуальной машины: использование модуля команд или использование плагина подключения ansible lxd, интегрированного в Ansible >= 2.1. Последний требует установки Python в экземпляре, что можно сделать с помощью модуля команд.
- Вы можете скопировать файл с хоста в экземпляр с помощью модулей Ansible ansible.builtin.copy и ansible.builtin.template и плагина подключения community.general.lxd. См. пример ниже.
- Вы можете скопировать файл из созданного экземпляра на локальный хост с помощью
command=lxc file pull instance_name/dir/filename filename. См. первый пример ниже. - linuxcontainers.org прекратил поддержку LXC/LXD в марте 2024 года (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 список / элементы=строка | Список выполненных действий для экземпляра. Возвращается: success Пример: |
addresses словарь | Сопоставление имени сетевого устройства со списком IPv4-адресов в экземпляре. Возвращается: при состоянии started или restarted Пример: |
logs список / элементы=строка | Журналы запросов и ответов. Возвращается: при вызове ansible-playbook с параметром -vvvv. Пример: |
old_state строка | Предыдущее состояние экземпляра. Возвращается: при состоянии started или restarted Пример: |
Ссылки на коллекцию
© 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/lxd_container_module.html