additional catering towards the application developer
Adam Stokes
adam.stokes at canonical.com
Wed Dec 9 17:28:11 UTC 2015
I wanted to write this to get a discussion going around how we can better
support application developers. This is something I've been thinking about
for awhile and was further convinced to write this email after seeing posts
like:
http://askubuntu.com/questions/635758/is-juju-a-suitable-tool-for-development-as-well-as-deployment
The scenario:
In its simplest form, I am writing a web application that needs a database.
I
would like to quickly startup a postgresql server and grab it's connection
information.
How's its done with docker:
$ docker pull k0st/alpine-postgres
$ docker run --name myapp -e POSTGRES_USER=user -e
POSTGRES_PASSWORD=password -e POSTGRES_DB=testdb k0st/alpine-postgres
$ docker inspect --format '{{ .NetworkSettings.IPAddress }}' myapp
172.16.0.5
>From here you can build your connection string:
postgresql://user:password@172.16.0.5:5432/testdb
And now how we could possibly accomplish this with Juju today:
1. Using Juju actions:
$ juju deploy postgresql
$ juju action do postgresql/0 createdb username=user password=pass
database=testdb
Action queued with id 32432-432-432-432-432-432
$ juju action fetch 32432-432-432-432-432-432
.. Parse the results
message: "" # No error message.
results:
result-map:
connection_string: postgresql://user:pass@
<unit-public-address>:5432/testdb
message: Hello world!
outcome: success
status: completed
2. Adding support in the charm hook (config-changed)
$ juju deploy postgresql
$ juju set postgresql "createdb=user:pass:dbname"
.. config-changed
status-set "active", "db created: postgresql://user:pass@unit-public-address
:5432/dbname"
$ juju status postgresql
Look for the status message in the output.
As you can tell between docker and juju we're still looking at 3 commands
for
just standing a database up, creating the db, and getting its connection
details.
It would be really nice if I could just do:
$ juju deploy postgresql
$ juju postgresql create-db --username=user --password=pass --database=mydb
# Default to json output for our application to consume and make use of
{"error": "", "result": "postgresql://user:pass@unit-public-address
:5432/mydb"}
Even an action would still be ok if the action would print the results to
stdout
$ juju action do postgresql/0 create-db username=user password=pass
database=mydb
{"error": "", "result": "postgresql://user:pass@unit-public-address
:5432/mydb"}
For me, personally, I don't want to use docker or vagrant or any other tool
as
I feel Juju is fully capable of catering to the application developer.
Thoughts?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ubuntu.com/archives/juju/attachments/20151209/995ff0cb/attachment.html>
More information about the Juju
mailing list