lxd

ansible-lxd

Статус сборки Galaxy

Эта роль управляет профилями LXD и контейнерами LXD на удалённом сервере LXD. https://linuxcontainers.org/lxd/

Требования

  • Необходимо установить LXD версии 2.0 или выше на хосте LXD и сервере Ansible (по умолчанию он уже установлен на Ubuntu 16.04)

  • LXD должен быть настроен на удалённом хосте с помощью команды sudo lxd init

  • Чтобы Ansible мог удалённо управлять хостом LXD, необходимо заранее выполнить следующие команды:

На удалённом хосте LXD:

$ lxc config set core.https_address [::]:8443
$ lxc config set core.trust_password замените-это-на-безопасный-пароль

На хосте Ansible:

$ lxc config set core.https_address [::]:8443
$ lxc remote add lxd4 lxd4.example.com

(замените lxd4.example.com на имя вашего хоста LXD, 'lxd4' можно назвать как угодно, вам нужно будет сослаться на него в файле инвентаризации)

  • Тестировалось на хосте LXD и хосте Ansible, оба на Ubuntu 16.04 LTS (может работать и на других дистрибутивах)

Переменные роли

Переменные профиля LXD:

  • url: unix:/var/snap/lxd/common/lxd/unix.socket (по умолчанию)
  • state: present (по умолчанию), absent

Переменные контейнеров LXD:

  • url: unix:/var/snap/lxd/common/lxd/unix.socket (по умолчанию)
  • state: started (по умолчанию), stopped, restarted, absent, frozen
  • type: image (по умолчанию)
  • mode: pull (по умолчанию)
  • server: https://cloud-images.ubuntu.com/releases (по умолчанию)
  • protocol: simplestreams (по умолчанию)
  • alias: "16.04" (по умолчанию)
  • architecture: x86_64 (по умолчанию)
  • wait_for_ipv4_addresses: true (по умолчанию)
  • timeout: 600 (по умолчанию)

Эти переменные задокументированы здесь:

Дополнительные переменные:

Значения по умолчанию:

# Профили LXD
lxd_profiles:
  - name: default
    description: "Профиль по умолчанию для LXD"
    status: present

# Контейнеры LXD
LXCs:
  - name: mycontainer
    mode: pull
    server: https://cloud-images.ubuntu.com/releases
    alias: "16.04"
    protocol: simplestreams
    architecture: x86_64
    profile: default
    status: started

Зависимости

Отсутствуют

Пример

Следующий пример настроит профиль по умолчанию для LXD с опцией cloud-init для установки пакетов python и настройки пользователя ansible, а затем установит 2 контейнера на сервере LXD.

  - hosts: all
    roles:
      - ansible-lxd
    vars:
      lxd_profiles:
        - name: default
          description: "Профиль по умолчанию для LXD"
          storage_pool: default
          network: lxdbr0
          cloud_init: |
            #cloud-config
            packages:
              - python
            users:
              - name: ansible
                group: sudo
                shell: /bin/bash
                sudo: ALL=(ALL) NOPASSWD:ALL
                ssh_authorized_keys:
                  - {{ lookup('file', '$HOME/.ssh/id_rsa.pub' ) }}
          status: present

      LXCs:
        - name: MyContainer01
          mode: pull
          server: https://cloud-images.ubuntu.com/releases
          alias: "16.04"
          protocol: simplestreams
          architecture: x86_64
          disk_space: 50GB          # Ограничение по дисковому пространству контейнера
          memory: 2GB               # Ограничение по оперативной памяти контейнера
          storage_pool: default
          network: lxdbr0
          ipv4address: 10.0.0.2     # статический IPv4 адрес согласно подсети lxdbr0
          profile: default
          status: started

        - name: MyContainer02
          mode: pull
          server: https://cloud-images.ubuntu.com/releases
          alias: "16.04"
          protocol: simplestreams
          architecture: x86_64
          disk_space: 50GB          # Ограничение по дисковому пространству контейнера
          memory: 2GB               # Ограничение по оперативной памяти контейнера
          nesting: "true"           # Включение security.nesting для контейнера
          storage_pool: default
          network: lxdbr0
          ipv4address: 10.0.0.3     # статический IPv4 адрес согласно подсети lxdbr0
          profile: default
          status: started

Лицензия

Лицензия GPLv3. См. файл LICENSE для подробностей.

Авторская информация

Hispanico

О проекте

Manage LXD Profile and LXD Containers

Установить
ansible-galaxy install hispanico/ansible-lxd
Лицензия
gpl-3.0
Загрузки
346
Владелец
@openwisp Contributor and @ninuxorg Member