Перейти до вмісту

Документація

Proxmox VE

Proxmox — це інтеграція з гіпервізором. Вона створює віртуальні машини, клонуючи шаблон, стежить за завданням, поки воно виконується, і тримає панель у відповідності до того, що насправді повідомляє кластер.

Що вам потрібно

Для автоматизації Proxmox не використовує пароль. Ви створюєте API-токен: ідентифікатор із трьох частин плюс секрет, який показують один раз.

  • Хост: повна базова URL-адреса API. Вона має бути HTTPS; якщо не вказати порт, підставиться 8006.
  • Ідентифікатор токена: у вигляді user@realm!tokenname, точно так, як його пише Proxmox.
  • Секрет токена: значення, яке Proxmox показує один раз під час створення токена.
  • TLS-відбиток: відбиток сертифіката самого вузла, а не центру, який його видав.
shell
openssl s_client -connect pve.example.com:8006 </dev/null 2>/dev/null | \
  openssl x509 -noout -fingerprint -sha256
Команди та вивід термінала всюди англійською і в панелі, і на цих сторінках. Один текст, одна правда: те, що ви читаєте тут, ваш хост виведе дослівно так само.
Вимкніть у токена розділення привілеїв або явно надайте токену власні права. Коли воно ввімкнене, токен не успадковує жодного права користувача, якому належить, і кожен виклик завершується помилкою з причини, якої Proxmox не пояснює.

Налаштування

Чотири несекретні налаштування на вкладці «Налаштування». Без них інтеграцію підключено, але вона нічого не може створити.

  • Вузол: на якому вузлі кластера будувати. Панель пропонує ті вузли, які ваш агент справді бачив; якщо він ще не бачив жодного, вузол можна вписати вручну.
  • Сховище: куди потрапляють диски нових машин.
  • Міст: необовʼязково. Він зберігається і використовується там, де платформа створює машину з нуля, але клон успадковує міст того шаблону, з якого його склоновано.
  • Діапазон ID машин: блок ID віртуальних машин Proxmox, у межах якого Provibr може виділяти ідентифікатори.

Діапазон — це межа безпеки

Це найважливіше налаштування на цій сторінці. Provibr виділяє ідентифікатори лише в межах заданого вами діапазону і ніколи не чіпає нічого поза ним. Тримайте власні робочі машини поза діапазоном, і вони залишаться недосяжними, хоч би що хтось натиснув у панелі.

Ідентифікатори ніколи не використовуються повторно, навіть після видалення машини. Тому запізніле повідомлення про статус від машини, якої вже немає, ніколи не потрапить на нову машину.
Шаблон, який ви привʼязуєте як операційну систему, має бути поза діапазоном, інакше панель його не прийме: усередині діапазону розподільник рано чи пізно видав би власний ідентифікатор шаблону, і наступне замовлення клонувалося б саме з себе.

Як створюється машина

Створення машини — це одне завдання клонування, після якого йде кілька викликів налаштування. Панель стежить за завданням і показує справжній поступ там, де Proxmox про нього повідомляє.

  1. Клонувати обраний вами шаблон на вузол із налаштувань.
  2. Збільшити завантажувальний диск до замовленого розміру. Диск може лише зростати; якщо шаблон уже більший, машина зберігає розмір шаблону.
  3. Застосувати ядра, памʼять і налаштування cloud-init (адресу, шлюз, DNS-сервери, користувача, SSH-ключі) одним викликом налаштування.
  4. Увімкнути фаєрвол і запустити машину.
Після запуску машина повідомляє про себе не як «Працює», а як «Встановлюється», і переходить у стан «Працює» лише тоді, коли cloud-init виконає свою роботу всередині гостя. Саме тому щойно створена машина не зеленіє одразу.

Контейнери Linux

Зʼєднання з Proxmox несе віртуальні машини й контейнери. Тариф вирішує, що саме з двох дасть замовлення, і відтоді рід подорожує з кожною командою, а не вгадується. Контейнер — це не менша віртуальна машина: він поділяє ядро свого вузла, і саме тому він дешевий і саме тому жменьки речей там просто немає.

  • Тариф каже: віртуальна машина, контейнер або будь-що з двох. За будь-чого з двох вибір робить клієнт під час замовлення, і перелік образів іде за тим вибором, а не підставляє щось мовчки.
  • Контейнер не клонується, а розпаковується з шаблона контейнера на зʼєднанні. Це інший рід джерела, ніж шаблони, з яких клонують віртуальну машину, і образ, що має лише шаблон контейнера, у переліку віртуальних машин не зʼявляється.
  • Unprivileged — це усталене значення. Корінь усередині контейнера не є коренем на вузлі, і саме цього ви й хочете, якщо тільки щось не вимагає прямо іншого.
  • Сховище — це кореневий том плюс точки монтування. Панель показує їх як ключ, джерело й шлях усередині гостя; шлях на вузлі навмисне не показують, бо він каже більше про вузол, ніж про машину.

Кожна команда несе рід із собою, і команда, що не пасує, відхиляється ще до того, як стане завданням, із причиною на екрані. Дві з тих причин означають справді різне.

  • Ніколи: запуск із мережі, порожня машина, а також мікропрограма чи порядок завантаження. Контейнер не запускається з мережевої карти й не має мікропрограми, яку можна було б спитати.
  • Поки що ні: диски, мережеві карти й екран обладнання. Сховище й мережа в контейнера таки є, тільки в іншій подобі, а повторно вжити для них поля віртуальної машини означало б дати тим самим словам друге значення.
  • Доступно: створення, запуск, зупинка, вимкнення, стан, вилучення, призупинення, відновлення, перевстановлення, мережевий екран і його захист від підроблених адрес.
  • Консоль — окремий випадок, і це поки що ні з причиною: консоль віртуальної машини — це екран, а в контейнера його немає. Що в нього є, то це термінал, а це інший протокол та інший клієнт.

У резервних копіях є одна відмінність, у якій легко схибити, і працює вона точно навпаки до віртуальної машини. Точка монтування потрапляє в копію, лише якщо її для цього позначено; диск віртуальної машини потрапляє туди, доки його не знято з позначки. Отже, контейнер із томом даних, якого ніхто не позначив, має копію, що виглядає повною й містить лише кореневий том.

Панель каже для кожної точки монтування, чи вона в копії, і ніколи не називає невиміряне покриття повним. Bind mounts і передані напряму пристрої однаково не йдуть ніколи: те, що за ними, належить вузлу, а не машині.

Перевстановити контейнер — це заміна, а не клон поверх. Панель спершу показує, що станеться з кожною точкою монтування, і лише потім замінює машину під одним замком: кореневий том відбудовується наново, а те, що значилося як збережене, повертається на місце. Того, чого в тому переліку не було, не відновлюють.

Cloud-init

Provibr записує сталий невеликий набір ключів cloud-init і нічого більше: чотири мережеві конфігурації, DNS-сервери та домен пошуку, користувача, тип конфігурації, SSH-ключі, пароль і те, чи оновлювати пакунки під час першого завантаження. Цей список існує з обох боків, тож поле, яке випадково називається cloud-init, ніколи не зможе переписати довільне налаштування машини.

Пароль root ніколи не потрапляє до журналу аудиту. Записується лише назва поля; саме значення передається окремо і не зберігається.

Параметр оновлення пакунків під час першого завантаження потребує Proxmox 8.1 або новішого. На старішому вузлі виклик повторюється без нього, а не завершується помилкою.

Що можна робити потім

Запустити, зупинити, вимкнути, призупинити, відновити, оновити, перевстановити та видалити. Вимкнення спершу ввічливо просить гостя, а після вичерпання часу переходить до жорсткої зупинки.

Диски й мережеві карти можна додавати, змінювати їхній розмір, приєднувати та відʼєднувати. Диск може лише зростати. Завантажувальний диск і диск cloud-init відʼєднати не можна, як і першу мережеву карту.

У фаєрвола є редагований список правил і журнал; і те, і те читається з самого вузла та записується на нього.

Варто знати

  • Клон успадковує мережевий міст свого шаблону. Міст у тарифі та в інтеграції зберігається і використовується в інших місцях, але до клона він не застосовується.
  • Скільки місця зайнято всередині віртуальної машини, Proxmox не бачить, тож на цьому графіку показано виділений розмір і немає лінії використання. Решта вимірювань справжні.
  • Шаблони не потрапляють в опитування і ніколи не зараховуються до вашої ліцензії.
  • Машини, які є у вашому кластері, але яких немає в Provibr, ігноруються під час кожного опитування. Імпортувати їх із Proxmox теж не можна: імпорту для гіпервізорів сьогодні немає.