One of the core management tools for JBoss Operations Network is to create, update, or remove content from its managed resources. Content can be anything associated with a resource or configuration, such as text files, binary files like JARs, EARs, and WARs, patches, and XML files. That content can be deployed on a managed resource to update that resource's configuration, to create a child resource, or to deploy an entirely new application.
There are two ways to manage content for resources:
Resource-level content allows a specific managed resource, usually a JBoss application server or a web server, to be associated with stored and versioned packages in named repositories. These packages can be uploaded into JBoss ON (so JBoss ON is essentially the content repository), they can be pulled from an external repository, or they can be discovered through agent plug-ins. In other words, there are three actions that resource-level content management can perform:
It can deliver packages, updates, and patches to a resource.
It can deploy content to a resource and even create a new child resource. This is particularly useful with web and application servers which can have different contexts as children.
It can discover the current packages installed on a resource, creating a package digest that administrators can use to manage that asset.
Resource-level content management is limited how far it can be used to create resources. That is why JBoss ON has another system of deploying content, one that allows it to deploy full application servers or to consistently apply content across multiple resources: provisioning through bundles.
Bundles are added to the JBoss ON server, so they are not restricted to a single resource. They are deployed to compatible groups of resources, either platforms or JBoss servers (or other resource types which define a bundle target in their plug-in descriptor). This allows multiple resources to be updated at once, using the same content.
Bundle provisioning also allows more flexible and complex deployment options:
Use Ant calls to perform operations before or after deploying the bundle
Allow user-defined values or edits to configuration at the time a bundle is provisioned
Have multiple versions of the same content bundle deployed and deployable to resources at the same time
Revert to an earlier bundle version