lxd_container — Управление контейнерами LXD
Новое в версии 2.2.
Обзор
- Управление контейнерами LXD
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| architecture | Архитектура контейнера (например, "x86_64" или "i686"). См. https://github.com/lxc/lxd/blob/master/doc/rest-api.md#post-1
| |
| cert_file | Значение по умолчанию: "\"{}/.config/lxc/client.crt\" .format(os.environ[\"HOME\"])" | Путь к файлу сертификата клиента. |
| config | Настройка контейнера (например, {"limits.cpu": "2"}). См. https://github.com/lxc/lxd/blob/master/doc/rest-api.md#post-1
Если контейнер уже существует, и значение "config" в метаданных, полученных из GET /1.0/containers/<name> https://github.com/lxc/lxd/blob/master/doc/rest-api.md#10containersname, отличаются, этот модуль пытается применить настройки. Ключи, начинающиеся с 'volatile.', игнорируются при этом сравнении. Не все значения конфигурации поддерживаются для применения к существующему контейнеру. Возможно, потребуется удалить и воссоздать контейнер. | |
| devices | Устройства для контейнера (например, { "rootfs": { "path": "/dev/kvm", "type": "unix-char" }). См. https://github.com/lxc/lxd/blob/master/doc/rest-api.md#post-1
| |
| ephemeral | Является ли контейнер временным (например, true или false). См. https://github.com/lxc/lxd/blob/master/doc/rest-api.md#post-1
| |
| force_stop | Значение по умолчанию: "no" | Если значение true, модуль lxd_container принудительно останавливает контейнер при остановке или перезапуске контейнера. |
| key_file | Значение по умолчанию: "\"{}/.config/lxc/client.key\" .format(os.environ[\"HOME\"])" | Путь к файлу ключа сертификата клиента. |
| name обязательно | Имя контейнера. | |
| source | Источник контейнера (например, { "type": "image", "mode": "pull", "server": "https://images.linuxcontainers.org", "protocol": "lxd", "alias": "ubuntu/xenial/amd64" }). См. https://github.com/lxc/lxd/blob/master/doc/rest-api.md#post-1
| |
| state |
| Определяет состояние контейнера. |
| timeout | Значение по умолчанию: 30 | Таймаут для изменения состояния контейнера. Также используется как таймаут ожидания установки IPv4-адресов на все сетевые интерфейсы в контейнере после запуска или перезапуска. |
| trust_password | Защищённый пароль клиента. Вам необходимо установить этот пароль на сервере LXD перед запуском этого модуля с помощью следующей команды. lxc config set core.trust_password <some random password> См. https://www.stgraber.org/2016/04/18/lxd-api-direct-interaction/
Если trust_password задан, этот модуль отправляет запрос для аутентификации перед отправкой любых запросов. | |
| url | Значение по умолчанию: "unix:/var/lib/lxd/unix.socket" | Путь к сокету Unix-домена или HTTPS-адрес сервера LXD. |
| wait_for_ipv4_addresses | Значение по умолчанию: "no" | Если значение true, модуль lxd_container ожидает, пока IPv4-адреса будут установлены на все сетевые интерфейсы в контейнере после запуска или перезапуска. |
Примечания
Примечание
- Контейнеры должны иметь уникальное имя. Если вы попытаетесь создать контейнер с именем, которое уже существует в пространстве имен пользователя, модуль просто вернёт «без изменений».
- Существует два способа запуска команд в контейнерах: с помощью модуля команд или с помощью плагина подключения Ansible lxd, включенного в Ansible ≥ 2.1. Последний требует установки Python в контейнере, что можно сделать с помощью модуля команд.
- Вы можете копировать файлы с хоста в контейнер с помощью модулей Ansible copy и template, а также плагина подключения
lxd. См. примеры ниже. - Вы можете скопировать файл из созданного контейнера на хост с помощью
command=lxc file pull container_name/dir/filename filename. См. первый пример ниже.
Примеры
# An example for creating a Ubuntu container and install python
- hosts: localhost
connection: local
tasks:
- name: Create a started container
lxd_container:
name: mycontainer
state: started
source:
type: image
mode: pull
server: https://images.linuxcontainers.org
protocol: lxd
alias: ubuntu/xenial/amd64
profiles: ["default"]
wait_for_ipv4_addresses: true
timeout: 600
- name: check python is installed in container
delegate_to: mycontainer
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
raw: apt-get install -y python
when: python_install_check.rc == 1
# An example for deleting a container
- hosts: localhost
connection: local
tasks:
- name: Delete a container
lxd_container:
name: mycontainer
state: absent
# An example for restarting a container
- hosts: localhost
connection: local
tasks:
- name: Restart a container
lxd_container:
name: mycontainer
state: restarted
# An example for restarting a container using https to connect to the LXD server
- hosts: localhost
connection: local
tasks:
- name: Restart a container
lxd_container:
url: https://127.0.0.1:8443
# These cert_file and key_file values are equal to the default values.
#cert_file: "{{ lookup('env', 'HOME') }}/.config/lxc/client.crt"
#key_file: "{{ 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"
fetch:
src: /etc/hosts
dest: /tmp/mycontainer-hosts
flat: true
Возвращаемые значения
Общие возвращаемые значения описаны здесь, следующие — поля, уникальные для этого модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| actions список | успешно | Список выполненных действий для контейнера. Пример: ["create", "start"] |
| addresses словарь | при state = started или restarted | Сопоставление имени сетевого устройства со списком IPv4-адресов в контейнере Пример: {'eth0': ['10.155.92.191']} |
| logs список | при вызове ansible-playbook с -vvvv. | Логи запросов и ответов. Пример: (слишком длинный для размещения здесь) |
| old_state строка | при state = started или restarted | Предыдущее состояние контейнера Пример: stopped |
Статус
Этот модуль помечен как превью, что означает отсутствие гарантии обратной совместимости интерфейса.
Техническое обслуживание
Этот модуль помечен как сообщество, что означает, что он поддерживается сообществом Ansible. См. Техническое обслуживание и поддержка модулей для получения дополнительной информации.
Список других модулей, также поддерживаемых сообществом Ansible, см. здесь.
Автор
- Hiroaki Nakamura (@hnakamur)
Подсказка
Если вы заметили какие-либо проблемы в этой документации, вы можете отредактировать этот документ для улучшения.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.6/modules/lxd_container_module.html