PVE/LXC: различия между версиями
Дым (обсуждение | вклад) Нет описания правки |
Дым (обсуждение | вклад) |
||
Строка 449: | Строка 449: | ||
service pvedaemon restart | service pvedaemon restart | ||
Теперь можно спокойно разворачивать контейнер из шаблона с ALT Linux. | Теперь можно спокойно разворачивать контейнер из шаблона с ALT Linux. | ||
==Proxmox VE 8.x== | |||
Проверено на версиях PVE-8.1, -8.2 и -8.3. | |||
Для 8.0 не подходит: хотя правки те же, но номера строк иные — как и для версий 7.х, которые здесь не рассматриваются. | |||
Для 8.4 тоже не подходит: процедуру {{prg|is_valid_ro_mount_option}} в {{path|Config.pm}} заменили на {{prg|is_valid_mount_option}} с добавлением опций монтирования. | |||
Приведу лишь патч (этот ощутимо меньше отличается от оригинала): | |||
<div class="mw-collapsible mw-collapsed"> | |||
{{path|pve8+-alt-lxc.patch}} | |||
<div class="mw-collapsible-content"> | |||
<source lang="diff"> | |||
--- /usr/share/perl5/PVE/LXC/Config.pm 2024-03-15 17:24:22.000000000 +0800 | |||
+++ /usr/share/perl5/PVE/LXC/Config.pm 2024-12-28 11:35:19.255815727 +0800 | |||
@@ -486,7 +480,7 @@ | |||
ostype => { | |||
optional => 1, | |||
type => 'string', | |||
- enum => [qw(debian devuan ubuntu centos fedora opensuse archlinux alpine gentoo nixos unmanaged)], | |||
+ enum => [qw(altlinux debian devuan ubuntu centos fedora opensuse archlinux alpine gentoo nixos unmanaged)], | |||
description => "OS type. This is used to setup configuration inside the container, and corresponds to lxc setup scripts in /usr/share/lxc/config/<ostype>.common.conf. Value 'unmanaged' can be used to skip and OS specific setup.", | |||
}, | |||
console => { | |||
--- /usr/share/perl5/PVE/LXC/Setup.pm 2024-03-15 17:24:22.000000000 +0800 | |||
+++ /usr/share/perl5/PVE/LXC/Setup.pm 2024-04-04 10:41:30.975163060 +0800 | |||
@@ -9,6 +9,7 @@ | |||
use PVE::Tools; | |||
use PVE::LXC::Setup::Alpine; | |||
+use PVE::LXC::Setup::ALTLinux; | |||
use PVE::LXC::Setup::ArchLinux; | |||
use PVE::LXC::Setup::CentOS; | |||
use PVE::LXC::Setup::Debian; | |||
@@ -22,6 +23,7 @@ | |||
my $plugins = { | |||
alpine => 'PVE::LXC::Setup::Alpine', | |||
+ altlinux => 'PVE::LXC::Setup::ALTLinux', | |||
archlinux => 'PVE::LXC::Setup::ArchLinux', | |||
centos => 'PVE::LXC::Setup::CentOS', | |||
debian => 'PVE::LXC::Setup::Debian', | |||
@@ -67,6 +69,8 @@ | |||
return "devuan"; | |||
} elsif (-f "$rootdir/etc/SuSE-brand" || -f "$rootdir/etc/SuSE-release") { | |||
return "opensuse"; | |||
+ } elsif (-f "$rootdir/etc/altlinux-release") { | |||
+ return "altlinux"; | |||
} elsif (-f "$rootdir/etc/fedora-release") { | |||
return "fedora"; | |||
} elsif (-f "$rootdir/etc/centos-release" || -f "$rootdir/etc/redhat-release") { | |||
@@ -257,7 +261,13 @@ | |||
my $keynames = $plugin->ssh_host_key_types_to_generate(); | |||
- return if ! -d "$self->{rootdir}/etc/ssh" || !$keynames || !scalar(keys $keynames->%*); | |||
+ my $sshdir = "/etc/ssh"; | |||
+ if ( ! -d "$self->{rootdir}$sshdir" ) { | |||
+ if ( ! -d "$self->{rootdir}/etc/openssh" ) { | |||
+ return; | |||
+ } $sshdir = "/etc/openssh"; | |||
+ } | |||
+ return if ! -d "$self->{rootdir}/$sshdir" || !$keynames || !scalar(keys $keynames->%*); | |||
my $hostname = $self->{conf}->{hostname} || 'localhost'; | |||
$hostname =~ s/\..*$//; | |||
@@ -269,7 +279,7 @@ | |||
my ($id, $private, $public) = generate_ssh_key($keytype, "root\@$hostname"); | |||
print "done: $id\n"; | |||
- push $keyfiles->@*, ["/etc/ssh/$basename", $private, 0600], ["/etc/ssh/$basename.pub", $public, 0644]; | |||
+ push $keyfiles->@*, ["$sshdir/$basename", $private, 0600], ["$sshdir/$basename.pub", $public, 0644]; | |||
} | |||
$self->protected_call(sub { # write them now all to the CTs rootfs at once | |||
</source> | |||
</div></div> | |||
==Proxmox VE 4.4== | ==Proxmox VE 4.4== |
Версия от 04:08, 6 июня 2025
В данной статье описано развёртывание LXC-контейнера c ALT (из готового шаблона) на оригинальном Proxmox VE (который на данный момент на Debian).
Если у вас установлен любой из дистрибутивов ALT и собственно сам PVE (pve-manager) или стартовый набор server-pve, данная статья вам не нужна, так как проблем с развёртыванием контейнера не будет.
Создание шаблона
Для этого можно воспользоваться набором инструментов - m-p. Вся информация тут.
Основным требованием для шаблона является наличие в нём systemd. Исходя из статьи Шаблоны для развёртывания CT в PVE, нам подойдет только шаблон ve/systemd-bare.tar.gz. Для его сборки после первоначальной настройки окружения необходимо выполнить следующие команды (предварительно настроив нужный репозиторий с помощью утилиты apt-repo):
$ git clone git://git.altlinux.org/people/mike/packages/mkimage-profiles.git $ cd mkimage-profiles $ make ve/systemd-bare.tar.gz
После этого готовый шаблон нужно загрузить в локальное хранилище PVE.
Подготовка Proxmox
Сначала необходимо установить perl-библиотеку Crypt::Eksblowfish::Bcrypt для установки рутового пароля при развёртывании шаблона:
apt-get install libcrypt-eksblowfish-perl
Затем необходимо внести изменения в скрипты работы с LXC-контейнерами и добавить новый скрипт для разворачивания шаблона с ALT Linux. За основу взят патч для пакета pve-container.
Proxmox VE 5.1
Проверено на актуальных версиях - 5.1-35 и 5.1-36.
Необходимо внести изменения в следующие файлы (изменения под спойлером):
- /usr/share/perl5/PVE/LXC/Config.pm
- /usr/share/perl5/PVE/LXC/Setup.pm
И добавить новый файл с описанием инструкций для ALT:
- /usr/share/perl5/PVE/LXC/Setup/ALTLinux.pm
- Модификация, пригодная для работы и с systemd, и с systemv - полезно при модернизации старых контейнеров и не требует обязательного наличия systemd в шаблоне
(NB: в патч входит только вышеприведённый вариант!)
Данные файлы можно поправить вручную, а можно с помощью патча. Необходимо создать файл со следующим содержимым (TODO: добавить ссылку на ftp):
pve5-alt-lxc.patch
Затем выполнить следующие команды:
cd /usr/share/perl5/PVE/LXC
patch -p1 -i <path_to>/pve5-alt-lxc.patch
После изменения скриптов (вручную или патчем) необходимо перезапустить PVE API Daemon:
service pvedaemon restart
Теперь можно спокойно разворачивать контейнер из шаблона с ALT Linux.
Proxmox VE 8.x
Проверено на версиях PVE-8.1, -8.2 и -8.3.
Для 8.0 не подходит: хотя правки те же, но номера строк иные — как и для версий 7.х, которые здесь не рассматриваются.
Для 8.4 тоже не подходит: процедуру is_valid_ro_mount_option в Config.pm заменили на is_valid_mount_option с добавлением опций монтирования.
Приведу лишь патч (этот ощутимо меньше отличается от оригинала):
pve8+-alt-lxc.patch
Proxmox VE 4.4
Проверено на версиях 4.4-18 и 4.4-20.
Необходимо внести изменения в следующие файлы:
- /usr/share/perl5/PVE/LXC/Config.pm - аналогично 5 версии (см. выше);
- /usr/share/perl5/PVE/LXC/Setup.pm - есть немного отличий;
- /usr/share/perl5/PVE/LXC/Setup/ALTLinux.pm - аналогично 5 версии (см. выше).
Для 4 версии Proxmox VE также необходимо подправить LXC.pm:
- /usr/share/perl5/PVE/LXC.pm
Данные файлы можно поправить вручную, а можно с помощью патча. Необходимо создать файл со следующим содержимым (TODO: добавить ссылку на ftp):
pve4-alt-lxc.patch
Затем выполнить следующие команды:
cd /usr/share/perl5/PVE #обратите внимание - запуск патча происходит из отличной от 5-ой версии директории
patch -p1 -i <path_to>/pve4-alt-lxc.patch
После изменения скриптов (вручную или патчем) необходимо перезапустить PVE API Daemon:
service pvedaemon restart
Теперь можно спокойно разворачивать контейнер из шаблона с ALT Linux.
Создание CT
Подробнее об этом читайте тут. Отличий нет.