Updated Blueprint according to Nick review

This commit is contained in:
Serg Melikyan
2013-04-30 19:48:58 +04:00
parent 3fd3ed89ee
commit fb1969d126

View File

@@ -117,57 +117,42 @@ http://docbook.org/ns/docbook "
<section> <section>
<title>Project Background</title> <title>Project Background</title>
<para>Enterprise customers frequently use Windows based <para>Enterprise customers frequently use Windows-based environments for their internal and external
Environments for their internal and external products. products. Configuration of the Windows environment is a complex task which usually requires a lot of
Configuration of the Windows Environment is a complex task effort from administrators. Windows setup consists of numerous services which might be tightly coupled
which usually requires a lot of efforts from the to each other. While the automated installation of Windows services can be fairly straightforward,
administrators. Windows setup consists of numerous services service configuration can be hard to automate because it requires a well-designed Windows architecture
which might be tightly coupled to each other. Windows services and deep knowledge of Windows services configuration.
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.
</para> </para>
<para>Currently several open source solutions exists that can help <para>Currently several open source solutions exists that can help to partially solve automation of Windows
to partially solve automation of Windows environment environment provisioning. In the world of OpenStack there is the Heat project, which is similar to
provisioning. In the world of OpenStack there is a Heat project Amazon Cloud Formation. Heat is an excellent tool for managing OpenStack cloud resources such as VM
that is similar to Amazon Cloud Formation. Heat is an excellent instances, security groups, and so on. It allows you to define all cloud resources in a single JSON
tool for managing OpenStack cloud resources like VM instances, template, then later maintain all of those resources by editing that template. Although the declarative
security groups etc. It allows defining all cloud resources in template approach is well suited to OpenStack resources, it quickly becomes complex when it comes to
a single JSON template and later maintain all the resources by application management.
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.
</para> </para>
<para>Another option is tools like Chef or Puppet. These tools are <para>Another option is a tool such as Chef or Puppet. These tools are flexible, but require you to have a
flexible but require to have a special knowledge in scripting deep knowledge of scripting and require a significant amount of effort to manually script or modify
and require efforts to manually script or modify cookbooks for cookbooks for your specific environment configuration. This is manageable in a stable environment, but
the specific environment configuration. This fits well when an it becomes time-consuming and involves manual script coding when one needs to deploy various
environment is stable but it becomes time-consuming and environments with rapidly changing configurations. Also Chef and Puppet require additional
involves manual script coding when one needs to deploy various infrastructure to support them.
environments with rapidly changing configurations. Also Chef
and Puppet require additional infrastructure to support them.
</para> </para>
<para>The biggest problem for both approaches above is to support <para>The biggest problem for both approaches above is in supporting multi-step configuration of services
multi-step configuration of services with circular dependencies with circular dependencies required for correct configuration of Windows services. This can be solved by
required for correct configuration of Windows services. This using external orchestration.
can be solved by using external orchestration.
</para> </para>
<para>Another potential problem is lack of UI functionality <para>Another potential problem is the lack of UI functionality enabling creation and configuration of an
allowing to create and configure an environment without writing environment without writing a script.
a script.
</para> </para>
<section> <section>
<title>Proposal</title> <title>Proposal</title>
<para>Mirantis propose to introduce a new service which will <para>Mirantis proposes to introduce a new service which will allow a non-experienced user to deploy
allow non-experienced user to deploy reliable Windows based reliable Windows based environments in a “push-the-button” manner. The key goal is to provide a UI
environments in “push-the-button” manner. The key goal is and API enabling the deployment and operation of Windows Environments at the Windows Services
to provide UI and API which will allow to deploy and abstraction level. The service should be able to orchestrate complex circular dependent cases in
operate Windows Environments on the Windows Services order to set up a complex Windows Environment with multiple dependant 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.
</para> </para>
<para>The service will address following use cases: <para>The service will address following use cases:
<itemizedlist spacing="compact"> <itemizedlist spacing="compact">
@@ -187,18 +172,18 @@ http://docbook.org/ns/docbook "
concepts are: concepts are:
<itemizedlist spacing="compact"> <itemizedlist spacing="compact">
<listitem> <listitem>
<para>Windows Service - is a service like Active Directory, MSSQL, IIS which usually consist <para>Windows Service - a service such as Active Directory, MSSQL, or IIS, which usually
of multiple virtual machines and has multiple dependencies. consists of multiple virtual machines and has multiple dependencies.
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para>Windows Environment - is a logical unity for all services and represents a classical <para>Windows Environment - a logical unit for all Services and represents a classical
Windows Datacenter Windows Datacenter
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para>Windows VM instance - a VM which hosts a Windows Service. A Windows Service might be <para>Windows VM instance - a VM which hosts a Windows Service. A Windows Service might be
deployed over several Windows VM instances. deployed
</para> </para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
@@ -228,28 +213,28 @@ http://docbook.org/ns/docbook "
The Murano Service communicates with the following OpenStack components: The Murano Service communicates with the following OpenStack components:
<itemizedlist> <itemizedlist>
<listitem> <listitem>
<para>Horizon - provides GUI with ability to use all of Murano features;</para> <para>Horizon - provides a GUI with ability to use all Murano features;</para>
</listitem> </listitem>
<listitem> <listitem>
<para>Keystone - authenticates users and provides security token that is used to work with the <para>Keystone - authenticates users and provides the security token that is used to work with
OpenStack, hence limiting user abilities in Murano by his OpenStack privileges; OpenStack, hence limiting the user abilities in Murano based on OpenStack privileges;
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para>Heat - is used to provision VMs and other OpenSack resources for Windows Environment; <para>Heat - is used to provision VMs and other OpenStack resources for Windows Environments;
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para>Glance - Windows Server VM images are stored there, each image containing an installed OS <para>Glance - stores Windows Server VM images, with each image containing an installed OS and a
and a set of scripts set of scripts
</para> </para>
</listitem> </listitem>
<listitem> <listitem>
<para>Quantum - provides network configuration API</para> <para>Quantum - provides the network configuration API</para>
</listitem> </listitem>
<listitem> <listitem>
<para>Agent - an agent software which communicates with Orchestration Engine and executes tasks <para>Agent - provides agent functionality to communicate with the Orchestration Engine and
on VMs executes tasks on VMs
</para> </para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
@@ -268,54 +253,52 @@ http://docbook.org/ns/docbook "
</figure> </figure>
<section> <section>
<title>REST API</title> <title>REST API</title>
<para>Exposes service endpoint for the communication with a client. It exposes API functions to <para>Murano exposes a service endpoint for communication with a client. It exposes API functions to
manipulate with objects like: environment, service. manipulate objects such as environment and service.
</para> </para>
<para>This component is responsible for translation API functions parameters to the Object Model <para>This component is responsible for translating API function parameters to Object Model attributes
attributes and to propagate the deployment status from the Orchestration Engine. and propagating the deployment status from the Orchestration Engine.
</para> </para>
</section> </section>
<section> <section>
<title>Object Model</title> <title>Object Model</title>
<para>An internal representation of Windows Services and Environments. All attributes and entities are <para>An internal representation of Windows Services and Environments. All attributes and entities are
described in API specification. described in the API specification.
</para> </para>
</section> </section>
<section> <section>
<title>Orchestration Engine</title> <title>Orchestration Engine</title>
<para>This is a core component which evaluates the Object Model change and creates a plan for <para>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 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 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 there are two services which are already implemented as plugins. They are Active Directory and IIS
Service. Service.
Integration with Heat
</para> </para>
</section> </section>
</section> </section>
<section> <section>
<title>Integration with Heat</title> <title>Integration with Heat</title>
<para>Heat is an cloud resource management engine, which allows you to manipulate with resources that <para>Heat is a cloud resource management engine that allows you to manipulate resources that represent
represents OpenStack entities (Security Groups, Instances, Floating IPs, Volumes, etc.) and some custom OpenStack entities (Security Groups, Instances, Floating IPs, Volumes, etc.) and some entities such as
entities like AutoScaling group from a single point of control. AutoScaling groups from a single point of control.
</para> </para>
<para>OpenStack resource provisioning is one of the step required for environment deployment and Heat will <para>OpenStack resource provisioning is one of the steps 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 be used for that purpose. Heat allows you to define all 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 will be easy to maintain and will not require resorting to multiple OpenStack APIs while keeping the
keeping the software configuration aside from it. software configuration separate.
</para> </para>
</section> </section>
<section> <section>
<title>Windows on OpenStack</title> <title>Windows on OpenStack</title>
<para>Windows works on KVM pretty smoothly. RedHat created an open-source VirtIO drivers for Windows that <para>Windows works on KVM pretty smoothly, and with the RedHat-created open-source VirtIO drivers for
allow to work with KVM exposed devices efficiently. Windows, its possible to work efficiently with KVM exposed devices.
</para> </para>
<para>In Grizzly release a Microsofts hypervisor Hyper-V will be supported. Hyper-V virtual switch will be <para>In OpenStacks Grizzly release, Microsofts hypervisor Hyper-V will be supported. The Hyper-V virtual
also supported as a Quantum plug-in. From the performance viewpoint, Hyper-V Server 2012 shows very switch will be also supported as a Quantum plug-in. From the performance viewpoint, Hyper-V Server 2012
small difference from physical machine. OLTP workload running on a 75,000 customer database deployed in compares very favorably with bare metal, processing just over 6% fewer transactions per second compared
a Hyper-V virtual machine processed just over 6% fewer transactions per second compared to the same to the same workload running on a similarly configured physical server.
workload running on a similarly configured physical server.
</para> </para>
<para>Hyper-V also supports natively Windows Clusters in contrary to the current OpenStack implementation. <para>Also, unlike the current OpenStack, Hyper-V also natively supports Windows Clusters.
</para> </para>
</section> </section>
</chapter> </chapter>
@@ -2529,7 +2512,9 @@ user@work:~/$ murano-api --config-file=./murano/api/etc/murano-api.conf
</section> </section>
<section> <section>
<title>Conductor Service</title> <title>Conductor Service</title>
<para>Conductor is an Murano orchestration engine that transforms object model sent by REST API service into a series of Heat and Murano-Agent commands.</para> <para>Conductor is an Murano orchestration engine that transforms object model sent by REST API service into
a series of Heat and Murano-Agent commands.
</para>
<para>This document describes Conductor for contributors of the project.</para> <para>This document describes Conductor for contributors of the project.</para>
<section> <section>
<title>Install</title> <title>Install</title>