System and method for building idempotent configuration management modules for a cloud infrastructure service
Embodiments provide a system and method for building idempotent configuration management modules for cloud infrastructure services. Idempotency of a configuration management (CM) task in a CM plan is one of the mechanisms used to achieve repeatable and reliable automations of configuration management tasks. This helps DevOps and operations personnel reliably apply and maintain configuration of their systems.
1. A method for building idempotent configuration management modules for cloud infrastructure services, the method comprising:
receiving, at a controller machine, a user request for a resource, the user request comprising a user specification;
deriving a meta-model of a resource type associated with the requested resource to determine a set of configurable attributes of the resource type, wherein deriving the meta-model of the requested resource type comprises inspecting a current version of an application programming interface (API) of the requested resource;
determining a desired state of the requested resource, said determining comprising merging the user specification with the derived meta-model of the resource type, said merging comprising filling in at least one of a default or optional field based upon the derived meta-model, said user specification identifying an attribute to be excluded and a subset of the set of configurable attributes to be matched;
comparing the desired state of the requested resource and the subset of the set of configurable attributes to be matched against a plurality of pre-existing resources in the cloud infrastructure service; and
upon finding a pre-existing resource among the plurality of pre-existing resources that matches the subset of the configurable attributes to be matched against, returning the pre-existing resource that matches the subset of the configurable attributes to be matched against.
2. The method of claim 1 ,
wherein the determined set of configurable attributes comprises:
required attributes,
optional attributes with static default values, and
optional attributes with dynamic default values.
3. The method of claim 1 , further comprising:
upon not finding a matching resource, creating a resource comprising the desired state of the resource.
4. The method of claim 1 , wherein the plurality of pre-existing resources comprises a defined set of resources.
5. The method of claim 1 , wherein the user request comprises a configuration management plan, the configuration management plan comprising the requested resource.
6. A system for building idempotent configuration management modules for cloud infrastructure services, the method comprising:
a computer comprising one or more microprocessors;
wherein the computer performs steps comprising:
receiving, at a controller machine, a user request for a resource, the user request comprising a user specification;
deriving a meta-model of a resource type associated with the requested resource to determine a set of configurable attributes of the resource type, wherein deriving the meta-model of the requested resource type comprises inspecting a current version of an application programming interface (API) of the requested resource;
determining a desired state of the requested resource, said determining comprising merging the user specification with the derived meta-model of the resource type, said merging comprising filling in at least one of a default or optional field based upon the derived meta-model, said user specification identifying an attribute to be excluded and a subset of the set of configurable attributes to be matched;
comparing the desired state of the requested resource and the subset of the set of configurable attributes to be matched against a plurality of pre-existing resources in the cloud infrastructure service; and
upon finding a pre-existing resource among the plurality of pre-existing resources that matches the subset of the configurable attributes to be matched against, returning the pre-existing resource that matches the subset of the configurable attributes to be matched against.
7. The system of claim 6 ,
wherein the determined set of configurable attributes comprises:
required attributes,
optional attributes with static default values, and
optional attributes with dynamic default values.
8. The system of claim 6 , the steps further comprising:
upon not finding a matching resource, creating a resource comprising the desired state of the resource.
9. The system of claim 6 , wherein the plurality of pre-existing resources comprises a defined set of resources.
10. The system of claim 6 , wherein the user request comprises a configuration management plan, the configuration management plan comprising the requested resource.
11. A non-transitory computer readable storage medium having instructions thereon for building idempotent configuration management modules for cloud infrastructure services, which when read by a computer cause the computer to perform steps comprising:
receiving, at a controller machine, a user request for a resource, the user request comprising a user specification;
deriving a meta-model of a resource type associated with the requested resource to determine a set of configurable attributes of the resource type, wherein deriving the meta-model of the requested resource type comprises inspecting a current version of an application programming interface (API) of the requested resource;
determining a desired state of the requested resource, said determining comprising merging the user specification with the derived meta-model of the resource type, said merging comprising filling in at least one of a default or optional field based upon the derived meta-model, said user specification identifying an attribute to be excluded and a subset of the set of configurable attributes to be matched;
comparing the desired state of the requested resource and the subset of the set of configurable attributes to be matched against a plurality of pre-existing resources in the cloud infrastructure service; and
upon finding a pre-existing resource among the plurality of pre-existing resources that matches the subset of the configurable attributes to be matched against, returning the pre-existing resource that matches the subset of the configurable attributes to be matched against.
12. The non-transitory computer readable storage medium of claim 11 ,
wherein the determined set of configurable attributes comprises:
required attributes,
optional attributes with static default values, and
optional attributes with dynamic default values.
13. The non-transitory computer readable storage medium of claim 11 , further comprising:
upon not finding a matching resource, creating a resource comprising the desired state of the resource.
14. The non-transitory computer readable storage medium of claim 11 , wherein the plurality of pre-existing resources comprises a defined set of resources.