Graph Resources

The graph definition has already been introduced.
However, it does not answer the question: how does Roboconf deal with deployment configuration?

Clearly, the graph model is artificial. One can put whatever he wants in it.
The real logic processing will be handled by a Roboconf plug-in (e.g. Bash or Puppet). These plug-ins will use resources, associated with a component, to deploy its instances.

So, for every component in the graph, a project must contain a sub-directory with the same name than the component.
If we take the following graph definition…


VM {
	alias: Virtual Machine;
	installer: iaas;
	# ...
}

MySQL {
	alias: MySQL;
	installer: puppet;
	# ...
}

Tomcat {
	alias: Tomcat with Rubis;
	installer: puppet;
	# ...
}

Apache {
	alias: Apache Load Balancer;
	installer: puppet;
	# ...
}

… then the file structure will look like…

MyApp/
├── descriptor/
│   └── application.properties
├── graph/
│   ├── main.graph
│   ├── VM/
│   ├── Tomcat/
│   ├── MySQL/
│   └── Apache/
└── instances/
	└── ...

These sub-directories will contain the components resources.
These resources will be used by the Roboconf plug-in identified by the installer name. The kind of resources to put depends on the plug-in.

Writing the plug-in configurations is what takes most of the time.
Roboconf’s roadmap includes a Maven plug-in so that people will be able to reuse graph model and resources among projects.