Cloud Init

Cloud-Init и VM

Cloud-Init и VM
Следващата статия говори малко за cloud-init и проблемите, които има, и как отвореният код не означава непременно свобода. Ако искате да използвате cloud-init за конфигуриране на облачни изображения, просто превъртете надолу до точка номер 3.

1. Какво прави?

Някога чудили ли сте се как доставчиците на VPS конфигурират вашите виртуални машини, добавят вашите SSH ключове, създават потребители и инсталират пакети всеки път, когато завъртите нова VM в „облака“? Е, отговорът за повечето доставчици е cloud-init. Повечето операционни системи и дистрибуции доставят изображения на виртуални дискове със съответните им операционни системи, инсталирани в изображението. Инсталацията е много минимална и може да служи като шаблон за основната файлова система на ОС. Поддържащите операционната система също са достатъчно любезни, за да предоставят образ на виртуалния диск за всички различни формати от необработени дискови изображения до qcow2 и дори vmdk, vdi и vhd.

Изображението също има предварително инсталиран един допълнителен пакет, който е cloud-init. Работата на cloud-init е да инициализиране виртуалната машина (обикновено в услуга за облачен хостинг като DigitalOcean, AWS или Azure) разговаря с хостинг доставчика източник на данни и да получите информацията за конфигурацията, която след това използва за конфигуриране на виртуалната машина.

Информацията за конфигурацията може да включва потребителски данни като SSH ключове, име на хост на екземпляра, потребители и пароли, както и всяка друга произволна команда, която потребителят иска да изпълни.

2. Проблемът с Cloud-Init

Cloud-init е чудесен инструмент, ако сте потребител на облак, ако въртите виртуални машини или контейнери и вашият доставчик на облак е достатъчно любезен да ви помоли за конфигуриране в облак, чудесно е! С файл за конфигуриране в облак, известен още като потребителски данни, можете да добавяте потребители, да изпълнявате произволни команди, да инсталирате пакети точно при създаването на виртуалната машина. Процесът може да се повтаря отново и отново, без досадни команди да се въвеждат отново и отново. Скоро имате набор от виртуални машини, всички с идентична конфигурация.

Ако обаче поразровите малко и видите как се прави колбасът, ще започнете да поставяте под въпрос някои аспекти на cloud-init. Например, по подразбиране източникът на данни е като REST крайна точка и те по същество са кодирани твърдо в самия пакет cloud-init. Разбира се, можете сами да настроите източник на данни, но процесът е тромав и отнема много време. Документацията за това е почти несъществуваща.

Официалната документация не е нищо друго освен ръководство на потребителя за крайни потребители, разчитащо на съществуващи облачни услуги. Не ви казва как можете да настроите собствения си източник на данни в облак, в случай че сте предстоящ доставчик. Дори документацията за крайния потребител е лоша и бих препоръчал на хората да използват отличния урок на DigitalOcean вместо това.

За да се влошат нещата, потребителите с лаборатории за виртуализация на дома и малко VPS стартиране трудно се възползват от тези леки облачни изображения. Наистина не можете да стартирате VM от тези шаблони без облак-init източник на данни или някакъв хакер, който е труден за автоматизиране и мащабиране. С други думи, дори не можете да изберете да игнорирате cloud-init, освен ако не искате да създадете свои собствени шаблони.

По класически системен начин той се освобождава от предварително зададените си роли и започва да се забърква с мрежи и други части на операционната система, което отблъсква потребителите. Той се включва в Ubuntu 18.04 сървър ISO, което няма абсолютно никакъв смисъл (поне не за мен).

3. Заобиколно решение за домашните лаборатории

Като се оставят настрана, все още трябва да се справям с cloud-init при ежедневната си употреба. Имам много минимална инсталация на Debian 9 на хардуер x86_64, който използвам като KVM хипервизор. Наистина исках да използвам образите на диска qcow2, които се доставят от Ubuntu и CentOS. Тези образи на дискове имат предварително инсталирана ОС и за да ги използвате, просто трябва:

  1. Копирайте ги като образ на виртуалния твърд диск на вашата виртуална машина.
  2. Преоразмерете виртуалния размер на основната файлова система до желания от вас размер (препоръчва се поне 10 GB). Това няма да увеличи физическия размер на вашата виртуална машина, но образът на диска може да нараства с времето, тъй като виртуалната машина добавя повече данни към нея.
  3. Конфигурирайте виртуалната машина с помощта на cloud-init. Минималното изискване е да зададете парола на root потребител или SSH ключове, но можете да направите почти всичко, което облак-init е способен.

Следват се следните стъпки:

  1. Изтеглете изображението в облака на любимата си операционна система и го запазете в директорията / var / lib / libvirt / boot:
$ cd / var / lib / libvirt / boot
$ curl -O https: // cloud-images.ubuntu.com / xenial / current / xenial-server-cloudimg-
amd64-disk1.img
$ cd / var / lib / libvirt / images
  1. Създайте празен виртуален твърд диск с желания от вас размер и разширете изтегленото изображение qcow2 в него. Харесва ми да съхранявам VM твърдите дискове в / var / lib / libvirt / images / директория, можете да изберете различна директория. Каквото и да изберете, изпълнете командите по-долу в същата директория:
$ qemu-img create -f qcow2 myVM.qcow2 8G ## Създайте твърд диск с
размер на виртуален диск от 8GB
$ virt-resize --expand / dev / sda1 / var / lib / libvirt / boot / xenial-server-
cloudimg-amd64-disk1.img
./ myVM.qcow2
  1. Създаване на облачни инициализиращи файлове. Това са файлове с потребителски данни и метаданни:
$ vim мета-данни
instance-id: myVM
local-hostname: myVM

$ vim потребителски данни
# cloud-config
потребители:
- име: корен
chpasswd:
списък: |
корен: myPassword
изтича: False

Единственият потребител, който имам тук, е основният потребител. Ако не споменете нито един потребител, тогава потребителят по подразбиране с име ubuntu се създава. Потребителското име по подразбиране се различава от една операционна система до друга, поради което препоръчвам да посочите потребител, дори и да е справедлив корен. Следващата част от файла с потребителски данни казва на cloud-init да конфигурира паролата за всички потребители, на които искате да зададете парола. Отново просто настройвам паролата за само потребител на root и е така myPassword. Уверете се, че няма разстояние между двоеточието и низа на паролата.

Още по-добре, можете да използвате SSH-ключове, вместо да имате твърдо кодирани пароли.

$ vim потребителски данни
# cloud-config
потребители:
- име: корен
ssh_pwauth: Вярно
ssh_authorized_keys:
- ssh-rsa
  1. Вградете потребителските данни и файловете с мета данни в iso.
$ genisoimage -изход cidata-myVM.iso -volid cidata -joliet -rock meta-data user-data

Уверете се, че файлът cidata-myVM.iso се намира в / var / lib / libvirt / images /

  1. Отидете в директорията / var / lib / libvirt / images и инициализирайте VM с командата virt-install: $ virt-install --import --name myVM --memory 2048 --vcpus 2 --cpu host
    --диск myVM.qcow2, format = qcow2, bus = virtio --disk myVM-cidata.iso, устройство = cdrom
    --мрежов мост = virbr0, модел = virtio --os-type = linux
    --os-variant = ubuntu16.04 --noautoconsole

    Вече можете да опитате да влезете във виртуалната машина, като използвате командата virsh console myVM и използвате основното потребителско име и съответната парола за влизане. За да излезете от конзолата, просто напишете Ctrl +]

Заключение

Облачните изображения, които повечето доставчици доставят, са наистина ефективни по отношение на използването на ресурси и те също се чувстват наистина бързи и отзивчиви. Фактът, че трябва да се справим с неудобната конфигурация на cloud-init като отправна точка, само пречи на общността да приеме KVM и свързаните с него технологии.

Общността може да научи много от начина, по който Docker изгражда и доставя своите изображения. Те са наистина лесни за управление както като работещи контейнери, така и като шаблони, които са лесни за разпространение и използване.z

Най-добрите дистрибуции на Linux за игри през 2021 г
Операционната система Linux е изминала дълъг път от първоначалния си, прост, базиран на сървъра външен вид. Тази операционна система се подобри неимов...
Как да заснемете и поточно предадете игралната си сесия на Linux
В миналото играта на игри се смяташе само за хоби, но с течение на времето игралната индустрия отбеляза огромен ръст по отношение на технологиите и бр...
Най-добрите игри за игра с ръчно проследяване
Oculus Quest наскоро представи страхотната идея за ръчно проследяване без контролери. С непрекъснато нарастващия брой игри и дейности, които изпълнява...