lxd
ansible-lxd
Эта роль управляет профилями 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, frozentype:
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 (по умолчанию)
Эти переменные задокументированы здесь:
- http://docs.ansible.com/ansible/latest/lxd_profile_module.html
- http://docs.ansible.com/ansible/latest/lxd_container_module.html
Дополнительные переменные:
cloud_init:
конфигурация cloud-init (http://cloudinit.readthedocs.io/en/latest/index.html)
Значения по умолчанию:
# Профили 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
ansible-galaxy install hispanico/ansible-lxd