Jump to: navigation, search

Difference between revisions of "Murano"

m (Integration with Heat)
m (Small improvements)
Line 1: Line 1:
 
== Project Background ==
 
== Project Background ==
Enterprise customers frequently use Windows based Environments for their internal and external products.  
+
Enterprise customers frequently use Windows-based environments for their internal and external products. Configuration of the Windows environment is a complex task which usually requires a lot of effort from administrators. Windows setup consists of numerous services which might be tightly coupled to each other. While the automated installation of Windows services can be fairly straightforward, service configuration can be hard to automate because it requires a well-designed Windows architecture and deep knowledge of Windows services configuration.
Configuration of the Windows Environment is a complex task which usually requires a lot of efforts from the administrators. Windows setup consists of numerous services which might be tightly coupled to each other. Windows services installation might be automated pretty straightforward but service configuration itself might be a hard to automate because it requires to have well designed Windows Architecture and deep knowledge in Windows Services configuration.
 
  
Currently several open source solutions exists that can help to partially solve automation of Windows environment provisioning. In the world of OpenStack there is a Heat project that is similar to Amazon Cloud Formation. Heat is an excellent tool for managing OpenStack cloud resources like VM instances, security groups etc. It allows defining all cloud resources in a single JSON template and later maintain all the resources by editing that template. Although declarative template approach suites well for OpenStack resources it quickly turns to be too complex when it comes to application management.
+
Currently several open source solutions exists that can help to partially solve automation of Windows environment provisioning. In the world of OpenStack there is the Heat project, which is similar to Amazon Cloud Formation. Heat is an excellent tool for managing OpenStack cloud resources such as VM instances, security groups, and so on. It allows you to define all cloud resources in a single JSON template, then later maintain all of those resources by editing that template. Although the declarative template approach is well suited to OpenStack resources, it quickly becomes complex when it comes to application management.
  
Another option is tools like Chef or Puppet. These tools are flexible but require to have a special knowledge in scripting and require efforts to manually script or modify cookbooks for the specific environment configuration. This fits well when an environment is stable but it becomes time-consuming and involves manual script coding when one needs to deploy various environments with rapidly changing configurations. Also Chef and Puppet require additional infrastructure to support them.
+
Another option is a tool such as Chef or Puppet. These tools are flexible, but require you to have a deep knowledge of scripting and require a significant amount of effort to manually script or modify cookbooks for your specific environment configuration. This is manageable in a stable environment, but it becomes time-consuming and involves manual script coding when one needs to deploy various environments with rapidly changing configurations. Also Chef and Puppet require additional infrastructure to support them.
  
The biggest problem for both approaches above is to support multi-step configuration of services with circular dependencies required for correct configuration of Windows services. This can be solved by using external orchestration.  
+
The biggest problem for both approaches above is in supporting multi-step configuration of services with circular dependencies required for correct configuration of Windows services. This can be solved by using external orchestration.  
  
Another potential problem is lack of UI functionality allowing to create and configure an environment without writing a script.
+
Another potential problem is the lack of UI functionality enabling creation and configuration of an environment without writing a script.  
  
 
==Proposal==
 
==Proposal==
Mirantis propose to introduce a new service which will allow non-experienced user to deploy reliable Windows based environments in “push-the-button” manner. The key goal is to provide UI and API which will allow to deploy and operate Windows Environments on the Windows Services abstraction level. The Service should be able to orchestrate complex circular dependent cases in order to setup complex Windows Environment with many dependant services.
+
Mirantis proposes to introduce a new service which will allow a non-experienced user to deploy reliable Windows based environments in a “push-the-button” manner. The key goal is to provide a UI and API enabling the deployment and operation of Windows Environments at the Windows Services abstraction level. The service should be able to orchestrate complex circular dependent cases in order to set up a complex Windows Environment with multiple dependant services.  
  
 
The service will address following use cases:
 
The service will address following use cases:
Line 20: Line 19:
  
 
The solution will provide higher level of abstraction for manipulation Windows Environments. Key concepts are:
 
The solution will provide higher level of abstraction for manipulation Windows Environments. Key concepts are:
* Windows Service  - is a service like Active Directory, MS SQL, IIS which usually consist of multiple virtual machines and has multiple dependencies.
+
* Windows Service  - a service such as Active Directory, MSSQL, or IIS, which usually consists of multiple virtual machines and has multiple dependencies.
* Windows Environment - is a logical unity for all services and represents a classical Windows Datacenter
+
* Windows Environment - a logical unit for all Services and represents a classical Windows Datacenter
 
* Windows VM instance - a VM which hosts a Windows Service. A  Windows Service might be deployed over several Windows VM instances.
 
* Windows VM instance - a VM which hosts a Windows Service. A  Windows Service might be deployed over several Windows VM instances.
  
Line 41: Line 40:
  
 
=== REST API ===
 
=== REST API ===
Exposes service endpoint for the communication with a client. It exposes API functions to manipulate with objects like: environment, service.
+
Murano exposes a service endpoint for communication with a client. It exposes API functions to manipulate objects such as environment and service.
  
This component is responsible for translation API functions parameters to the Object Model attributes and to propagate the deployment status from the Orchestration Engine.
+
This component is responsible for translating API function parameters to Object Model attributes and propagating the deployment status from the Orchestration Engine.
  
 
===Object Model===
 
===Object Model===
Line 49: Line 48:
  
 
===Orchestration Engine===
 
===Orchestration Engine===
This is a core component which evaluates the Object Model change and creates a plan for implementing these changes on the instances or in the cloud. This component will support extensions via plug-ins. Plugin can add a new service and extend existing services for integration. Currently there are two services which are already implemented as plugins. They are Active Directory and IIS Service.
+
This is the core component which evaluates Object Model changes and creates a plan for implementing these changes on the instances or in the cloud. This component will support extensions via plug-ins. Plugins can add new services and extend existing services for integration. Currently there are two services which are already implemented as plugins. They are Active Directory and IIS Service.
  
 
==Integration with Heat==
 
==Integration with Heat==
Heat is an cloud resource management engine, which allows you to manipulate with resources that represents OpenStack entities (Security Groups, Instances, Floating IPs, Volumes, etc.) and some custom entities like AutoScaling group from a single point of control.
+
Heat is a cloud resource management engine that allows you to manipulate resources that represent OpenStack entities (Security Groups, Instances, Floating IPs, Volumes, etc.) and some entities such as AutoScaling groups from a single point of control.
OpenStack resource provisioning is one of the step required for environment deployment and Heat will be used for that purpose. Heat allows to define all the OpenStack resources in a single document that would be easy to maintain and would not require resorting to a lots of different OpenStack APIs while keeping the software configuration aside from it.
+
 
 +
OpenStack resource provisioning is one of the steps required for environment deployment and Heat will be used for that purpose. Heat allows you to define all OpenStack resources in a single document that will be easy to maintain and will not require resorting to multiple OpenStack APIs while keeping the software configuration separate.
  
 
==Windows on OpenStack==
 
==Windows on OpenStack==
Windows works on KVM pretty smoothly. RedHat created an open-source VirtIO drivers for Windows that allow to work with KVM exposed devices efficiently.
+
Windows works on KVM pretty smoothly, and with the RedHat-created open-source VirtIO drivers for Windows, it’s possible to work efficiently with KVM exposed devices.
In Grizzly release a Microsoft’s hypervisor Hyper-V will be supported. Hyper-V virtual switch will be also supported as a Quantum plug-in. From the performance viewpoint, Hyper-V Server 2012 shows very small difference from physical machine. OLTP workload running on a 75,000 customer database deployed in a Hyper-V virtual machine processed just over 6% fewer transactions per second compared to the same workload running on a similarly configured physical server.
+
 
Hyper-V also supports natively Windows Clusters in contrary to the current OpenStack implementation.
+
In OpenStack’s Grizzly release, Microsoft’s hypervisor Hyper-V will be supported. The Hyper-V virtual switch will be also supported as a Quantum plug-in. From the performance viewpoint, Hyper-V Server 2012 compares very favorably with bare metal, processing just over 6% fewer transactions per second compared to the same workload running on a similarly configured physical server.
 +
Also, unlike the current OpenStack, Hyper-V also natively supports Windows Clusters.
  
 
==Roadmap==
 
==Roadmap==

Revision as of 15:40, 30 April 2013

Project Background

Enterprise customers frequently use Windows-based environments for their internal and external products. Configuration of the Windows environment is a complex task which usually requires a lot of effort from administrators. Windows setup consists of numerous services which might be tightly coupled to each other. While the automated installation of Windows services can be fairly straightforward, service configuration can be hard to automate because it requires a well-designed Windows architecture and deep knowledge of Windows services configuration.

Currently several open source solutions exists that can help to partially solve automation of Windows environment provisioning. In the world of OpenStack there is the Heat project, which is similar to Amazon Cloud Formation. Heat is an excellent tool for managing OpenStack cloud resources such as VM instances, security groups, and so on. It allows you to define all cloud resources in a single JSON template, then later maintain all of those resources by editing that template. Although the declarative template approach is well suited to OpenStack resources, it quickly becomes complex when it comes to application management.

Another option is a tool such as Chef or Puppet. These tools are flexible, but require you to have a deep knowledge of scripting and require a significant amount of effort to manually script or modify cookbooks for your specific environment configuration. This is manageable in a stable environment, but it becomes time-consuming and involves manual script coding when one needs to deploy various environments with rapidly changing configurations. Also Chef and Puppet require additional infrastructure to support them.

The biggest problem for both approaches above is in supporting multi-step configuration of services with circular dependencies required for correct configuration of Windows services. This can be solved by using external orchestration.

Another potential problem is the lack of UI functionality enabling creation and configuration of an environment without writing a script.

Proposal

Mirantis proposes to introduce a new service which will allow a non-experienced user to deploy reliable Windows based environments in a “push-the-button” manner. The key goal is to provide a UI and API enabling the deployment and operation of Windows Environments at the Windows Services abstraction level. The service should be able to orchestrate complex circular dependent cases in order to set up a complex Windows Environment with multiple dependant services.

The service will address following use cases:

  • Self-provisioning of predefined Windows services with their dependencies
  • Automation of administrative tasks during data center roll-out
  • Custom windows application as a windows service

The solution will provide higher level of abstraction for manipulation Windows Environments. Key concepts are:

  • Windows Service - a service such as Active Directory, MSSQL, or IIS, which usually consists of multiple virtual machines and has multiple dependencies.
  • Windows Environment - a logical unit for all Services and represents a classical Windows Datacenter
  • Windows VM instance - a VM which hosts a Windows Service. A Windows Service might be deployed over several Windows VM instances.

The Key Features of the Service are the following:

  1. Native to OpenStack
  2. Introduces abstraction level for Windows Environments
  3. Supports Availability Zones and Disaster Recovery scenarios
  4. Uses native Windows features for HA solutions

Architecture Details

The Murano Service communicates with the following OpenStack components:

  • Horizon - provides GUI with ability to use all of WinDC features;
  • Keystone - authenticates users and provides security token that is used to work with the OpenStack, hence limiting user abilities in WinDC by his OpenStack privileges;
  • Heat - is used to provision VMs and other OpenSack resources for Windows Environment;
  • Glance - Windows Server VM images are stored there, each image containing an installed OS and a set of scripts
  • Quantum - provides network configuration API
  • Agent - an agent software which communicates with Orchestration Engine and executes tasks on VMs

Murano architecture diagram.png

REST API

Murano exposes a service endpoint for communication with a client. It exposes API functions to manipulate objects such as environment and service.

This component is responsible for translating API function parameters to Object Model attributes and propagating the deployment status from the Orchestration Engine.

Object Model

An internal representation of Windows Services and Environments. All attributes and entities are described in API specification.

Orchestration Engine

This is the core component which evaluates Object Model changes and creates a plan for implementing these changes on the instances or in the cloud. This component will support extensions via plug-ins. Plugins can add new services and extend existing services for integration. Currently there are two services which are already implemented as plugins. They are Active Directory and IIS Service.

Integration with Heat

Heat is a cloud resource management engine that allows you to manipulate resources that represent OpenStack entities (Security Groups, Instances, Floating IPs, Volumes, etc.) and some entities such as AutoScaling groups from a single point of control.

OpenStack resource provisioning is one of the steps required for environment deployment and Heat will be used for that purpose. Heat allows you to define all OpenStack resources in a single document that will be easy to maintain and will not require resorting to multiple OpenStack APIs while keeping the software configuration separate.

Windows on OpenStack

Windows works on KVM pretty smoothly, and with the RedHat-created open-source VirtIO drivers for Windows, it’s possible to work efficiently with KVM exposed devices.

In OpenStack’s Grizzly release, Microsoft’s hypervisor Hyper-V will be supported. The Hyper-V virtual switch will be also supported as a Quantum plug-in. From the performance viewpoint, Hyper-V Server 2012 compares very favorably with bare metal, processing just over 6% fewer transactions per second compared to the same workload running on a similarly configured physical server. Also, unlike the current OpenStack, Hyper-V also natively supports Windows Clusters.

Roadmap

Please refer to Murano/Roadmap for details.

Hot To Contribute

If you would like to ask some questions or make proposals, feel free to reach us on #murano irc channel at FreeNode. Typically somebody from our team will be online at irc from 6:00 to 20:00 UTC. You can also contact Murano community directly by murano@lists.launchpad.net (please, note that your email address should be registered in launchpad, otherwise your mail will be ignored by mailing system).

We’re going to hold public weekly meetings on Mondays at 18:00 UTC on #openstack-meeting-alt irc channel. Refer to Meetings.

If you want to contribute either to docs or to code, simply send us change request via review.openstack.org. You can file bugs and register blueprints at Murano launchpad page.

More info