in a CC template for installing the Integration Server, it’s possible (necessary) to specify the list of the packages to install.
Is it possible to specify the package list in different layers and have CC to collect and install all the packages?
Here’s an example of what I’m saying.
Let’s say I’d like to have the layer “Server.Core” and the layer “BPM”. With the layer “Core”, only some packages should be installed (WmRoot, WmPublic). With the layer “BPM”, the package “WmPRT” should be installed.
I’d like to specify the two layers. In the end, I’d expect that CC installs the packages WmRoot, WmPublic, and WmPRT, i.e. that it collects the packages to install over all layers.
Hi,
When IS instance is declared in the template you can specify which packages should be provisioned into this instance by using ‘package.list’ parameter.
Note that these packages have to be first installed as ‘products’ in the same or previous layer/template.
Here is an example:
templates:
myis:
licenses:
"IntegrationServer/config/licenseKey.xml": ${is.license.key.alias}
products:
Deployer:
Monitor:
integrationServer: # the core IS product that owns the instance
Monitor:
primary.port: 5555
diagnostic.port: 5556
jmx.port: 5557
license.file: IntegrationServer/config/licenseKey.xml
package.list: WmMonitor
Deployer:
primary.port: 6666
diagnostic.port: 6667
jmx.port: 6668
license.file: IntegrationServer/config/licenseKey.xml
package.list: WmBrokerDeployer,WmNUMDeployer,WmDeployer
You do not need to specify core packages like WmRoot,WmPublic. They are always provisioned.
I must have been a bit unclear about what I want because your example does not quite fit my need.
I’d like to have three layers: One for the core IS, another for the Monitor (I’ll use your example) and still another for the Deployer, like this:
templates:
IS-Product: # This will install the product but will not set up an instance
products:
integrationServer:
Monitor-Product: # This will install the product but will not set up an instance
products:
Monitor:
Deployer-Product: # This will install the product but will not set up an instance
products:
Deployer:
IS-Instance: # This will set up an instance with just the basic packages
products:
integrationServer:
default: # Name of the instance we're working on
# . . . (config etc)
Monitor-Instance: # This will install monitor packages in the instance
products:
integrationServer:
default: # Name of the instance we're working on
package.list: WmMonitor
Deployer-Instance: # This will install deployer packages in the instance
products:
integrationServer:
default: # Name of the instance we're working on
package.list: WmBrokerDeployer,WmNUMDeployer,WmDeployer
layers:
IS-with-Instance:
templates: [IS-Product, IS-Instance]
Monitor-with-Instance:
templates: [Monitor-Product, Monitor-Instance]
Deployer-with-Instance:
templates: [Deployer-Product, Deployer-Instance]
provision:
default:
mySingleNode: [IS-with-Instance, Monitor-with-Instance, Deployer-with-Instance]
I.e. the whole Integration Server is set up not via just one but via three layers, I hope you get the idea.
My expectation / desired result is that the above fragment would install the IS with the Monitor and Deployer components, and set up an instance named “default” with IS packages WmMonitor, WmBrokerDeployer, WmNUMDeployer, WmDeployer. I.e. the package list is the cumulated list from all the templates. This would allow me to construct templates in a very modular way.
I understand how your solution would work. Do you mean that my approach will NOT work? I.e. that it is not possible for CC to collect e.g. the IS packages over different layers and templates within them?
For some reasons I’d prefer to have many layers – like in the example I gave.
The layers should be used for actual software stack layers definition that can be deployed and scale independently from other layers.
Inline templates should be used as tasks/steps to build them.
What you’d like to do will work if you always co-locale all your layers which is a limitation of the generic design.
But if this is what you prefer, go for it, it will work, just ensure that your layers map to the same set of nodes.
OK, that’s what I wanted to know. Thank you very much! The consistency will be provided by the fact that we generate the templates not manually but with a tool.
I created the tool as we planned to use CC to set up our servers. We still do not use CC because there were always some issues preventing its usage (some components could not be set up in the desired way). It’s possible that the problems are resolved in the mean time, we didn’t try again.
But the idea was that you have small files, each describing an aspect of the whole system. Each file is small and very well maintainable.
Then you have another file that describes how the small building blocks should be combined to produce more coarse grained features. And then you’d have yet another file describing which features should be installed to which nodes.
The tool processes all the files and produces a big template which can be fed to CC. An aspect might occur hundreds of times in the resulting template. The template is guaranteed to be consistent. If the definition of an aspect changes, you just edit a small file for that aspect, and then run the tool again.
I.e. it is “divide and conquer” approach.
There is a smart mechanism allowing to set certain values (e.g. node address) in a consistent way.
Since we don’t use CC, we also do not use the tool. Besides, this approach (creating large templates on the client side) is not the approach chosen by SAG. SAG chose to let people to compose bigger templates via CC GUI (or the command line) on the server side. Which is an inferior approach IMO, but my opinion is biased.