Assumptions: the charm name is fluentd
Register an account on launchpad, if you don't already have one. You'll need the name later in the process.
- Create a launchpad branch of the deployable charm
[~/charms/layers/fluentd] $ charm build
series: xenial | |
services: | |
mariadb: | |
charm: "cs:trusty/mariadb-3" | |
num_units: 1 | |
annotations: | |
"gui-x": "539" | |
"gui-y": "494.7050807568877" | |
to: | |
- "0" |
#!/bin/bash | |
# Huge pages 1G auto mount | |
mkdir -p /mnt/huge | |
if ! grep -q "Huge pages" /etc/fstab | |
then | |
echo "" >> /etc/fstab | |
echo "# Huge pages" >> /etc/fstab | |
echo "nodev /mnt/huge hugetlbfs pagesize=1GB 0 0" >> /etc/fstab |
This document is intended to aid the development workflow described in Developer HowTo for UI Module for Open Source Mano.
In order to develop in your preferred IDE/text editor, you can "bind mount" a directory from your local computer into an LXD container running on the same host.
First, find out your uid:
$ id
id
uid=1000(stone) gid=1000(stone) groups=1000(stone),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),128(sambashare),129(lxd),131(kismet),138(libvirtd)
lxc launch ubuntu:16.04 charm-snap -c security.nesting=true -c security.privileged=true
lxc exec charm-snap -- apt update
lxc exec charm-snap -- apt install -y squashfuse
# Restart required to avoid 'Setup snap "core" (3748) security profiles (cannot setup udev for snap "core": cannot reload udev rules: exit status 2'
lxc restart charm-snap
lxc exec charm-snap -- snap install charm
lxc exec charm-snap -- sh -c "rm -rf charms/layers; mkdir -p charms/layers; cd charms/layers; charm create simple; cd simple; charm build"
INFO: Using default charm template (reactive-python). To select a different template, use the -t option.
#!/bin/bash | |
# | |
# This script will create xenial (and trusty, et al) lxd images that will | |
# be used by the lxd provider in juju 2.1+ It is for use with the lxd | |
# provider for local development and preinstalls a common set of production | |
# packages. | |
# | |
# This is important, as between them, basenode and layer-basic install ~111 | |
# packages, before we even get to any packages installed by your charm. | |
# |
An example of connecting to your local LXD daemon.
from charms.reactive import when, when_not, set_flag | |
from charmhelpers.core.hookenv import log, config | |
from charms.reactive.flags import register_trigger | |
# Register a trigger so that we can respond to config.changed, even if | |
# it's being cleared by another handler | |
register_trigger(when='config.changed', | |
set_flag='trigger.config') |