[pve-devel] [PATCH][pve-manager] Changes set_userpasswd method
Игорь Шестаков
shine at selectel.ru
Fri Oct 25 18:19:42 CEST 2013
Yes, it is. But later we can use ploop_mount for other purposes. Such as:
changing fs type, create partition etc.
And if we use "vzctl mount", we must pass "VE_ROOT" to function.
Of course, we can use "vzctl mount", but then function set_rootpasswd must
be rewrited to use "vzctl mount" for simfs too.
On Fri, Oct 25, 2013 at 7:25 PM, Dietmar Maurer <dietmar at proxmox.com> wrote:
> Sorry if this is a stupid question, but does 'vzctl mount' does not work
> with ploop?
>
> > -----Original Message-----
> > From: Игорь Шестаков [mailto:shine at selectel.ru]
> > Sent: Freitag, 25. Oktober 2013 15:37
> > To: Dietmar Maurer
> > Cc: pve-devel
> > Subject: Re: [pve-devel] [PATCH][pve-manager] Changes set_userpasswd
> > method
> >
> > Done
> >
> > diff --git a/PVE/API2/OpenVZ.pm b/PVE/API2/OpenVZ.pm
> > index 06fe60b..eeba1a2 100644
> > --- a/PVE/API2/OpenVZ.pm
> > +++ b/PVE/API2/OpenVZ.pm
> > @@ -413,7 +413,7 @@ __PACKAGE__->register_method({
> >
> > # hack: vzctl '--userpasswd' starts the CT, but we want
> > # to avoid that for create
> > - PVE::OpenVZ::set_rootpasswd($private, $password)
> > + PVE::OpenVZ::set_rootpasswd($private, $password, $vmid)
> > if defined($password);
> > }
> >
> >
> >
> > diff --git a/PVE/OpenVZ.pm b/PVE/OpenVZ.pm
> > index a16d4fc..ea0717f 100644
> > --- a/PVE/OpenVZ.pm
> > +++ b/PVE/OpenVZ.pm
> > @@ -1243,24 +1243,55 @@ sub replacepw {
> > }
> > }
> >
> > +sub ploop_mount {
> > + my ($rootdisk, $vmid) = @_;
> > + my $fstype = "ext4";
> > + my $tmpdir = "/tmp/$vmid";
> > + if (-f $rootdisk) {
> > + #create tmp dir
> > + mkdir $tmpdir;
> > + #mount image to tmpdir
> > + my $cmd = ['/usr/sbin/ploop', 'mount', '-t', $fstype, '-m',
> $tmpdir,
> > $rootdisk];
> > + eval { PVE::Tools::run_command($cmd); };
> > + my $err = $?;
> > + die "cannot mount $rootdisk" if ($err ne 0);
> > + return $tmpdir;
> > + }
> > +}
> > +
> > +sub ploop_umount {
> > + my $ploopdisk = shift;
> > + my $cmd = ['/usr/sbin/ploop', 'umount', $ploopdisk];
> > + eval { PVE::Tools::run_command($cmd); };
> > + my $err = $?;
> > + die "cannot umount $ploopdisk" if ($err ne 0);
> > +}
> > +
> > sub set_rootpasswd {
> > - my ($privatedir, $opt_rootpasswd) = @_;
> > + my ($privatedir, $opt_rootpasswd, $vmid) = @_;
> > +
> > + my $rootdisk = "$privatedir/root.hdd/root.hdd";
> > + my ($pwfile, $shadow, $tmpdir);
> >
> > - my $pwfile = "$privatedir/etc/passwd";
> > + $tmpdir = ploop_mount($rootdisk, $vmid) if (-f $rootdisk);
> > + $privatedir = $tmpdir if defined($tmpdir);
> > +
> > + $pwfile = "$privatedir/etc/passwd";
> >
> > return if ! -f $pwfile;
> >
> > - my $shadow = "$privatedir/etc/shadow";
> > + $shadow = "$privatedir/etc/shadow";
> >
> > if ($opt_rootpasswd !~ m/^\$/) {
> > - my $time = substr (Digest::SHA::sha1_base64 (time), 0, 8);
> > - $opt_rootpasswd = crypt(encode("utf8", $opt_rootpasswd),
> > "\$1\$$time\$");
> > + my $time = substr (Digest::SHA::sha1_base64 (time), 0,
> 8);
> > + $opt_rootpasswd = crypt(encode("utf8", $opt_rootpasswd),
> > "\$1\$$time\$");
> > };
> >
> > if (-f $shadow) {
> > - replacepw ($shadow, $opt_rootpasswd);
> > - replacepw ($pwfile, 'x');
> > + replacepw ($shadow, $opt_rootpasswd);
> > + replacepw ($pwfile, 'x');
> > } else {
> > - replacepw ($pwfile, $opt_rootpasswd);
> > + replacepw ($pwfile, $opt_rootpasswd);
> > }
> > -}
> > + ploop_umount($rootdisk) if (-f $rootdisk);
> > +}
> > \ No newline at end of file
> >
> >
> > On Fri, Oct 25, 2013 at 11:44 AM, Dietmar Maurer <dietmar at proxmox.com>
> > wrote:
> > > Previous solution work only with simfs.
> > > If we use ploop, we need to mount VM image and then change password.
> > >
> > > Why we can't solve this with simple, built-in solution?
> > Because that made many troubles. Starting a container at create stage
> > is really unexpected and not what we want to do (for example many
> prebuild
> > appliances do special things a first boot).
> >
> > But maybe you can find another solution, i.e. mount ploop first?
> >
> >
> >
> >
> > --
> > С уважением, Шестаков Игорь
> > Сеть дата-центров "Селектел"
>
--
С уважением, Шестаков Игорь
Сеть дата-центров "Селектел"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.proxmox.com/pipermail/pve-devel/attachments/20131025/fe309989/attachment.htm>
More information about the pve-devel
mailing list