The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

Getting Started

Follow the same guidelines as normal for creating a Juju charm.

Directory Layout

Structure your project should look similar to:

  charm-project/
    hooks/
      install
      config-changed
      start
      stop
    tests/
      00-basic.test
    lib/
      myplugin.pm
    t/
      00_unittest1.t
    config.yaml
    metadata.yaml
    LICENSE
    README.md

Writing charm hooks

Hooks are written using perl with automatically imported helpers for convenience. When developing hooks they should reside in hooks.

A requirement for all charms using this library is to make sure to "bootstrap" the install hook. For example, edit hooks/install

   #!/usr/bin/env perl

   # Setup correct paths

   use FindBin;
   use lib "$Bin/../lib";

   use charm;

   pkg [
    'nginx-full', 'php-fpm',      'php-cgi',      'php-curl', 'php-gd', 'php-json',
    'php-mcrypt', 'php-readline', 'php-mbstring', 'php-xml'
   ],
   ensure    => "present",
   on_change => sub { say "All latest packages installed."; };

   my $hook_path = $ENV{JUJU_CHARM_DIR};