This disclosure pertains to an environment manager for facilitating continuous deployment.
In the end to end continuous delivery process, various aspects of application development and deployment are handled by separate, point solutions. For example, the application build, environment/resource creation, resource configuration, application deployment, application testing/verifications and application promotion can each be handled by a separate resource provider.
Aspects of the embodiments are directed to a method for designing a deployment environment for a continuous delivery tenant. The method includes receiving, via a natural language input, a set of parameters for building a deployment environment for an application; determining, by a natural language processing engine, a resource to satisfy a parameter of the set of parameters; identifying, for a resource, a resource provider for providing the resource; and installing, via a network interface, the application on the resource provider.
Aspects of the embodiments are directed to a computer program product comprising a computer readable storage medium comprising computer readable program code embodied therewith. The computer readable program code including computer readable program code configured to receive, via a natural language input, a set of parameters for building a deployment environment for an application; computer readable program code configured to determine, by a natural language processing engine, a resource to satisfy a parameter of the set of parameters; computer readable program code configured to identify a resource provider for providing the resource; and computer readable program code configured to install, via a network interface, the application on the resource provider.
Aspects of the embodiments are directed to a system for provisioning resource for application deployment. The system includes an environment manager server comprising a release automation agent, the environment manager server configured to receive a selection for a stack template, the stack template including a resource for defining a deployment environment; instantiate the stack template to identify the resource for defining the deployment environment; and transmit a request for provisioning of the resource to an environment management server; receive the request for provisioning of the resource; determine a resource provider for the resource based on a policy associated with the application; and provide the resource to the release automation server to satisfy the request for provisioning of the resource.
In some embodiments, identifying a resource provider comprises identifying a resource provider based on a policy associated with the tenant.
In some embodiments, identifying a resource provider comprises identifying a resource provider based on the application.
In some embodiments, identifying a resource provider comprises identifying a resource provider based on the set of parameters.
In some embodiments, the environmental parameters comprises an identification of the application to be run in the environment.
6 In some embodiments, the natural language input comprises a YAML Ain't Markup Language (YAML) file, and wherein the natural language processing engine comprises a YAML engine.
In some embodiments, identifying, for each resource, a resource provider for providing the resource comprises identifying a resource provider based on a policy associated with the tenant, the application to be deployed, the set of parameters, resource providers available, or resources available.
Some embodiments may also include provisioning the resource provider to provide the resource for the application; and configuring the resource based on the set of parameters.
Some embodiments may also include creating a template of a deployment resource architecture based on the tenant, the application, the received set of parameters, the resources, or an available set of resource providers, and storing the template in a repository.
Some embodiments may also include providing a user selectable interface for selecting the template of the deployment resource architecture; receiving an indication of a user selection of the deployment resource architecture; and displaying information about the deployment resource architecture, the information comprising the set of parameters and a set of resource providers.
Some embodiments may also include receiving a new parameter or new resource provider to augment the information about the deployment resource architecture; and storing a new version of the template that comprises the new parameter or new resource provider.
This disclosure pertains to a environmental manager to support different aspects of continuous delivery, such as building an application, setting up an environment to support application deployment, deployment of the application, testing the application, and promoting the application. Embodiments include using human readable descriptive language, such as YAML Ain't Markup Language (YAML). YAML based orchestration for continuous delivery can facilitate a simplified form of integrating existing solutions end to end.
The environment manager supports multi-tenancy by allowing each tenant to define application deployment resource architecture using a natural language input. The environment manager makes use of a natural language engine (e.g., YAML engine) to interpret the environmental requirements from a natural language input.
The environment manager 102 is configured to receive a natural language input from a tenant or from a developer or other user. The natural language processing engine 104 can parse the natural language input to identify configuration parameters, such as the application for deployment, resource requirements for deploying the application (e.g., hardware resources, software resources, network resources, etc.), preferred resource providers, other policies associated with the tenant, time and duration of the deployment to reserve resources provided by a resource provider, etc.
The environment manager 102 can support multiple tenants, such as tenant 1106 through tenant N 108. Each tenant can be associated with a container 107. A container 107 can include a running instance of resource created from a predefined or user defined stack. The term “stack” is used here to refer to a resource architecture for deploying an application. Each tenant can be associated with one or more containers 107. A resource can include any type of hardware, communications, or software resource needed for application deployment. For example, a resource can include a common platform interface (CPI) 109. Examples of a CPI can include VMWare, AWS, Docker, (CloudFoundry, including Pivotal, and IBM BlueMix), Azure, OpenStack, OpenShift, and Google, etc.
The environment manager 102 can utilize Software as a Service (SaaS) 130 topology for managing continuous delivery. SaaS 130 includes network architecture to facilitate communications to and from remote resource providers, such as build management services 116, configuration management 118, release automation 120, devTest 122, and enterprise services 124.
The environment manager 102 can communicate with remote resource providers to reserve and provision services, and deploy applications.
Additionally, the template properties 208 can be shown to the user via the interface 200. The properties can be edited using natural language. For example, a user can edit the preferred set of resources by inputting in natural language descriptions of preferred (or required) resources. The user-defined resource architecture can be stored as a new template.
In some embodiments, the environment manager can test the resource architecture (512). The environment manager can use devTest to test the deployment.
The environment manager can store the resource architecture as a template (514). The template can include the resource architecture information, such as resource providers identified, resource configuration, associated policies, etc. The template can be stored with an associated selectable icon, which can provide a user with readable and editable resource architecture information.