I want to make a service consisting of multiple nodes running multiple services that work together. I can make a charm for every single node, but then the user would have to know what charms are required and how they have to work together. I want the user to be able to make a base system consisting of multiple charms on multiple nodes with just one click.
Is this possible? I see two solutions, but I don't know if this functionality exists.
- I make some kind of "blueprint" that adds multiple charms and connections
- I can "nest" charms so adding one charm would add a lot of charms and connections.
I would like it if the user is able to do this in the GUI. Making a script that adds multiple Charms is not an ideal solution.
Thanks!
PS: I'm using manual provisioning, if that changes anything.
Yes, this is possible via Juju bundles, here are the instructions:
Basically you can go into the GUI, either on http://jujucharms.com or one you've deployed yourself, and then model the deployment how you want and then export that as a .yaml file which you can either share with the community or pass along your coworkers, etc.
You can also manually edit the yaml file afterwards. One of the nicer things about bundles is that it can declare just about anything so not just services but specific things like amount of RAM and CPU, this ensures that the deployment is consistent no matter who deploys it.
In your case I would just provide the bundle to the user, and they can just drag it from their desktop right into the Juju GUI and it will deploy.
Here's a bunch of bundles if you want to see existing ones:
And here's the documentation for
juju deployer
, which is a handy tool for deploying bundles: