[Container-tools] DevAssistant + Nulecule
Tomas Radej
tradej at redhat.com
Mon May 25 13:19:42 UTC 2015
Hi, all.
As promised, I have compiled a list of Nulecule-related workflows that I
envision should be done with DevAssistant, and I'm putting it here for
reference and to request comments.
Since most of the runtime and deployment functionality is implemented in
the atomicapp [1], which is quite easy to use, it's my intention to
focus on the manipulation with the app, the spec, and the system
*before* the Nulecule file gets fed into atomicapp. DevAssistant can
wrap the atomicapp as well, but I'd do it only if you guys strongly feel
it should.
= Creating an App + Installing Dependencies =
One of DevAssistant's main features is installing dependencies, so
whatever packages are necessary to install when working with Nulecule
apps, they will be installed simply by running "da prep nulecule [--url
URL]", or just creating a new app (DevAssistant will perform the dep
check automatically). Such packages would probably be "docker-io",
"python-atomicapp" (once it's packaged), or "kubernetes-devel".
I already have an early version of the creator functionality [2], which
creates the basic filesystem layout for the app and fills in values
provided by the user. It doesn't do most of the dependency installation yet.
With the latest version of DevAssistant installed (v0.11.x) [3], you can
run "da pkg install nulecule" to install the assistants, and then "da
create nulecule -n NAME etc..." to actually create the app. I am
currently working on compiling a list of dependencies that running this
command will automatically install on the user's machine. By the way,
make sure you keep the nulecule package in DevAssistant up to date (by
running "da pkg update nulecule"), I make changes often.
= Validating an App =
In addition to that, you can validate the whole app by running "da extra
nulecule validate" in the app's directory. Not only the main Nulecule
spec is checked, but so is the filesystem layout. It's simple to add
more checks in the future.
The validation assistant makes use of the nulecule_validator lib I wrote
[4]. This library, of course, can be used on its own too.
= Adding Deployment Options =
This functionality is not available yet, but generally, it should work
as follows: You run "da tweak nulecule add_provider kubernetes
[--artifacts /path/to/dir/with/k8s/jsons]" in the app's directory, and
DevAssistant would automatically add kubernetes as a provider to your
app in the Nulecule file and a) link to existing k8s artifacts; b)
create some reasonably filled default artifacts and link to those.
= Adding Graph Components =
(Also not implemented yet) You'll also be able to add more components to
the graph by running "da tweak nulecule add_component --name NAME
[--source URL | --artifacts LIST OF ARTIFACTS SEPARATED BY SPACE]".
I am still not set on the issue if all the possible options should be
available to the user. After all, they can edit the file themself, so it
is my guess covering only the most common ones make sense. If the
assistant covers everything, the user may become overwhelmed by options.
= Other (?) =
There are certainly more use cases for DevAssistant than I have just
listed, so I'd like to hear your suggestions, please. DevAssistant can
manage dependencies, check if stuff is running, run scripts (like shell
scripts), run more complex, interactive scripts (in Python), wrap other
programs or libs, etc.
On the other hand, since it should be the go-to tool for starting
development with Nulecule apps, it shouldn't be made to be too large or
too smart for its own good. It's not and IDE, and it shouldn't be
considered one.
Thanks, Tomas
P. S. At the moment, it's pretty hard to run DevAssistant in a
containerized setup in a user-friendly way. We're working on
transforming it into a client/server tool so that development on Mac OS,
Windows, or even other Linux distros be much easier.
[1] https://github.com/projectatomic/atomicapp
[2] https://github.com/tradej/dap-nulecule - You install this package by
running "da pkg install nulecule" in DevAssistant versions 0.11.x
[3] This version is available in Fedora 22 beta or in Rawhide. You will
probably not be able to run the nulecule commands with older versions of DA.
[4] https://github.com/tradej/nulecule_validator
More information about the Container-tools
mailing list