User Manual

conjure-up is a thin layer spanning a few different underlying technologies - Juju, MAAS and LXD.

conjure-up provides you with a streamlined, turnkey solution. In order to provide that streamlined approach, conjure-up makes use of processing scripts.

Processing scripts give you the flexibility to alter LXD profiles in order to expose additional network interfaces to Neutron services, import images into Glance once the service is available, or notifying the Deployment status screen that your solution is ready and can be viewed at a specific URL.

With these powerful concepts you can package up the solution that can then be provided to coworkers who can easily deploy your solutions in any Public Cloud, MAAS, or LXD.

Getting started

Hardware requirements

For Public Cloud deployments hardware requirements (constraints) are handled by the Spell authors and will automatically be allocated during deploy.

For localhost deployments the following setup is recommended:

  • 2 cores
  • 16G RAM
  • 32G Swap
  • 250G SSD

Update your system

It is always recommended to have the latest packages installed prior to running conjure-up:

sudo apt update
sudo apt upgrade

Installing conjure-up

conjure-up is available on Ubuntu Xenial 16.04 LTS and macOS


sudo snap install conjure-up --classic

Note: If above command fails you’ll want to make sure snapd is installed with sudo apt install snapd


brew install conjure-up

Upcoming releases

If you want to preview of the next release, the latest beta version can be installed with the following command:

sudo snap install conjure-up --classic --beta

For the most recent changes, install the edge release:

sudo snap install conjure-up --classic --edge

If you have conjure-up already installed, you can update to a different snap channel with:

sudo snap refresh conjure-up --classic --edge


sudo snap refresh conjure-up --classic --beta

Users of LXD

conjure-up requires that the minimum version of LXD be 3.0.0. Additionally, LXD should be configured prior to running.

Install LXD

To install LXD run the following:

sudo snap install lxd
/snap/bin/lxd init  #  Notice there is NO __sudo__ prepended here.

Snaps are the recommended installation method. In upcoming Ubuntu releases the snap version of LXD will be the only recommended way of installing and using LXD. For the best experience, it is recommended to migrate from the deb LXD packaging:


This will move all container specific data to the snap version and clean up the unused debian packages.

Ubuntu for Desktops

In order to access the LXD service your $USER will need to be apart of the lxd group. To add your $USER to lxd group perform the following:

sudo usermod -a -G lxd $USER
newgrp lxd

Note: This only allows the current shell to have access to the lxd group. The recommended way is to completely logout of your system so that the lxd group can be properly applied.

Ubuntu for Servers

By default, Ubuntu Server has the lxd group associated with your default $USER. To verify, run the following:

uid=1000(ubuntu) gid=1000(ubuntu) groups=1000(ubuntu),4(adm),27(sudo),129(lxd)

If not, simply re-run the usermod and newgrp commands:

sudo usermod -a -G lxd $USER
newgrp lxd

LXD Storage

At least one storage pool must be created and the default profile be set to use that storage device:

/snap/bin/lxc storage list
|  NAME   | DESCRIPTION | DRIVER |                     SOURCE                     | USED BY |
| default |             | dir    | /var/snap/lxd/common/lxd/storage-pools/default | 1       |
/snap/bin/lxc storage show default
  source: /var/snap/lxd/common/lxd/storage-pools/default
description: ""
name: default
driver: dir
- /1.0/profiles/default

Note: If you are planning on deploying Kubernetes onto LXD via the localhost provider, please see the limitations section of the Kubernetes Spellbook.

LXD Networking

For localhost deployments, LXD must have a network bridge defined:

/snap/bin/lxc network create lxdbr0 ipv4.address=auto ipv4.nat=true ipv6.address=none ipv6.nat=false

Note: conjure-up does not support IPv6 at this time.

To verify that a bridge is configured properly you will need to inspect the config:

/snap/bin/lxc network show lxdbr0
  ipv4.nat: "true"
  ipv6.address: none
  ipv6.nat: "false"
description: ""
name: lxdbr0
type: bridge
used_by: []
managed: true

You will also want to make sure that the LXD default profile is set to use lxdbr0 as its bridge:

/snap/bin/lxc profile show default
config: {}
description: Default LXD profile
    nictype: bridged
    parent: lxdbr0
    type: nic
    path: /
    pool: default
    type: disk
name: default
used_by: []

Note: If this is a brand new LXD install and your profile does not look like the one above, run /snap/bin/lxc profile edit default and make the necessary adjustments.

Verify container creation and network accessibility

lxc launch ubuntu:16.04 u1
lxc exec u1 ping

Once satisfied your container can reach out to the internet, you can stop and remove that container:

lxc stop u1
lxc delete u1

Summon a Spell

To deploy solutions such as Kubernetes you will summon a spell:

conjure-up kubernetes

To see a list of all available spells run:


Note: Several remote locations are supported - please see Advanced Spell Summoning for further details


To remove deployments:


To uninstall conjure-up itself:

sudo snap remove conjure-up