LINUX.ORG.RU

Автодеплой KVM+libvirt виртуалок

 , ,


1

3

На домашней машинке решил поиграться с автоматизацией деплоя. Какие инструменты используются для KVM+libvirt связки? Раньше все ручками делал. В курсе про такие штуки как pxe,preseed/kickstart, немножко ковырял ansible. Но хотелось бы бест практисов каких нибудь.


Какие инструменты используются для KVM+libvirt связки?

Копировать готовый образ при помощи cp, либо qemu-img create -o backing_file=/path/to/base/image.qcow2. Ну а далее уже ansible, salt, pupper, chef, и так далее по вкусу.

Для более сложных вещей можно взять что-нибудь для автоматизации этого всего (запуска виртуалок). Хоть даже OpenStack. Но внутри там всё равно будет cp и qemu-img в том или ином виде под толстым слоем обёрток и абстракций.

ИМХО нет смысла использовать PXE/kickstart именно для виртуалок. Но есть очень хочется - смотри Cobbler.

Deleted ()

ну лично у нас на фирме ansible для создания вируалки, дальше cobbler отдает ей кикстарт и там все разворачиваться и опять же в конце ansible создает пользователей, ложит ключи и т.д. и выполняет свои роли которые ему указал.

Novell-ch ★★★★★ ()
Ответ на: комментарий от Deleted

ИМХО нет смысла использовать PXE/kickstart именно для виртуалок.

Есть нюанс - virt-install -i не пашет с uefi

dyasny ★★★★★ ()
Ответ на: комментарий от Deleted

В догонку про тулзы...

Забыл сказать: для создания самого первого образа с некоторыми базовыми настройками (например .ssh/authorized_keys или настроенным salt-minion) можно использовать packer.

Deleted ()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от dyasny

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

N-N ()
Ответ на: комментарий от N-N

я бы взял готовое, например infrared - отлично разворачивает виртуалки по настройкам, сети и т.д. Если хочется учиться, то для начала разобраться с libvirt и тулсетом virt-*, потом поиграться в то же самое но с ansible или puppet (хинт - там возможностей меньше, и все равно часто приходится тупо запускать шелл с virt-*)

dyasny ★★★★★ ()
Ответ на: комментарий от Deleted

Спасибо, про шаблон понял. А если использовать не qcow, а lvm raw? И еще вопрос - вот есть у меня шаблон, как мне изменять/задавать настройки индивидуальные для каждого хоста тем же ансиблом например? Извиняюсь, если задаю тупые вопросы, но я пока не представляю как это делается и на каком этапе.

N-N ()
Ответ на: комментарий от dyasny

а можно подробнее? просто интересно

Мне нужно было сделать тулзу, на вход которой подаётся кривой рутфс в тарболле плюс некие параметры, а на выходе должен получаться образ в ceph/rbd, пригодный для использования опенстеком. Получилось это сделать при помощи обёртки на питоне, которая генерирует конфиги и скрипты для пакера, а потом запускает его с правильными опциями. Может можно и без пакера такое провернуть, но я не придумал как.

Deleted ()
Ответ на: комментарий от dyasny

Спасибо, поставил libguestfs-tools. Буду разбираться. Как я понял как раз с помощью этих тулзов можно вносить изменения в образы.

N-N ()
Ответ на: комментарий от Deleted

упаковки рутфс это конечно жЭсть :) Но я понял идею, мне никогда не приходилось иметь дело с именно такой задачей, когда-то давно пилил eDeploy, который работал на стыке pxe/debootstrap и пихания модифицированных рутфс-ов по сети на ноды, но не более того, модификации происходили позже, паппетом.

dyasny ★★★★★ ()
Ответ на: В догонку про тулзы... от Deleted

Забыл сказать: для создания самого первого образа с некоторыми базовыми настройками (например .ssh/authorized_keys или настроенным salt-minion) можно использовать packer.

и давно ты его используешь?

ktk ★★★★ ()

Еще вопрос возник. Как вообще принято конфигурировать сеть на множестве виртуалкок? Вот хочу я развернуть очередную виртуалку с помощью ansible. Я слепил минимально настроенный для этого шаблон, получающий адрес по dhcp и с настроенным по ключам sshd чтобы ансибл смог подключиться.

Я пока вижу 4 способа:

1. libvirt default network со встроенным dhcp сервером

2. бридж с использованием внешнего dhcp сервера

3. бридж со статическими адресами (правка /etc/network/inerfaces перед запуском виртуалки и плейбука)

Я для серверов всегда статику прописывал поэтому склоняюсь к третьему варианту. Вопрос - как правильно? Стоит или заморачиваться с virt-edit(пока не допер как несколько строк добавить) и тому подобным? Может есть вообще что-то другое?

N-N ()
Ответ на: комментарий от N-N

Хотя может и не угадал. Не пойму как все это в скрипт запихать тогда. Ведь на консоли авторизоваться надо еще. Пароль в скрипте хранить? Не, чето не то.

N-N ()
Ответ на: комментарий от N-N

Вроде получилось редактировать файлы в виртуалке с помощью guestfish в скрипте. То есть по идее третий вариант должен работать.

Буду благодарен если у кого есть что добавить. Не обязательно тыкать носом, я это и сам не приветствую, но можно поконкретней. Насчет virsh имелось ввиду редактирование xml конфига сети?

И вообще может я тут костыляю не по детски, поэтому интересуют бест практис.

N-N ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.