How to tailor your application for a LXD cloud
This page is dedicated to more advanced topics related to using LXD with Juju. The main page is Using LXD with Juju.
The topics presented here are:
- Charms and LXD profiles
LXD Profiles
LXD profiles define a way to create and modify instances using configuration files. More information about LXD profiles can be found in their documentation.
Charms and LXD profiles
Juju (v.2.5.0
) supports LXD profiles for charms. This is implemented by including file lxd-profile.yaml
in a charm’s root directory. For example, here is a simple two-line file (this is taken from the Openvswitch charm):
config:
linux.kernel_modules: openvswitch,ip_tables,ip6_tables
The profile will be applied to a LXD container that the charm is deployed into. The following functionality is built in:
- A validity check is performed on the profile(s) during the deployment of the charm. This is based on a hardcoded list of allowed items, everything else being denied. The
--force
option can be used to bypass this check but this is not recommended. The list is:
config
-boot
-limits
-migration
devices
unix-char
unix-block
gpu
usb
- Profiles are upgraded during the upgrade of the charm (
juju upgrade-charm
). - Profiles are displayed at the machine level by using either the
show-machine
command or thestatus --format=yaml
command. Below is an example of the kind of information that can be obtained from either of these two commands:
lxd-profiles:
juju-default-lxd-profile-0:
config:
environment.http_proxy: ""
linux.kernel_modules: openvswitch,nbd,ip_tables,ip6_tables
security.nesting: "true"
security.privileged: "true"
description: lxd profile for testing, black list items grouped commented out
devices:
bdisk:
source: /dev/loop0
type: unix-block
sony:
productid: 51da
type: usb
vendorid: 0fce
tun:
path: /dev/net/tun
type: unix-char
See the LXD documentation to learn about the valid profile configuration options.
Last updated 6 days ago.