]> git.proxmox.com Git - pve-container.git/log
pve-container.git
2 years agoSetup: Allow hostname configuration on NixOS
Harikrishnan R via pve-devel [Fri, 18 Mar 2022 10:21:13 +0000 (15:51 +0530)]
Setup: Allow hostname configuration on NixOS

While NixOS generally overrides any static contents in /etc/hostname
with the hostname defined in `networking.hostname`, it can use the
contents of `/etc/hostname` provided by PVE if this option is not
set.

Signed-off-by: Harikrishnan R <rharikrishnan95@gmail.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosupport Fedora 36
Thomas Lamprecht [Wed, 27 Apr 2022 12:22:46 +0000 (14:22 +0200)]
support Fedora 36

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agoparse pct config: remove "\s*" from multi-line comment regex
Stefan Sterz [Thu, 24 Feb 2022 14:21:50 +0000 (15:21 +0100)]
parse pct config: remove "\s*" from multi-line comment regex

To be consistent with PBS's implementation of multi-line comments
remove "\s*" here too. Since the regex isn't lazy .* matches
everything \s* would anyway. (Note that new lines occurs after "$").

Signed-off-by: Stefan Sterz <s.sterz@proxmox.com>
2 years agoapi: reassign volume: allow to reassign to self
Thomas Lamprecht [Fri, 15 Apr 2022 12:02:00 +0000 (14:02 +0200)]
api: reassign volume: allow to reassign to self

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agoapi: vol rename: refactorings
Thomas Lamprecht [Thu, 7 Apr 2022 17:03:45 +0000 (19:03 +0200)]
api: vol rename: refactorings

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agoapi: create/modify: add content type checks
Fabian Ebner [Wed, 30 Mar 2022 10:24:36 +0000 (12:24 +0200)]
api: create/modify: add content type checks

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2 years agofix #3960: properly set owner in CT setup
Fabian Grünbichler [Mon, 28 Mar 2022 08:06:28 +0000 (10:06 +0200)]
fix #3960: properly set owner in CT setup

there were two helpers that were not handling this correctly:

ct_make_path

since this never gets called with $opts, and there also is no 'owner'
and 'group' in $self, the previous logic could never work, sometimes
leaving nobody:nogroup files around for unprivileged containers.

since only the centos and suse plugins use this helper, the issue was
fairly limited.

ct_symlink

could create symlinks owned by nobody:nogroup. since symlinks are
created 777 by default, this just meant they were not modifiable inside
the container, but reading/dereferencing was no problem so it went
unnoticed so far.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agofix #3917: Ignore fstrim failure in pct fstrim
Markus Frank [Fri, 11 Mar 2022 11:59:57 +0000 (12:59 +0100)]
fix #3917: Ignore fstrim failure in pct fstrim

With "noerr => 1" the function does not abort, when one of the
mountpoints is not fstrim compatible like zfs (has its own trim).
I do not think it is necessary to warn or error, because fstrim
tells when something is not trimmable and aborts.

Signed-off-by: Markus Frank <m.frank@proxmox.com>
2 years agoapi: snapshot delete: prefix lock-fail error
Fabian Grünbichler [Tue, 15 Mar 2022 12:29:24 +0000 (13:29 +0100)]
api: snapshot delete: prefix lock-fail error

otherwise users might get confused if they just get a message about a
migrate lock not being available..

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agovzdump: failed snapshot removal is non-fatal
Fabian Grünbichler [Tue, 15 Mar 2022 12:10:13 +0000 (13:10 +0100)]
vzdump: failed snapshot removal is non-fatal

make it more explicit (the whole call to the plugin's cleanup sub is
wrapped in an eval + warn anyway), so that future extensions can be
added after this point if they don't rely on snapshot removal being
successful.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agofix #3424: api: snapshot delete: wait for active replication
Fabian Ebner [Wed, 23 Feb 2022 12:03:58 +0000 (13:03 +0100)]
fix #3424: api: snapshot delete: wait for active replication

A to-be-deleted snapshot might be actively used by replication,
resulting in a not (or only partially) removed snapshot and locked
(snapshot-delete) container. Simply wait a few seconds for any ongoing
replication.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2 years agopartially fix #3424: vzdump: cleanup: wait for active replication
Fabian Ebner [Wed, 23 Feb 2022 12:03:57 +0000 (13:03 +0100)]
partially fix #3424: vzdump: cleanup: wait for active replication

As replication and backup can happen at the same time, the vzdump
snapshot might be actively used by replication when backup tries
to cleanup, resulting in a not (or only partially) removed snapshot
and locked (snapshot-delete) container.

Wait up to 10 minutes for any ongoing replication. If replication
doesn't finish in time, the fact that there is no attempt to remove
the snapshot means that there's no risk for the container to end up in
a locked state. And the beginning of the next backup will force remove
the left-over snapshot, which will very likely succeed even at the
storage layer, because the replication really should be done by then
(subsequent replications shouldn't matter as they don't need to
re-transfer the vzdump snapshot).

Suggested-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
Co-developed-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2 years agoconfig: print volume: support printing unused volume
Fabian Ebner [Thu, 3 Mar 2022 12:31:20 +0000 (13:31 +0100)]
config: print volume: support printing unused volume

In particular, fixes migration with an unused disk, where calling
update_volume_ids() failed previously.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agomigrate: also set targetsid for unreferenced disks
Fabian Ebner [Thu, 3 Mar 2022 12:31:19 +0000 (13:31 +0100)]
migrate: also set targetsid for unreferenced disks

It's expected to be set further below. Reported in the community
forum: https://forum.proxmox.com/threads/105685

Fixes: e90ddc4 ("fix #1532: add target-storage support to migration")
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agoSetup: add NixOS support
Harikrishnan R via pve-devel [Tue, 15 Feb 2022 17:28:46 +0000 (22:58 +0530)]
Setup: add NixOS support

Distro detection is done heuristically through the presence of a
`/nix/store` folder.

NixOS typically uses a script-based network configuration system that
isn't easy to configure from the outside, while the configuration
snippets would be simple to generate, bringing them in effect isn't.

LXC templates generated for proxmox are instead expected to use
systemd-networkd.

Signed-off-by: Harikrishnan R <rharikrishnan95@gmail.com>
 [ Thomas: update/reword commit ]
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agobump version to 4.1-4
Thomas Lamprecht [Fri, 11 Feb 2022 15:19:00 +0000 (16:19 +0100)]
bump version to 4.1-4

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agomigrate: allow renaming of volumes
Fabian Grünbichler [Fri, 11 Feb 2022 10:29:45 +0000 (11:29 +0100)]
migrate: allow renaming of volumes

the config is now updated anyway because of target-storage support, so
volume renaming is both 'free' and improves the chances of migration
with and without changing storages actually works successfully.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agomigrate: improve target storage checks
Fabian Grünbichler [Fri, 11 Feb 2022 10:29:44 +0000 (11:29 +0100)]
migrate: improve target storage checks

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agod/changelog: fix typo
Fabian Grünbichler [Fri, 11 Feb 2022 09:02:38 +0000 (10:02 +0100)]
d/changelog: fix typo

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agoapi: small code/style cleanup
Thomas Lamprecht [Fri, 11 Feb 2022 07:37:22 +0000 (08:37 +0100)]
api: small code/style cleanup

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agofix #3635: fix overly-strict pool permission check on create
Dominik Csapak [Fri, 22 Oct 2021 06:44:13 +0000 (08:44 +0200)]
fix #3635: fix overly-strict pool permission check on create

we do not need Permissions.Modify on the pool as the actual required
check for 'VM.Allocate' for that pool is already handled below, so
remove it like we did in qemu-server 4fc5242 ("fix pool permission
checks on create")

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Tested-by: Mira Limbeck <m.limbeck@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agod/control: bump versioned dependency of libpve-common-perl
Thomas Lamprecht [Wed, 9 Feb 2022 17:42:21 +0000 (18:42 +0100)]
d/control: bump versioned dependency of libpve-common-perl

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agoconfig: add strict parser
Fabian Grünbichler [Wed, 9 Feb 2022 13:07:32 +0000 (14:07 +0100)]
config: add strict parser

as safeguard when migrating across clusters, which might have different
versions installed.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agofix #1532: add target-storage support to migration
Fabian Grünbichler [Wed, 9 Feb 2022 13:07:31 +0000 (14:07 +0100)]
fix #1532: add target-storage support to migration

re-using helpers that already exist for qemu-server. this is a
pre-requisite for extending remote migration support to containers.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agod/control: bump (build-)dependency of libpve-guest-common-perl
Thomas Lamprecht [Wed, 9 Feb 2022 17:37:26 +0000 (18:37 +0100)]
d/control: bump (build-)dependency of libpve-guest-common-perl

to get new helpers for snapshot and also migrate stuff (latter is
used in future patches).

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosnapshot: implement __snapshot_activate_storages
Fabian Ebner [Thu, 13 Jan 2022 11:04:05 +0000 (12:04 +0100)]
snapshot: implement __snapshot_activate_storages

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2 years agoconfig: parse_volume: don't die when noerr is set
Fabian Ebner [Thu, 13 Jan 2022 11:04:04 +0000 (12:04 +0100)]
config: parse_volume: don't die when noerr is set

AFAICT, the only existing callers using noerr=1 are in
__snapshot_delete_remove_drive, and in AbstractConfig's
foreach_volume_full. The former should not be affected, as unknown
keys should never make their way in there. For the latter, it makes
iterating with
    $opts = { extra_keys => ['vmstate'] }
possible while being agnostic of guest type. Previously, it would die
for LXC configs, but now the unknown key is simply skipped there.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2 years agoconfig: snapshot_delete_remove_drive: check for parsed value
Fabian Ebner [Thu, 13 Jan 2022 11:04:03 +0000 (12:04 +0100)]
config: snapshot_delete_remove_drive: check for parsed value

parse_volume is called with noerr=1, so this might be undef instead
of the hash we expect.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2 years agobump version to 4.1-3
Thomas Lamprecht [Tue, 7 Dec 2021 18:11:03 +0000 (19:11 +0100)]
bump version to 4.1-3

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: support upcomming Ubuntu 22.04 Jammy Jellyfish
Thomas Lamprecht [Tue, 7 Dec 2021 18:10:39 +0000 (19:10 +0100)]
setup: support upcomming Ubuntu 22.04 Jammy Jellyfish

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agoconfig: allow 'lazytime' mount option for containers
Oguz Bektas [Wed, 1 Dec 2021 15:17:56 +0000 (16:17 +0100)]
config: allow 'lazytime' mount option for containers

worked fine here in ubuntu container.

root@CT1022:/# mount | grep lazy
/var/lib/pve/local-btrfs/images/1022/vm-1022-disk-0/disk.raw on /     type ext4 (rw,relatime,lazytime)
/var/lib/pve/local-btrfs/images/1022/vm-1022-disk-0/disk.raw on /snap type ext4 (rw,relatime,lazytime)

requested in community forum [0]

[0]: https://forum.proxmox.com/threads/100454/

Tested-by: Dylan Whyte <d.whyte@proxmox.com>
Signed-off-by: Oguz Bektas <o.bektas@proxmox.com>
2 years agobump version to 4.1-2
Thomas Lamprecht [Fri, 12 Nov 2021 18:21:25 +0000 (19:21 +0100)]
bump version to 4.1-2

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agotests: add alpine 3.13 test for network config
Thomas Lamprecht [Fri, 12 Nov 2021 18:16:53 +0000 (19:16 +0100)]
tests: add alpine 3.13 test for network config

just to be sure and to check both new and old..

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agotests: add alpine 3.8 test for network config
Thomas Lamprecht [Fri, 12 Nov 2021 18:13:25 +0000 (19:13 +0100)]
tests: add alpine 3.8 test for network config

this would fail without the previous patch..

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agofix #3721: better version check to avoid false positive on can-CIDR check
Thomas Lamprecht [Fri, 12 Nov 2021 18:14:27 +0000 (19:14 +0100)]
fix #3721: better version check to avoid false positive on can-CIDR check

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agotest: add debian 11 to test network/interfaces CIDR notation
Thomas Lamprecht [Fri, 12 Nov 2021 18:05:51 +0000 (19:05 +0100)]
test: add debian 11 to test network/interfaces CIDR notation

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agoreassign mp: fix permission checks
Fabian Grünbichler [Wed, 10 Nov 2021 10:55:38 +0000 (11:55 +0100)]
reassign mp: fix permission checks

with `storage` being optional (and not allowed for reassign operations),
the ACL path in the schema can end up as `/storage/-`, which is wrong.
replace it with an explicit check:

- target `storage` for move mp
- storage from source disk for reassign mp (we only rename here, but
  it's still a new volume on that storage after all)

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agoreassign mp: various improvements
Fabian Grünbichler [Wed, 10 Nov 2021 10:54:21 +0000 (11:54 +0100)]
reassign mp: various improvements

mainly style, some additional checks

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agoapi: move-volume: cleanup very long lines
Aaron Lauterer [Tue, 9 Nov 2021 14:55:40 +0000 (15:55 +0100)]
api: move-volume: cleanup very long lines

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
2 years agoapi: move-volume: add move to another container
Aaron Lauterer [Tue, 9 Nov 2021 14:55:39 +0000 (15:55 +0100)]
api: move-volume: add move to another container

The goal of this is to expand the move-volume API endpoint to make it
possible to move a container volume / mountpoint to another container.

For unused volumes, the API parameters have been changed to allow them
as well. This means, additional checks had to be introduced to avoid
migration of an unusedX volume to another storage. Some follow up work
is needed for that to work properly.

Moving the rootfs from or to another container is prohibited.

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
2 years agoConfig: add valid_volume_keys_with_unused
Aaron Lauterer [Tue, 9 Nov 2021 14:55:38 +0000 (15:55 +0100)]
Config: add valid_volume_keys_with_unused

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
2 years agocli: pct: change move_volume to move-volume
Aaron Lauterer [Tue, 9 Nov 2021 14:55:37 +0000 (15:55 +0100)]
cli: pct: change move_volume to move-volume

also add alias to keep move_volume working

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
2 years agoconfig: rollback is possible: add blockers parameter
Fabian Ebner [Thu, 12 Aug 2021 11:01:03 +0000 (13:01 +0200)]
config: rollback is possible: add blockers parameter

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2 years agobump version to 4.1-1
Thomas Lamprecht [Thu, 14 Oct 2021 11:13:13 +0000 (13:13 +0200)]
bump version to 4.1-1

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agod/control: bump versioned dependency on libpve-common-perl
Thomas Lamprecht [Thu, 14 Oct 2021 11:07:35 +0000 (13:07 +0200)]
d/control: bump versioned dependency on libpve-common-perl

to ensure we've the new RPCEnv warn helper available added in
pve-common's commit ff79ee6

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: support Fedora 35
Thomas Lamprecht [Thu, 14 Oct 2021 10:29:19 +0000 (12:29 +0200)]
setup: support Fedora 35

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agorestore: sanitize config: use new warn() function
Fabian Ebner [Thu, 8 Jul 2021 09:14:56 +0000 (11:14 +0200)]
restore: sanitize config: use new warn() function

to make it more visible that the task finished with warnings.

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2 years agoclone: code bloat reduction
Thomas Lamprecht [Thu, 14 Oct 2021 09:59:34 +0000 (11:59 +0200)]
clone: code bloat reduction

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agoapi: clone_vm: don't include snapshot properties
Oguz Bektas [Wed, 13 Oct 2021 12:31:53 +0000 (14:31 +0200)]
api: clone_vm: don't include snapshot properties

apparently this caused a weird[0] bug... when a container with a snapshot was
cloned, it would take 'parent: foo' from the original container. if you
add a new snapshot 'bar', and then another one 'foo', this causes the
snapshots to become parents of each other (thus not parsed correctly in
the tree view of GUI nor with 'pct listsnapshot CTID')

we also drop these properties for VMs, so it makes sense to do the same
here as well.

[0]: https://forum.proxmox.com/threads/snapshots-of-one-lxc-disappeared.97711/

Signed-off-by: Oguz Bektas <o.bektas@proxmox.com>
2 years agofix #3673: setup: allow ubuntu impish (release 21.10) containers
Oguz Bektas [Tue, 12 Oct 2021 10:32:17 +0000 (12:32 +0200)]
fix #3673: setup: allow ubuntu impish (release 21.10) containers

didn't notice any issue with basic privileged/unprivileged
configurations, so we can just add it here.

Signed-off-by: Oguz Bektas <o.bektas@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: also set contents of /etc/timezone
Fabian Ebner [Thu, 7 Oct 2021 10:48:03 +0000 (12:48 +0200)]
setup: also set contents of /etc/timezone

Some distributions like CentOS 8 and Gentoo don't have the file, so
only update if it already existed.

A slight change in behavior in set_timezone is that the warning will
now trigger if /etc/localtime is a link to $tz_path, but $tz_path does
not exist. Previously, it would return early if the link matched.

Programs that rely on /etc/timezone within the container will now see
the configured timezone too. While that is more correct, it's still a
change that might be unexpected.

Reported in the community forum:
https://forum.proxmox.com/threads/pct-create-command-with-timezone-host-option-fails-to-create-a-container.97538/

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2 years agosetup: untaint path to host timezone
Fabian Ebner [Thu, 7 Oct 2021 10:48:02 +0000 (12:48 +0200)]
setup: untaint path to host timezone

To avoid an error with 'pct create ... --timezone host'.

Reported in the community forum:
https://forum.proxmox.com/threads/pct-create-command-with-timezone-host-option-fails-to-create-a-container.97538/

Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2 years agobump version to 4.0-11
Thomas Lamprecht [Thu, 7 Oct 2021 06:17:47 +0000 (08:17 +0200)]
bump version to 4.0-11

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: drop remaining unmanaged return
Oguz Bektas [Tue, 5 Oct 2021 08:09:52 +0000 (10:09 +0200)]
setup: drop remaining unmanaged return

not needed anymore since we have 'unmanaged' plugin, so $self->{plugin}
would be 'unmanaged' and get handled by that instead of an early return.

Signed-off-by: Oguz Bektas <o.bektas@proxmox.com>
2 years agosetup: fix creating unmanaged containers
Oguz Bektas [Tue, 5 Oct 2021 08:09:51 +0000 (10:09 +0200)]
setup: fix creating unmanaged containers

ssh_host_key_generate did not explicitly return in unmanaged plugin,
causing the post_create_hook to fail because of an invalid hash
reference (cannot use "1" as a HASH ref, "1" was likely being returned
implicitly as the scalar value of 'my ($self) = @_;')

Signed-off-by: Oguz Bektas <o.bektas@proxmox.com>
2 years agosetup: alpine: also use CIDR format for newer versions
Thomas Lamprecht [Mon, 4 Oct 2021 13:13:25 +0000 (15:13 +0200)]
setup: alpine: also use CIDR format for newer versions

original ifupdown supports this since years and ifupdown-ng, the
ifupdown replacement from the Alpine Linux corner, does too
https://github.com/ifupdown-ng/ifupdown-ng/blob/main/doc/ADMIN-GUIDE.md

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: alpine: code text-width/indendation cleanup
Thomas Lamprecht [Mon, 4 Oct 2021 12:27:42 +0000 (14:27 +0200)]
setup: alpine: code text-width/indendation cleanup

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: make some returns more explicit
Thomas Lamprecht [Mon, 4 Oct 2021 11:47:41 +0000 (13:47 +0200)]
setup: make some returns more explicit

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: add no-op plugin for unmanaged CTs
Thomas Lamprecht [Wed, 29 Sep 2021 19:05:43 +0000 (21:05 +0200)]
setup: add no-op plugin for unmanaged CTs

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: add abstract plugin module
Thomas Lamprecht [Wed, 29 Sep 2021 18:52:55 +0000 (20:52 +0200)]
setup: add abstract plugin module

to define the base API

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: drop copying binfmt qemu-static executable
Thomas Lamprecht [Wed, 29 Sep 2021 17:45:23 +0000 (19:45 +0200)]
setup: drop copying binfmt qemu-static executable

The binfmt-support and qemu-user-static package setup the
`/proc/sys/fs/binfmt_misc/' entry with the "fix binary" `F` flag:

> The usual behaviour of binfmt_misc is to spawn the binary lazily
> when the misc format file is invoked. However, this doesn't work
> very well in the face of mount namespaces and changeroots, so the F
> mode opens the binary as soon as the emulation is installed and
> uses the opened image to spawn the emulator, meaning it is always
> available once installed, regardless of how the environment
> changes.
--
https://www.kernel.org/doc/html/latest/admin-guide/binfmt-misc.html

which seems to be enough to make it work. binfmt-support's changelog
has some indication that it can use the `F` flag since the version
shipped in Debian Buster (PVE 6), and this support was added before
that, which would explain the earlier need for it..

Drop it now and slowly roll it out, if somebody really is using this
obscure PVE feature and yells we can always revert/workaround it.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: add new ssh_host_key_types_to_generate helper to plugin API
Thomas Lamprecht [Wed, 29 Sep 2021 16:17:10 +0000 (18:17 +0200)]
setup: add new ssh_host_key_types_to_generate helper to plugin API

To guard the ct_file_set_contents call so that it's really only done
if the plugin wants ssh keys.

we'll use that in a future patch to have a more abstract interface
for plugins.

Additional benefit, we can drop (or at least skip) old key types (DSA
anyone) per container os-release type/version with this.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agodestroy: remove pending volumes as well
Fabian Grünbichler [Wed, 29 Sep 2021 09:45:06 +0000 (11:45 +0200)]
destroy: remove pending volumes as well

if a volume is only referenced in the pending section of a config it was
previously not removed when removing the CT, unless the non-default
'remove unreferenced disks' option was enabled.

keeping track of volume IDs which we attempt to remove gets rid of false
warnings in case a volume is referenced both in the config and the
pending section, or multiple times in the config for other reasons.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agopct status: mark suspend as experimental
Aaron Lauterer [Thu, 30 Sep 2021 09:49:11 +0000 (11:49 +0200)]
pct status: mark suspend as experimental

since container suspend is actually very experimental and only works in
very specific situations.

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
2 years agobump version to 4.0-10
Thomas Lamprecht [Wed, 29 Sep 2021 20:14:27 +0000 (22:14 +0200)]
bump version to 4.0-10

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agotests: centos: add non-fallback dns/searchdomain test
Thomas Lamprecht [Wed, 29 Sep 2021 20:07:10 +0000 (22:07 +0200)]
tests: centos: add non-fallback dns/searchdomain test

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: dns conf: avoid testmode fallback if config defines properties
Thomas Lamprecht [Wed, 29 Sep 2021 20:05:54 +0000 (22:05 +0200)]
setup: dns conf: avoid testmode fallback if config defines properties

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agopartially fix #3471: setup: centos: net: set DNS per iface config
Thomas Lamprecht [Wed, 29 Sep 2021 19:57:28 +0000 (21:57 +0200)]
partially fix #3471: setup: centos: net: set DNS per iface config

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agotests: setup: also track locale.conf
Thomas Lamprecht [Wed, 29 Sep 2021 19:54:56 +0000 (21:54 +0200)]
tests: setup: also track locale.conf

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agopartially fix #3471: setup: centos: net: fix IPv6 if/else chain
Thomas Lamprecht [Wed, 29 Sep 2021 19:28:47 +0000 (21:28 +0200)]
partially fix #3471: setup: centos: net: fix IPv6 if/else chain

we must not write the non-IP auto/dhcp formats as IP address, that
trips up network manager

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agotests: setup: add CentOS 8 test
Thomas Lamprecht [Wed, 29 Sep 2021 19:48:18 +0000 (21:48 +0200)]
tests: setup: add CentOS 8 test

produces a bad (but not test-fatal) config with IPV6Addr set to
"auto", the next commit will fix that.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agopartially fix #3471: setup: centos: net: add missing UUID to ifcfg
Thomas Lamprecht [Wed, 29 Sep 2021 19:28:13 +0000 (21:28 +0200)]
partially fix #3471: setup: centos: net: add missing UUID to ifcfg

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: centos: coding style
Thomas Lamprecht [Wed, 29 Sep 2021 19:25:09 +0000 (21:25 +0200)]
setup: centos: coding style

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agobuildsys: split and order sources definition
Thomas Lamprecht [Wed, 29 Sep 2021 17:53:00 +0000 (19:53 +0200)]
buildsys: split and order sources definition

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: move getting cross-emulator to separate method
Thomas Lamprecht [Wed, 29 Sep 2021 19:08:51 +0000 (21:08 +0200)]
setup: move getting cross-emulator to separate method

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: move setting fastboot flag to base plugin
Thomas Lamprecht [Wed, 29 Sep 2021 17:39:21 +0000 (19:39 +0200)]
setup: move setting fastboot flag to base plugin

better fit there as this may actually not always be wanted.
As no sub-plugin overrides pre_start_hook there should be no actual
semantic change yet.

This is a preperation for a clean abstract Plugin interface and
Unmanaged plugin.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: code reduction
Thomas Lamprecht [Wed, 29 Sep 2021 16:16:55 +0000 (18:16 +0200)]
setup: code reduction

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: factor out actual ssh key generation
Thomas Lamprecht [Wed, 29 Sep 2021 16:13:12 +0000 (18:13 +0200)]
setup: factor out actual ssh key generation

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosuse: pre-set locale/timezone to avoid systemd-firstboot hang on prompt
Thomas Lamprecht [Wed, 29 Sep 2021 15:30:50 +0000 (17:30 +0200)]
suse: pre-set locale/timezone to avoid systemd-firstboot hang on prompt

same as commit 1edabe807fe478e34548031c0b6e7e63dcc7f69e

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: group plugin related calls together
Thomas Lamprecht [Tue, 28 Sep 2021 13:43:40 +0000 (15:43 +0200)]
setup: group plugin related calls together

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: sort plugin use/map statements
Thomas Lamprecht [Tue, 28 Sep 2021 13:35:36 +0000 (15:35 +0200)]
setup: sort plugin use/map statements

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: indendation/code-style fixes
Thomas Lamprecht [Tue, 28 Sep 2021 13:33:58 +0000 (15:33 +0200)]
setup: indendation/code-style fixes

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: avoid one-argument bless
Thomas Lamprecht [Tue, 28 Sep 2021 12:52:26 +0000 (14:52 +0200)]
setup: avoid one-argument bless

> Normally, bless takes two arguments: a reference to the referent
> that is to become the object, and a string naming the desired class
> of that object. However, the second argument is actually optional,
> and defaults to the current package name.
-- page 365 of Perl Best Practice, Convay.

That means that a inheriting module would get the wrong class due to
that, we do not really have that issue with Setup now, but copy-is-my
hobby would allow that error to infect other code ;-)

If one wants the default behavior should say so explicitly, e.g.:
bless { ... }, __PACKAGE__

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agosetup: avoid bloat in protected plugin calls
Thomas Lamprecht [Tue, 28 Sep 2021 11:46:22 +0000 (13:46 +0200)]
setup: avoid bloat in protected plugin calls

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agocentos: improve rationale in comment and drop static intermediate variable
Thomas Lamprecht [Wed, 25 Aug 2021 14:10:45 +0000 (16:10 +0200)]
centos: improve rationale in comment and drop static intermediate variable

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agocentos: set /etc/locale.conf to avoid systemd-firstboot hanging
Oguz Bektas [Tue, 24 Aug 2021 11:35:10 +0000 (13:35 +0200)]
centos: set /etc/locale.conf to avoid systemd-firstboot hanging

we can set the locale to a sane default to avoid the issue described in
forum post [0]

[0]: https://forum.proxmox.com/threads/centos-lxc-containers-require-a-reboot.94972/

Signed-off-by: Oguz Bektas <o.bektas@proxmox.com>
2 years agobump version to 4.0-9
Fabian Grünbichler [Thu, 5 Aug 2021 14:12:00 +0000 (16:12 +0200)]
bump version to 4.0-9

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agoapi: limit priv -> unpriv change on container restore to VM.Allocate
Dominik Csapak [Wed, 4 Aug 2021 14:01:34 +0000 (16:01 +0200)]
api: limit priv -> unpriv change on container restore to VM.Allocate

this should only be allowed for uses that have at least VM.Allocate,
but not for users that have only 'VM.Backup'

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agoskip features when restoring an unprivileged container as privileged
Dominik Csapak [Wed, 4 Aug 2021 10:51:09 +0000 (12:51 +0200)]
skip features when restoring an unprivileged container as privileged

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2 years agoallow nesting to be changed for VM.Allocate on unprivileged containers
Dominik Csapak [Wed, 4 Aug 2021 10:51:08 +0000 (12:51 +0200)]
allow nesting to be changed for VM.Allocate on unprivileged containers

instead of it being root only

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2 years agoadd old config and unprivileged to check_ct_modify_config_perm
Dominik Csapak [Wed, 4 Aug 2021 10:51:07 +0000 (12:51 +0200)]
add old config and unprivileged to check_ct_modify_config_perm

we'll need that for checking the features more granularly
for it to work correctly, we have to move the permission checks
into the 'lock_config' sub, since we now also need to check the current
config and it could change between the permission check and the lock

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
2 years agofix #3478: abort container creation on arch detection timeout
Lorenz Stechauner [Thu, 22 Jul 2021 07:54:56 +0000 (09:54 +0200)]
fix #3478: abort container creation on arch detection timeout

increased the timeout for detect_arch from 5 to 10 seconds.

until now, on any error detect_architecture would fall back to amd64.
to avoid falling back due to an timeout error this function now dies
on timeout errors.

additionally minor changes to the error messages have been made.

Signed-off-by: Lorenz Stechauner <l.stechauner@proxmox.com>
2 years agopct cpuset: show effective values
Wolfgang Bumiller [Tue, 20 Jul 2021 11:19:28 +0000 (13:19 +0200)]
pct cpuset: show effective values

rather than the "desired" ones, this is more useful
(we could also show differences if there are any?)

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agopct cpuset: use limiting cgroup
Wolfgang Bumiller [Tue, 20 Jul 2021 11:19:27 +0000 (13:19 +0200)]
pct cpuset: use limiting cgroup

this is what's actually applied to the container (although
the container may be imposing an even stricter limit, but
that's not what we want to see...)

also, the v2 cpuset list may be empty (and often is for
unprivileged+nesting containers), which currently fails to
parse

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agobump version to 4.0-8
Fabian Grünbichler [Thu, 8 Jul 2021 10:30:01 +0000 (12:30 +0200)]
bump version to 4.0-8

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agoconfig: sync ACL checks with qemu-server
Fabian Grünbichler [Thu, 8 Jul 2021 09:23:55 +0000 (11:23 +0200)]
config: sync ACL checks with qemu-server

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
2 years agobump version to 4.0-7
Thomas Lamprecht [Tue, 6 Jul 2021 13:48:18 +0000 (15:48 +0200)]
bump version to 4.0-7

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agofix #3506: config: fix removing the cpulimit of a running CT
Thomas Lamprecht [Tue, 6 Jul 2021 13:45:53 +0000 (15:45 +0200)]
fix #3506: config: fix removing the cpulimit of a running CT

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2 years agobump version to 4.0-6
Wolfgang Bumiller [Tue, 6 Jul 2021 06:27:42 +0000 (08:27 +0200)]
bump version to 4.0-6

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2 years agoensure the config dir exists in update_lxc_config
Wolfgang Bumiller [Tue, 6 Jul 2021 06:22:28 +0000 (08:22 +0200)]
ensure the config dir exists in update_lxc_config

Otherwise make_seccomp_config cannot add files to it.

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>