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, frozentype: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
Информация об авторе
Создано Бенджамином Брайаном
ansible-galaxy install ahnooie.lxd-container