Conjure-up 2.3.alpha 'Could not determine LXD version'

The current snap flavors of conjure-up:

drpaneas@ubuntu1704:~$ sudo snap info conjure-up
name:      conjure-up
summary:   "Package runtime for conjure-up spells"
publisher: canonical
contact:   https://github.com/conjure-up/conjure-up
description: |
  This package provides conjure-up, an interface to installing spells that
  provide the user with an end to end walkthrough experience for installing and
  using big software.
  
channels:                                          
  latest/stable:    2.2.0                    (453) 88MB classic
  latest/candidate: 2.2.1-20170619.2006      (461) 92MB classic
  latest/beta:      2.2.0                    (432) 88MB classic
  latest/edge:      2.3-alpha1-20170619.1906 (460) 92MB classic

I am going to install the latest one, which in that context, I mean 2.3-alpha1-20170619.1906.

drpaneas@ubuntu1704:~$ sudo snap install conjure-up --edge
error: This revision of snap "conjure-up" was published using classic confinement and thus may perform
       arbitrary system changes outside of the security sandbox that snaps are usually confined to, which
       may put your system at risk.

       If you understand and want to proceed repeat the command including --classic.

Well, I am pretty OK with ignoring this warning, so let’s roll the dice:

drpaneas@ubuntu1704:~$ sudo snap install conjure-up --edge --classic
2017-06-20T00:14:07+02:00 INFO cannot auto connect core:core-support-plug to core:core-support: (slot auto-connection), existing connection state "core:core-support-plug core:core-support" in the way
2017-06-20T00:14:07+02:00 INFO Waiting for restart...
2017-06-20T00:14:07+02:00 INFO cannot auto connect core:core-support-plug to core:core-support: (slot auto-connection), existing connection state "core:core-support-plug core:core-support" in the way
conjure-up (edge) 2.3-alpha1-20170619.1906 from 'canonical' installed

So, as you can see, I’ve got it installed, along with core:

drpaneas@ubuntu1704:~$ sudo snap list
Name        Version                   Rev   Developer  Notes
conjure-up  2.3-alpha1-20170619.1906  460   canonical  classic
core        16-2                      1689  canonical  -

Now let’s try to run it:

drpaneas@ubuntu1704:~$ conjure-up
Traceback (most recent call last):
  File "/snap/conjure-up/460/bin/conjure-up", line 11, in <module>
    load_entry_point('conjure-up==2.3a1', 'console_scripts', 'conjure-up')()
  File "/snap/conjure-up/460/lib/python3.6/site-packages/conjureup/app.py", line 241, in main
    utils.lxd_version(),
  File "/snap/conjure-up/460/lib/python3.6/site-packages/conjureup/utils.py", line 205, in lxd_version
    raise Exception("Could not determine LXD version.")
Exception: Could not determine LXD version.

As you can see, it complains about not able to determine the LXD version – which actually makes sense because I don’t even have LXD installed in my machine:

drpaneas@ubuntu1704:~$ dpkg-query -L lxd
dpkg-query: package 'lxd' is not installed

According to a post from @adam.stokes, this has to be already fixed, but apparently it’s not. In a matter of fact, I’ve installed also the other flavor of it, just to make sure I am not hitting any alpha bug.

So, let’s remove the snap version of conjure-up and try the one from the repository:

drpaneas@ubuntu1704:~$ sudo snap remove conjure-up
conjure-up removed

As you can see it has been successfully removed:

drpaneas@ubuntu1704:~$ sudo snap list
Name  Version  Rev   Developer  Notes
core  16-2     1689  canonical  -

Now, let’s see what version of conjure-up is avail in our repos (currently running 17.04):

drpaneas@ubuntu1704:~$ sudo apt-cache madison conjure-up
conjure-up |      2.0.1 | http://de.archive.ubuntu.com/ubuntu zesty/universe amd64 Packages
conjure-up |      2.0.1 | http://de.archive.ubuntu.com/ubuntu zesty/universe i386 Packages

So, the 2.0.1 seems to be quite outdated compared to 2.3.alpha, but anyway, let’s give it a shot:

drpaneas@ubuntu1704:~$ sudo apt-get install conjure-up
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  bsdtar distro-info dns-root-data dnsmasq-base ebtables git git-core git-man javascript-common jq juju-2.0 libarchive-tools liberror-perl libgolang-1.7-std1 libgolang-github-gorilla-context1 libgolang-github-gorilla-mux1 libgolang-github-gorilla-websocket1
  libgolang-github-gosexy-gettext1 libgolang-github-mattn-go-colorable1 libgolang-github-mattn-go-sqlite3-1 libgolang-github-olekukonko-tablewriter1 libgolang-github-pborman-uuid1 libgolang-gocapability1 libgolang-golang-x-crypto1 libgolang-golang-x-net1
  libgolang-golang-x-text1 libgolang-gopkg-flosch-pongo2.v3-1 libgolang-gopkg-inconshreveable-log15.v2-1 libgolang-gopkg-lxc-go-lxc.v2-1 libgolang-gopkg-tomb.v2-1 libgolang-gopkg-yaml.v2-1 libgolang-goprotobuf1 libgolang-petname1 libjq1 libjs-jquery libjs-sphinxdoc
  libjs-underscore liblxc1 libonig4 lxc-common lxcfs lxd lxd-client python3-bson python3-bson-ext python3-petname python3-prettytable python3-progressbar python3-requests-oauthlib python3-termcolor python3-urwid python3-ws4py uidmap
Suggested packages:
  shunit2 git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch git-cvs git-mediawiki git-svn apache2 | lighttpd | httpd criu lxd-tools python3-cherrypy3 | python3-tornado
The following NEW packages will be installed:
  bsdtar conjure-up distro-info dns-root-data dnsmasq-base ebtables git git-core git-man javascript-common jq juju-2.0 libarchive-tools liberror-perl libgolang-1.7-std1 libgolang-github-gorilla-context1 libgolang-github-gorilla-mux1 libgolang-github-gorilla-websocket1
  libgolang-github-gosexy-gettext1 libgolang-github-mattn-go-colorable1 libgolang-github-mattn-go-sqlite3-1 libgolang-github-olekukonko-tablewriter1 libgolang-github-pborman-uuid1 libgolang-gocapability1 libgolang-golang-x-crypto1 libgolang-golang-x-net1
  libgolang-golang-x-text1 libgolang-gopkg-flosch-pongo2.v3-1 libgolang-gopkg-inconshreveable-log15.v2-1 libgolang-gopkg-lxc-go-lxc.v2-1 libgolang-gopkg-tomb.v2-1 libgolang-gopkg-yaml.v2-1 libgolang-goprotobuf1 libgolang-petname1 libjq1 libjs-jquery libjs-sphinxdoc
  libjs-underscore liblxc1 libonig4 lxc-common lxcfs lxd lxd-client python3-bson python3-bson-ext python3-petname python3-prettytable python3-progressbar python3-requests-oauthlib python3-termcolor python3-urwid python3-ws4py uidmap
0 upgraded, 54 newly installed, 0 to remove and 3 not upgraded.
Need to get 48,1 MB of archives.
After this operation, 264 MB of additional disk space will be used.
Do you want to continue? [Y/n] y

As you can see, lxd seems to be a valid dependency in this case, so it makes sense that it is going to be installed. After the installation got finished, there was some kind of interesting output during the post installation scripts of the individual packages that were installed (as part of the conjure-up dependencies):

ebtables:

Setting up ebtables (2.0.10.4-3.5ubuntu1.17.04.1) ...
Created symlink /etc/systemd/system/multi-user.target.wants/ebtables.service → /lib/systemd/system/ebtables.service.
update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults

^ Do you think I have to file a bug for this warning? Seems pretty unharmed, but it’s kind of ugly, isn’t?

lxcfs:

Setting up lxcfs (2.0.7-0ubuntu1~17.04.1) ...
Created symlink /etc/systemd/system/multi-user.target.wants/lxcfs.service → /lib/systemd/system/lxcfs.service.

lxd-containers:

Setting up lxd (2.12-0ubuntu3) ...
Created symlink /etc/systemd/system/multi-user.target.wants/lxd-containers.service → /lib/systemd/system/lxd-containers.service.
Created symlink /etc/systemd/system/sockets.target.wants/lxd.socket → /lib/systemd/system/lxd.socket.
Setting up lxd dnsmasq configuration.

To go through the initial LXD configuration, run: lxd init

conjure-up:

Setting up conjure-up (2.0.1) ...
Created symlink /etc/systemd/system/multi-user.target.wants/conjure-up.service → /lib/systemd/system/conjure-up.service.

So, let’s check if the aforementioned systemd-services are active or not:

drpaneas@ubuntu1704:~$ sudo systemctl status ebtables.service
● ebtables.service - ebtables ruleset management
   Loaded: loaded (/lib/systemd/system/ebtables.service; enabled; vendor preset: enabled)
   Active: active (exited) since Tue 2017-06-20 00:29:42 CEST; 8min ago
 Main PID: 3982 (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/ebtables.service

Jun 20 00:29:42 ubuntu1704 systemd[1]: Starting ebtables ruleset management...
Jun 20 00:29:42 ubuntu1704 systemd[1]: Started ebtables ruleset management.

drpaneas@ubuntu1704:~$ sudo systemctl status lxcfs.service
● lxcfs.service - FUSE filesystem for LXC
   Loaded: loaded (/lib/systemd/system/lxcfs.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2017-06-20 00:29:43 CEST; 7min ago
     Docs: man:lxcfs(1)
 Main PID: 4050 (lxcfs)
   CGroup: /system.slice/lxcfs.service
           └─4050 /usr/bin/lxcfs /var/lib/lxcfs/

Jun 20 00:29:43 ubuntu1704 lxcfs[4050]:   1: fd:   6: freezer
Jun 20 00:29:43 ubuntu1704 lxcfs[4050]:   2: fd:   7: pids
Jun 20 00:29:43 ubuntu1704 lxcfs[4050]:   3: fd:   8: cpuset
Jun 20 00:29:43 ubuntu1704 lxcfs[4050]:   4: fd:   9: perf_event
Jun 20 00:29:43 ubuntu1704 lxcfs[4050]:   5: fd:  10: memory
Jun 20 00:29:43 ubuntu1704 lxcfs[4050]:   6: fd:  11: blkio
Jun 20 00:29:43 ubuntu1704 lxcfs[4050]:   7: fd:  12: net_cls,net_prio
Jun 20 00:29:43 ubuntu1704 lxcfs[4050]:   8: fd:  13: devices
Jun 20 00:29:43 ubuntu1704 lxcfs[4050]:   9: fd:  14: cpu,cpuacct
Jun 20 00:29:43 ubuntu1704 lxcfs[4050]:  10: fd:  15: name=systemd

drpaneas@ubuntu1704:~$ sudo systemctl status lxd-containers.service
● lxd-containers.service - LXD - container startup/shutdown
   Loaded: loaded (/lib/systemd/system/lxd-containers.service; enabled; vendor preset: enabled)
   Active: active (exited) since Tue 2017-06-20 00:29:45 CEST; 9min ago
     Docs: man:lxd(1)
 Main PID: 7192 (code=exited, status=0/SUCCESS)
      CPU: 30ms
   CGroup: /system.slice/lxd-containers.service

Jun 20 00:29:45 ubuntu1704 systemd[1]: Starting LXD - container startup/shutdown...
Jun 20 00:29:45 ubuntu1704 systemd[1]: Started LXD - container startup/shutdown.

drpaneas@ubuntu1704:~$ sudo systemctl status conjure-up.service
● conjure-up.service - conjure-up - network bridge
   Loaded: loaded (/lib/systemd/system/conjure-up.service; enabled; vendor preset: enabled)
   Active: active (exited) since Tue 2017-06-20 00:29:46 CEST; 9min ago
     Docs: man:conjure-up(1)
 Main PID: 7379 (code=exited, status=0/SUCCESS)
      CPU: 6ms
   CGroup: /system.slice/conjure-up.service

Jun 20 00:29:46 ubuntu1704 systemd[1]: Starting conjure-up - network bridge...
Jun 20 00:29:46 ubuntu1704 systemd[1]: Started conjure-up - network bridge.

Well, all of them seems to be both active and enabled. So, let’s run conjure-up again:

drpaneas@ubuntu1704:~$ conjure-up
[info] No spells found, syncing from registry, please wait.

             Choose from this list of recommended spells                                                                                                                                                                                                             
                                                                                                                                                                                                                            
Apache Hadoop + Apache Kafka Cluster                                                                                                                               
Apache Hadoop + Apache Spark Cluster                                                                                                                               
Apache Hadoop Cluster                                                                                                                                              
Apache Hadoop/Spark/Zeppelin Realtime Syslog Analytics                                                                                                             
Apache Spark Cluster                                                                                                                                               
HA Ghost with MySQL                                                                                                                                                
Kubernetes Core                                                                                                                                                    
Landscape                                                                                                                                                          
OpenStack with NovaKVM                                                                                                                                             
 OpenStack with NovaLXD                                                                                                                                             
The Canonical Distribution of Kubernetes                                                                                                                           

Ah, as u can see, it works perfectly.
So, it seems that the snap version of conjure-up is kind of broken. Am I right, or I missed something?

PS: I am not sure if this place (forum) is the correct one for posting bugs. Is it OK to post it here or you guys would prefer it in github issues?

Greetings, Panos

Actually you do have LXD installed as discussed in my other forum post (which you’ve also responded to). We don’t own the LXD namespace so it’s found under conjure-up.lxd and conjure-up.lxc.

The traceback is concerning as the SNAP path’s should be in your environment when running conjure-up.

Your best bet is to file this over at https://github.com/conjure-up/conjure-up so we can continue to investigate.

1 Like

Indeed, there are conjure-up.lxd and conjure-up.lxc files under the /snap/conjure-up/current directory. I was under the (apparently wrong) impression that the conjure-up would have installed the lxd snap from the store.

$ sudo snap find lxd
Name             Version  Developer  Notes  Summary
lxd-demo-server  git      stgraber   -      Online software demo sessions using LXD
lxd              2.14     canonical  -      System container manager and API <--- this one

I am pretty new to conjure so this is a new world for me, discovering how it works. I guess, more valuable information can be found in the developers guide.

Anyway, I’ve filed the 955-issue in Github. As I said, I am no expert, but my gut feeling tells me that the root of the problem might be this log entry:

./lxd: error while loading shared libraries: liblxc.so.1: cannot open shared object file: No such file or directory

Let’s move the discussion over GH :wink:

perhaps another incarnation of https://bugs.launchpad.net/ubuntu-image/+bug/1694982

The problem is fixed by PR#972 for me. More details can be found at github: https://github.com/conjure-up/conjure-up/issues/955#issuecomment-310173669

Thanks everybody who helped get this fixed :slight_smile: :smiley: