[Bug 2080277] Re: FFe: lxd-installer should prompt before installing LXD

Simon Déziel 2080277 at bugs.launchpad.net
Tue Sep 10 19:53:15 UTC 2024


** Description changed:

  * Problem description:
  
  It is quite easy to accidentally trigger the on-demand installation of
  LXD's snap which takes a while. This is something that can, for example,
  happen inside a LXD instance where the operator didn't notice the
  instance was "entered". Something:
  
  $ lxc launch ubuntu-minimal:noble c1
  $ lxc shell c1 # accidentally enter `c1`
  # lxc list     # try to interact with LXD in the host but mistakenly triggers lxd-installer
  
  This last step is taking a while because multiple snaps need to be
  installed due to that `lxc list` being run in the wrong environment
  (instance instead of host). This is why
  https://bugs.launchpad.net/ubuntu/+source/lxd-installer/+bug/2073941 and
  https://discourse.ubuntu.com/t/when-an-lxc-command-is-used-on-a-system-
  without-lxc-lxd-lxd-is-immediately-installed-should-it-be-that-way/46570
  were opened/reported.
  
  * Motivation for the FFe:
  
  A better behavior would be for `lxd-installer` to detect if there is a
  terminal and if yes, prompt for a confirmation before doing the lengthy
  installation process. If no terminal is detect, it should assume that
  LXD is to be installed on-demand (current behavior). That is what
  https://code.launchpad.net/~sdeziel/ubuntu/+source/lxd-
  installer/+git/lxd-installer/+merge/471653
  
  * Additional information:
  
  lxd-installer authoritative sources live at
  https://code.launchpad.net/~git-ubuntu-import/ubuntu/+source/lxd-
  installer/+git/lxd-installer/+ref/ubuntu/devel so this is not a new
  upstream release per se. As such, the only changelog would be:
  
    * scripts/lxc: ask before proceeding if interactive (LP: #2073941, LP:
  #2080277)
  
  This changelog and the associated changes are being proposed for merging
  in https://code.launchpad.net/~sdeziel/ubuntu/+source/lxd-
  installer/+git/lxd-installer/+merge/471653
  
  The changes themselves are simply to prompt for confirmation before
  proceeding with the lengthy installation if a terminal is detected.
  
  Source build logs:
  
- #FIXME
+ $ dpkg-buildpackage --build=source --no-sign -sa
+ dpkg-buildpackage: info: source package lxd-installer
+ dpkg-buildpackage: info: source version 8
+ dpkg-buildpackage: info: source distribution oracular
+ dpkg-buildpackage: info: source changed by Simon Deziel <simon.deziel at canonical.com>
+  dpkg-source --before-build .
+  debian/rules clean
+ dh clean
+    dh_auto_clean
+    dh_clean
+  dpkg-source -b .
+ dpkg-source: info: using source format '3.0 (native)'
+ dpkg-source: info: building lxd-installer in lxd-installer_8.tar.xz
+ dpkg-source: info: building lxd-installer in lxd-installer_8.dsc
+  dpkg-genbuildinfo --build=source -O../lxd-installer_8_source.buildinfo
+  dpkg-genchanges -sa --build=source -O../lxd-installer_8_source.changes
+ dpkg-genchanges: info: including full source code in upload
+  dpkg-source --after-build .
+ dpkg-buildpackage: info: source-only upload: Debian-native package
  
  Binary build logs:
  
- #FIXME
+ $ dpkg-buildpackage --build=binary --no-sign -sa
+ dpkg-buildpackage: info: source package lxd-installer
+ dpkg-buildpackage: info: source version 8
+ dpkg-buildpackage: info: source distribution oracular
+ dpkg-buildpackage: info: source changed by Simon Deziel <simon.deziel at canonical.com>
+ dpkg-buildpackage: info: host architecture amd64
+  dpkg-source --before-build .
+  debian/rules clean
+ dh clean
+    dh_auto_clean
+    dh_clean
+  debian/rules binary
+ dh binary
+    dh_update_autotools_config
+    dh_autoreconf
+    dh_auto_configure
+    dh_auto_build
+ 	make -j12 "INSTALL=install --strip-program=true"
+ make[1]: Entering directory '/home/ubuntu/lxd-installer'
+ true
+ make[1]: Leaving directory '/home/ubuntu/lxd-installer'
+    dh_auto_test
+    create-stamp debian/debhelper-build-stamp
+    dh_prep
+    dh_auto_install --destdir=debian/lxd-installer/
+ 	make -j12 install DESTDIR=/home/ubuntu/lxd-installer/debian/lxd-installer AM_UPDATE_INFO_DIR=no "INSTALL=install --strip-program=true"
+ make[1]: Entering directory '/home/ubuntu/lxd-installer'
+ mkdir -p /home/ubuntu/lxd-installer/debian/lxd-installer/usr/sbin /home/ubuntu/lxd-installer/debian/lxd-installer/usr/share/lxd-installer
+ install -m 0755 scripts/lxc /home/ubuntu/lxd-installer/debian/lxd-installer/usr/sbin
+ ln -sf lxc /home/ubuntu/lxd-installer/debian/lxd-installer/usr/sbin/lxd
+ install -m 0755 lxd-installer-service /home/ubuntu/lxd-installer/debian/lxd-installer/usr/share/lxd-installer
+ make[1]: Leaving directory '/home/ubuntu/lxd-installer'
+    dh_installdocs
+    dh_installchangelogs
+    dh_installsystemd
+    dh_perl
+    dh_link
+    dh_strip_nondeterminism
+    dh_compress
+    dh_fixperms
+    dh_missing
+    dh_installdeb
+    dh_gencontrol
+ dpkg-gencontrol: warning: Depends field of package lxd-installer: substitution variable ${shlibs:Depends} used, but is not defined
+    dh_md5sums
+    dh_builddeb
+ dpkg-deb: building package 'lxd-installer' in '../lxd-installer_8_all.deb'.
+  dpkg-genbuildinfo --build=binary -O../lxd-installer_8_amd64.buildinfo
+  dpkg-genchanges -sa --build=binary -O../lxd-installer_8_amd64.changes
+ dpkg-genchanges: info: binary-only upload (no source code included)
+  dpkg-source --after-build .
+ dpkg-buildpackage: info: binary-only upload (no source included)
+ 
  
  Install logs from a LXD VM:
  
- #FIXME
+ $ lxc launch ubuntu-daily:24.10 c1
+ Launching c1
+ $ lxc file push /tmp/l/lxd-installer_8_all.deb c1/tmp/
+ $ lxc shell c1                                                                         
+ root at c1:~# apt-get install /tmp/lxd-installer_8_all.deb 
+ Reading package lists... Done
+ Building dependency tree... Done
+ Reading state information... Done
+ Note, selecting 'lxd-installer' instead of '/tmp/lxd-installer_8_all.deb'
+ The following packages will be upgraded:
+   lxd-installer
+ 1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+ Need to get 0 B/4912 B of archives.
+ After this operation, 1024 B of additional disk space will be used.
+ Get:1 /tmp/lxd-installer_8_all.deb lxd-installer all 8 [4912 B]
+ (Reading database ... 38022 files and directories currently installed.)
+ Preparing to unpack /tmp/lxd-installer_8_all.deb ...
+ Unpacking lxd-installer (8) over (7) ...
+ Setting up lxd-installer (8) ...
+ Scanning processes...                                                                                                                     
+ 
+ No services need to be restarted.
+ 
+ No containers need to be restarted.
+ 
+ No user sessions are running outdated binaries.
+ 
+ No VM guests are running outdated hypervisor (qemu) binaries on this
+ host.
+ 
+ 
+ And now to confirm the prompt is only present when running interactively:
+ 
+ root at c1:~# lxc list
+ Would you like to install LXD snap now (Y/n)? 
+ n
+ 
+ 
+ When "scripted", there is no prompting:
+ 
+ root at c1:~# lxc list | cat
+ Installing LXD snap, please be patient.
+ If this is your first time running LXD on this machine, you should also run: lxd init
+ To start your first container, try: lxc launch ubuntu:24.04
+ Or for a virtual machine: lxc launch ubuntu:24.04 --vm
+ 
+ +------+-------+------+------+------+-----------+
+ | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+ +------+-------+------+------+------+-----------+
+ 
+ 
+ This shows that accidentally running a `lxc` command interactively will be easy to cancel.

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to lxd-installer in Ubuntu.
https://bugs.launchpad.net/bugs/2080277

Title:
  FFe: lxd-installer should prompt before installing LXD

Status in lxd-installer package in Ubuntu:
  New

Bug description:
  * Problem description:

  It is quite easy to accidentally trigger the on-demand installation of
  LXD's snap which takes a while. This is something that can, for
  example, happen inside a LXD instance where the operator didn't notice
  the instance was "entered". Something:

  $ lxc launch ubuntu-minimal:noble c1
  $ lxc shell c1 # accidentally enter `c1`
  # lxc list     # try to interact with LXD in the host but mistakenly triggers lxd-installer

  This last step is taking a while because multiple snaps need to be
  installed due to that `lxc list` being run in the wrong environment
  (instance instead of host). This is why
  https://bugs.launchpad.net/ubuntu/+source/lxd-installer/+bug/2073941
  and https://discourse.ubuntu.com/t/when-an-lxc-command-is-used-on-a-
  system-without-lxc-lxd-lxd-is-immediately-installed-should-it-be-that-
  way/46570 were opened/reported.

  * Motivation for the FFe:

  A better behavior would be for `lxd-installer` to detect if there is a
  terminal and if yes, prompt for a confirmation before doing the
  lengthy installation process. If no terminal is detect, it should
  assume that LXD is to be installed on-demand (current behavior). That
  is what https://code.launchpad.net/~sdeziel/ubuntu/+source/lxd-
  installer/+git/lxd-installer/+merge/471653

  * Additional information:

  lxd-installer authoritative sources live at
  https://code.launchpad.net/~git-ubuntu-import/ubuntu/+source/lxd-
  installer/+git/lxd-installer/+ref/ubuntu/devel so this is not a new
  upstream release per se. As such, the only changelog would be:

    * scripts/lxc: ask before proceeding if interactive (LP: #2073941,
  LP: #2080277)

  This changelog and the associated changes are being proposed for
  merging in https://code.launchpad.net/~sdeziel/ubuntu/+source/lxd-
  installer/+git/lxd-installer/+merge/471653

  The changes themselves are simply to prompt for confirmation before
  proceeding with the lengthy installation if a terminal is detected.

  Source build logs:

  $ dpkg-buildpackage --build=source --no-sign -sa
  dpkg-buildpackage: info: source package lxd-installer
  dpkg-buildpackage: info: source version 8
  dpkg-buildpackage: info: source distribution oracular
  dpkg-buildpackage: info: source changed by Simon Deziel <simon.deziel at canonical.com>
   dpkg-source --before-build .
   debian/rules clean
  dh clean
     dh_auto_clean
     dh_clean
   dpkg-source -b .
  dpkg-source: info: using source format '3.0 (native)'
  dpkg-source: info: building lxd-installer in lxd-installer_8.tar.xz
  dpkg-source: info: building lxd-installer in lxd-installer_8.dsc
   dpkg-genbuildinfo --build=source -O../lxd-installer_8_source.buildinfo
   dpkg-genchanges -sa --build=source -O../lxd-installer_8_source.changes
  dpkg-genchanges: info: including full source code in upload
   dpkg-source --after-build .
  dpkg-buildpackage: info: source-only upload: Debian-native package

  Binary build logs:

  $ dpkg-buildpackage --build=binary --no-sign -sa
  dpkg-buildpackage: info: source package lxd-installer
  dpkg-buildpackage: info: source version 8
  dpkg-buildpackage: info: source distribution oracular
  dpkg-buildpackage: info: source changed by Simon Deziel <simon.deziel at canonical.com>
  dpkg-buildpackage: info: host architecture amd64
   dpkg-source --before-build .
   debian/rules clean
  dh clean
     dh_auto_clean
     dh_clean
   debian/rules binary
  dh binary
     dh_update_autotools_config
     dh_autoreconf
     dh_auto_configure
     dh_auto_build
  	make -j12 "INSTALL=install --strip-program=true"
  make[1]: Entering directory '/home/ubuntu/lxd-installer'
  true
  make[1]: Leaving directory '/home/ubuntu/lxd-installer'
     dh_auto_test
     create-stamp debian/debhelper-build-stamp
     dh_prep
     dh_auto_install --destdir=debian/lxd-installer/
  	make -j12 install DESTDIR=/home/ubuntu/lxd-installer/debian/lxd-installer AM_UPDATE_INFO_DIR=no "INSTALL=install --strip-program=true"
  make[1]: Entering directory '/home/ubuntu/lxd-installer'
  mkdir -p /home/ubuntu/lxd-installer/debian/lxd-installer/usr/sbin /home/ubuntu/lxd-installer/debian/lxd-installer/usr/share/lxd-installer
  install -m 0755 scripts/lxc /home/ubuntu/lxd-installer/debian/lxd-installer/usr/sbin
  ln -sf lxc /home/ubuntu/lxd-installer/debian/lxd-installer/usr/sbin/lxd
  install -m 0755 lxd-installer-service /home/ubuntu/lxd-installer/debian/lxd-installer/usr/share/lxd-installer
  make[1]: Leaving directory '/home/ubuntu/lxd-installer'
     dh_installdocs
     dh_installchangelogs
     dh_installsystemd
     dh_perl
     dh_link
     dh_strip_nondeterminism
     dh_compress
     dh_fixperms
     dh_missing
     dh_installdeb
     dh_gencontrol
  dpkg-gencontrol: warning: Depends field of package lxd-installer: substitution variable ${shlibs:Depends} used, but is not defined
     dh_md5sums
     dh_builddeb
  dpkg-deb: building package 'lxd-installer' in '../lxd-installer_8_all.deb'.
   dpkg-genbuildinfo --build=binary -O../lxd-installer_8_amd64.buildinfo
   dpkg-genchanges -sa --build=binary -O../lxd-installer_8_amd64.changes
  dpkg-genchanges: info: binary-only upload (no source code included)
   dpkg-source --after-build .
  dpkg-buildpackage: info: binary-only upload (no source included)

  
  Install logs from a LXD VM:

  $ lxc launch ubuntu-daily:24.10 c1
  Launching c1
  $ lxc file push /tmp/l/lxd-installer_8_all.deb c1/tmp/
  $ lxc shell c1                                                                         
  root at c1:~# apt-get install /tmp/lxd-installer_8_all.deb 
  Reading package lists... Done
  Building dependency tree... Done
  Reading state information... Done
  Note, selecting 'lxd-installer' instead of '/tmp/lxd-installer_8_all.deb'
  The following packages will be upgraded:
    lxd-installer
  1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
  Need to get 0 B/4912 B of archives.
  After this operation, 1024 B of additional disk space will be used.
  Get:1 /tmp/lxd-installer_8_all.deb lxd-installer all 8 [4912 B]
  (Reading database ... 38022 files and directories currently installed.)
  Preparing to unpack /tmp/lxd-installer_8_all.deb ...
  Unpacking lxd-installer (8) over (7) ...
  Setting up lxd-installer (8) ...
  Scanning processes...                                                                                                                     

  No services need to be restarted.

  No containers need to be restarted.

  No user sessions are running outdated binaries.

  No VM guests are running outdated hypervisor (qemu) binaries on this
  host.

  
  And now to confirm the prompt is only present when running interactively:

  root at c1:~# lxc list
  Would you like to install LXD snap now (Y/n)? 
  n

  
  When "scripted", there is no prompting:

  root at c1:~# lxc list | cat
  Installing LXD snap, please be patient.
  If this is your first time running LXD on this machine, you should also run: lxd init
  To start your first container, try: lxc launch ubuntu:24.04
  Or for a virtual machine: lxc launch ubuntu:24.04 --vm

  +------+-------+------+------+------+-----------+
  | NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
  +------+-------+------+------+------+-----------+

  
  This shows that accidentally running a `lxc` command interactively will be easy to cancel.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/lxd-installer/+bug/2080277/+subscriptions




More information about the foundations-bugs mailing list