Spec-Zone.ru › Ansible

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

Архитектура экземпляра (например, x86_64 или i686). См. https://documentation.ubuntu.com/lxd/en/latest/api/#/instances/instance_get.

client_cert

aliases: cert_file

path

Путь к файлу клиентского сертификата.

Если не указан, по умолчанию используется ${HOME}/.config/lxc/client.crt.

client_key

aliases: key_file

path

Путь к файлу ключа клиентского сертификата.

Если не указан, по умолчанию используется ${HOME}/.config/lxc/client.key.

config

dictionary

Конфигурация экземпляра (например, {"limits.cpu": "2"}). См. 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.

Ключи, начинающиеся с volatile., игнорируются при этом сравнении, когда ignore_volatile_options=true.

devices

dictionary

Устройства для экземпляра (например, { "rootfs": { "path": "/dev/kvm", "type": "unix-char" }}). См. https://documentation.ubuntu.com/lxd/en/latest/api/#/instances/instance_get.

ephemeral

boolean

Является ли экземпляр эфемерным (например, true или false). См. https://documentation.ubuntu.com/lxd/en/latest/api/#/instances/instance_get.

Варианты:

  • false
  • true

force_stop

boolean

Если это true, lxd_container принудительно останавливает экземпляр при его остановке или перезапуске.

Варианты:

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

ignore_volatile_options

boolean

добавлено в community.general 3.7.0

Если установлено в true, параметры, начинающиеся с volatile., игнорируются. В результате они применяются повторно для каждого выполнения.

Это поведение по умолчанию можно изменить, установив этот параметр в false.

Значение по умолчанию изменилось с true на false в community.general 6.0.0.

Варианты:

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

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.

По умолчанию: "unix:/var/snap/lxd/common/lxd/unix.socket"

source

dictionary

Источник для экземпляра (например, { "type": "image", "mode": "pull", "server": "https://cloud-images.ubuntu.com/releases/", "protocol": "simplestreams", "alias": "22.04" }).

См. https://documentation.ubuntu.com/lxd/en/latest/api/ для полной документации по API.

Обратите внимание, что protocol принимает два варианта: lxd или simplestreams.

state

string

Определяет состояние экземпляра.

Варианты:

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

target

string

добавлено в community.general 1.0.0

Для кластерных развертываний. Будет пытаться создать экземпляр на целевом узле. Если экземпляр существует где-то еще в кластере, он не будет заменен или перемещен. Имя должно соответствовать имени узла, которое вы видите в lxc cluster list.

timeout

integer

Таймаут для изменения состояния экземпляра.

Он также используется в качестве таймаута для ожидания, пока IPv4-адреса не будут установлены для всех сетевых интерфейсов в экземпляре после запуска или перезапуска.

По умолчанию: 30

trust_password

string

Защищенный пароль клиента.

Вам необходимо установить этот пароль на сервере LXD перед запуском данного модуля, используя следующую команду: lxc config set core.trust_password <some random password>. См. https://www.stgraber.org/2016/04/18/lxd-api-direct-interaction/.

Если trust_password задан, этот модуль отправляет запрос для аутентификации перед отправкой любых запросов.

type

string

добавлен в community.general 4.1.0

Тип экземпляра может быть либо virtual-machine либо container.

Выбор:

  • "container" ← (по умолчанию)
  • "virtual-machine"

url

string

Путь сокета unix-домена или URL https для сервера LXD.

По умолчанию: "unix:/var/lib/lxd/unix.socket"

wait_for_container

boolean

добавлен в community.general 4.4.0

Если установлено значение true, задачи будут ожидать, пока задача не сообщит об успешном выполнении операций с контейнерами.

Выбор:

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

wait_for_ipv4_addresses

boolean

Если значение true, lxd_container ожидает, пока IPv4 адреса будут заданы всем сетевым интерфейсам в экземпляре после запуска или перезапуска.

Выбор:

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

Атрибуты

Атрибут

Поддержка

Описание

check_mode

Поддержка: полная

добавлен в community.general 6.4.0

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

diff_mode

Поддержка: полная

добавлен в community.general 6.4.0

Возвращает подробности о том, что изменилось (или, возможно, нуждается в изменении в check_mode) в режиме сравнения.

Примечания

Примечание

  • Экземпляры могут быть контейнером или виртуальной машиной, оба должны иметь уникальное имя. Если вы попытаетесь создать экземпляр с именем, которое уже существует в пространстве имен пользователя, модуль просто вернет «без изменений».
  • Существует два способа выполнения команд внутри контейнера или виртуальной машины: использование модуля команд или использование плагина подключения 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

Пример: ["create", "start"]

addresses

словарь

Сопоставление имени сетевого устройства со списком IPv4-адресов в экземпляре.

Возвращается: при состоянии started или restarted

Пример: {"eth0": ["10.155.92.191"]}

logs

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

Журналы запросов и ответов.

Возвращается: при вызове ansible-playbook с параметром -vvvv.

Пример: ["(too long to be placed here)"]

old_state

строка

Предыдущее состояние экземпляра.

Возвращается: при состоянии started или restarted

Пример: "stopped"

Авторы

  • Hiroaki Nakamura (@hnakamur)

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

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

© 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

Spec-Zone.ru

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