ahnooie.lxd-container

Роль Ansible для контейнеров LXD

Эта роль управляет контейнерами LXD/LXC на удаленном хосте Linux. https://www.ubuntu.com/containers/lxd

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

Требования

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

  • LXD должен быть заранее настроен на удаленном хосте с помощью команды sudo lxd init или с использованием роли Ansible, такой как juju4/lxd

  • Чтобы 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 (может работать и с другими дистрибутивами)

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

Эти переменные задокументированы здесь: http://docs.ansible.com/ansible/latest/lxd_container_module.html

  • state: started (по умолчанию), stopped, restarted, absent, frozen
  • type: image (по умолчанию)
  • mode: pull (по умолчанию)
  • server: https://images.linuxcontainers.org (по умолчанию)
  • protocol: lxd (по умолчанию)
  • alias: ubuntu/xenial/amd64 (по умолчанию)
  • wait_for_ipv4_addresses: true (по умолчанию)
  • timeout: 600 (по умолчанию)

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

  • public_key: "{{ lookup('file','~/.ssh/id_rsa.pub') }}" (по умолчанию) - путь к публичному SSH ключу для установки в контейнер
  • enable_ssh: true (по умолчанию) - устанавливает и включает сервер openssh в контейнере.
  • lxd_host: ваш хост контейнера lxd

Зависимости

Нет

Установка

$ ansible-galaxy install ahnooie.lxd-container

Пример

Следующий пример установит 6 контейнеров с различными дистрибутивами Linux на хосте LXD lxd4.example.com; и на каждом хосте установит Python, добавит публичный SSH ключ для пользователя root, установит и запустит сервис sshd.

Пример файла инвентаризации

# Удаленный LXD хост
[lxd]
lxd4.example.com ansible_user=root

# Контейнеры на LXD хостах
[linux-containers]
ubuntu01.example.com ansible_host=lxd4:ubuntu01 alias=ubuntu/xenial/amd64
centos01.example.com ansible_host=lxd4:centos01 alias=centos/7/amd64
centos02.example.com ansible_host=lxd4:centos02 alias=centos/6/amd64
debian01.example.com ansible_host=lxd4:debian01 alias=debian/stretch/amd64
fedora01.example.com ansible_host=lxd4:fedora01 alias=fedora/27/amd64

[linux-containers:vars]
ansible_connection=lxd
lxd_host=lxd4.example.com

Пример плейбука containers.yml

---
- hosts: linux-containers
  gather_facts: false
  vars:
    public_key: "{{ lookup('file','public_keys/id_rsa.pub') }}"
  roles:
  - ahnooie.lxd-container

Пример команды плейбука

$ ansible-playbook -i inventory containers.yml

Лицензия

MIT

Информация об авторе

Создано Бенджамином Брайаном

О проекте

Manage LXD Containers

Установить
ansible-galaxy install ahnooie.lxd-container
Лицензия
mit
Загрузки
206
Владелец