A Configuration group or Config group is type of resource that supports grouping of configuration resources and host resources for a service. Host is identified using the registered hostname of the host and the configuration resource is identified by the type and tag.
Example list of all config groups defined for a cluster:
GET /api/v1/clusters/c1/config_groups
{
"href" : "http://your.ambari.server/api/v1/clusters/c1/config_groups",
"items" : [
{
"href" : "http://your.ambari.server/api/v1/clusters/c1/config_groups/2",
"ConfigGroup" : {
"cluster_name" : "c1",
"id" : 2
}
}
]
}
Hosts grouped together based on certain similar characteristics will essentially share the same configuration for a Service and its components deployed on those hosts; consequently, different configuration for a different service.
Get call to view details of a particular config group identified by an :id
GET /api/v1/clusters/c1/config_groups/:id
{
"href" : "http://your.ambari.server/api/v1/clusters/c1/config_groups/:id",
"ConfigGroup" : {
"cluster_name" : "c1",
"description" : "Next Gen Slaves Group",
"desired_configs" : [
{
"tag" : "nextgen1",
"type" : "core-site",
"href" : "http://your.ambari.server/api/v1/clusters/c1/configurations?type=core-site&tag=nextgen1"
}
],
"group_name" : "Test Datanode group",
"hosts" : [
{
"host_name" : "host1",
"href" : "http://your.ambari.server/api/v1/clusters/c1/hosts/host1"
}
],
"id" : :id,
"tag" : "HDFS"
}
}
200 OK
To create a new config group, it is mandatory to provide a config group name, a tag and the cluster name to which it belongs. The tag as seen in this example is a name of the service. Two config groups with the same tag cannot be associated with the same host.
POST /api/v1/clusters/c1/config_groups
[
{
"ConfigGroup": {
"cluster_name": "c1",
"group_name": "hdfs-nextgenslaves",
"tag": "HDFS",
"description": "HDFS configs for rack added on May 19, 2010",
"hosts": [
{
"host_name": "host1"
}
],
"desired_configs": [
{
"type": "core-site",
"tag": "nextgen1",
"properties": {
"key": "value"
}
}
]
}
}
]
201 Created
Notice that the desired_configs specifies the property set for the configuration resource. In this particular case, a new configuration will be created with the type and tag specified and associated with the resulting Config group if the configuration does not exist. If a configuration with given type and tag exists, the property set would be ignored since a configuration is immutable.
An update on a Config group expects the entire resource definition to be sent with the PUT request.
PUT /api/v1/clusters/c1/config_groups/2
[
{
"ConfigGroup": {
"cluster_name": "c1",
"group_name": "hdfs-nextgenslaves",
"tag": "HDFS",
"description": "HDFS configs for rack added on May 19, 2010",
"hosts": [
{
"host_name": "host1",
"host_name": "host2",
"host_name": "host3"
}
],
"desired_configs": [
{
"type": "core-site",
"tag": "nextgen1"
},
{
"type": "hdfs-site",
"tag": "nextgen1"
}
]
}
}
]
202 Accepted
A Config group identified by the :id can be deleted.
DELETE /api/v1/clusters/c1/config_groups/:id
200 OK