diff --git a/.gitignore b/.gitignore index c4c2ae4..0eabf4c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ #IntelJ Idea .idea/ +*.iml #Build results target diff --git a/src/murano-manual/pom.xml b/src/murano-manual/pom.xml index e854ff4..acdedcf 100644 --- a/src/murano-manual/pom.xml +++ b/src/murano-manual/pom.xml @@ -19,7 +19,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4.0.0 com.mirantis.murano - manuals + murano-manual 1.0.0-SNAPSHOT jar Murano Project Documentation diff --git a/src/murano-manual/src/docbkx/content/blueprint.xml b/src/murano-manual/src/docbkx/content/blueprint.xml new file mode 100644 index 0000000..33f587a --- /dev/null +++ b/src/murano-manual/src/docbkx/content/blueprint.xml @@ -0,0 +1,213 @@ + + + + + Blueprint +
+ + 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 + + + + + + The Key Features of the Service are the following: + + + Native to OpenStack + + + Introduces abstraction level for Windows Environments + + + Supports Availability Zones and Disaster Recovery scenarios + + + Uses native Windows features for HA solutions + + + +
+
+
+ Architecture + + The Murano Service communicates with the following OpenStack components: + + + Horizon - provides a GUI with ability to use all Murano features; + + + Keystone - authenticates users and provides the security token that is used to work with + OpenStack, hence limiting the user abilities in Murano based on OpenStack privileges; + + + + Heat - is used to provision VMs and other OpenStack resources for Windows Environments; + + + + Glance - stores Windows Server VM images, with each image containing an installed OS and a + set of scripts + + + + Quantum - provides the network configuration API + + + Agent - provides agent functionality to communicate with the Orchestration Engine and + executes tasks on VMs + + + + +
+ Architecture + + + + + + + + +
+
+ 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 the 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. + +
+
diff --git a/src/murano-manual/src/docbkx/content/installation-guide.xml b/src/murano-manual/src/docbkx/content/installation-guide.xml new file mode 100644 index 0000000..bc5f94f --- /dev/null +++ b/src/murano-manual/src/docbkx/content/installation-guide.xml @@ -0,0 +1,472 @@ + + + + + Installation Guide + This chapter is about installation and configuration Murano services. + Note that all Murano modules can be downloaded from + our page + on launchpad. + +
+ Common Pre-Requirements + Operation system: + + Ubuntu + RHEL/CentOS + + Packages: + + python-dev + libxml2-dev + libxslt-dev + + +
+
+ Murano API Service + Murano API provides access to the Murano orchestration engine via API. + This chapter describes Murano API for contributors of the project, and assumes that you are already + familiar with Murano API from an end-user perspective. + +
+ Install + + + Project source can be checked out as git repository (see below) or downloaded from + here + + + + + + + Switch to just created directory + + + + + + And them perform installation: + + + + + +
+
+ Configure + + + First configure rabbitMQ by adding vhost and user with administrator rights: + + + + + + Copy and edit configuration file: + + + + + + Configure it according to your environment: + + + [DEFAULT]section sets up logging. + + + [reports] section you can set names for new rabbitMQ queues. + + + + In [rabbitmq] section sets up host configuration where rabbitMQ + with just created user and vhost is running. + + + + + + + + + Copy and edit one more configuration file: + + + + + + Configure keystone auth_token in + [filter:authtoken] + section. + For more information see + Auth-Token + Middleware with Username and Password + + + + + + + + Register murano-api service in Openstack + (note: you need to be authorized in Openstack to run this commands) + + + + + + + +
+
+ Run + Run Murano API and supply valid configuration file: + + + +
+
+
+ Conductor Service + Conductor is a Murano orchestration engine that transforms object model sent by REST API service into + a series of Heat and Murano-Agent commands. + + This document describes Conductor for contributors of the project. +
+ Install + + + Murano Condutor uses OpenStack Heat for new virtual machines creation, therefore Heat should + been installed and configured. Some services require the Internet access for virtual machines to + successfull deployment. + + The detailed information about Heat configuration is described + here. + + + + OpenStack Heat require Key Pair for Load Balancer instances. Murano Conductor uses + LoadBalancer for IIS Farms and ASP.NET Farms. The default name for Key Pair is 'murano-lb-key', + you can change this parameter in file + + + + + Project source code can be checked out from git repository (see below) or downloaded from + here. + + + + + + + + + + Switch to just created directory + + + + + + And install Conductor Service to the system: + + + + + +
+
+ Configure + + + Edit configuration file: + + + + + + + Change it according to your environment. + + + [DEFAULT]section is responsible for logging. + + + [heat]points where heat is running. + + + + [rabbitmq]section points where your rabbitMQ installed and configured. + + + + + + + + +
+
+ Run + Run Conductor and supply valid configuration file: + + + +
+
+
+ Murano Dashboard + Murano Dashboard provides Web UI for Murano Project. +
+ Pre-Requirements + + + To setup Murano Dashboard on a host with Openstack Dashbord already installed you just need to + install + the python-muranoclient. You can download it from + here. + + And then perform installation with pip: + + just_downloaded.tar.gz + + + + + If there is no OpenStack Dashboard (horizon) you'll need to install it. See + + here + + how to do that. + + + +
+
+ Install + + + Project source code can be checked out from git repository (see below) or downloaded from + here. + + + + + + + Switch to just created directory + + + + + + And perform installation + + + + + +
+
+ Configure + + + Open Django configuration file: + + && nano settings.py + ]]> + + Please, make sure that no local/local_settings.py file exists. + + + Add to import section + + + + + + And this so muranoclient exceptions can be safely handle by horizon: + + + + + + And finally edit HORIZON_CONFIG and INSTALLED_APPS sections + + + + + +
+
+ Run + Run Horizon: + + + +
+
+
\ No newline at end of file diff --git a/src/murano-manual/src/docbkx/content/overview.xml b/src/murano-manual/src/docbkx/content/overview.xml new file mode 100644 index 0000000..08f348e --- /dev/null +++ b/src/murano-manual/src/docbkx/content/overview.xml @@ -0,0 +1,73 @@ + + + + Overview + Welcome to Murano Project. + +
+ Intended Audience + This guide is intended to individuals who want to contribute + to our + project. + +
+
+ Document Change History + This version of the Murano Manual replaces and obsoletes all + previous versions. The + most recent changes are described in the table below: + + + + + Revision Date + Summary of Changes + + + + + April. 4, 2013 + + + + Initial document creation. + + + + + + +
+
+ Additional Resources + + + + + Mirantis - Cloud Software + + + + +
+
\ No newline at end of file diff --git a/src/murano-manual/src/docbkx/content/roadmap.xml b/src/murano-manual/src/docbkx/content/roadmap.xml new file mode 100644 index 0000000..136b7c2 --- /dev/null +++ b/src/murano-manual/src/docbkx/content/roadmap.xml @@ -0,0 +1,143 @@ + + + + + Roadmap + + + + <emphasis>Phase 1. Initial Version</emphasis> + + (Release date: May 30th) + + Core Services: REST API, Orchestration Engine + + + Horizon dashboard extension as plugin + + + Integration with Heat + + + Support single Data Center (no Disaster Recovery) + + + Support the following Windows Services: + + + Active Directory - Single Domain with multiple domain controllers + + + IIS Server - single instance of IIS Server + + + IIS Cluster - multiple IIS instances with Load Balancing + + + ASP.NET Application Service - ASP.NET application installed on top of IIS + + + + + + + + + + <emphasis>Phase 2. Stable Release</emphasis> + + (3 month) + + Stabilize Core Services (bug fixing) + + + Support API, UI extensibility + + + UI design + + + Workflow and recipes repository + + + Data transfer between service instances + + + Basic Service monitoring + + + Additional Services: + + + MS SQL - single instance of Microsoft SQL Server or Pair of SQL Servers with DB + mirroring + + + + + + + + + + + <emphasis>Phase 3</emphasis> + + + Add more services + + + Services Dependencies support + + + Extended health monitoring + + + Agent extensibility (allow 3rd party configuration tools) + + + Basic Self-healing (actions on monitoring events) + + + Additional Services + + + + + + + + <emphasis>Phase 4</emphasis> + + + Availability Zones support + + + Auto-scaling for Windows services + + + Security improvements + + + + \ No newline at end of file diff --git a/src/murano-manual/src/docbkx/content/screenshots.xml b/src/murano-manual/src/docbkx/content/screenshots.xml new file mode 100644 index 0000000..9c82c1e --- /dev/null +++ b/src/murano-manual/src/docbkx/content/screenshots.xml @@ -0,0 +1,98 @@ + + + + + ScreenShots + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/murano-manual/src/docbkx/content/specification.xml b/src/murano-manual/src/docbkx/content/specification.xml new file mode 100644 index 0000000..ca5cd4f --- /dev/null +++ b/src/murano-manual/src/docbkx/content/specification.xml @@ -0,0 +1,2962 @@ + + + + + API Specification + + + + Revision Date + Summary of Changes + + + + + February 4, 2013 + + + + Initial document creation + + + + + + February 22, 2013 + + + + Enhance API with latest architecture + changes + + + + + + + March 06, 2013 + + + + Fix specification according to remarks + from Dmitry Teselkin + + + + + + + Jun 06, 2013 + + + + ASP.NET Application, Web Server Farm and + ASP.NET Application Farm Services Added, + uri/address/endpoint corrections, hostname + assignment section added + + + + + + + +
+ Introduction + Murano Service API is a programmatic interface used for + interaction + with Murano. Other interaction + mechanisms like Murano Dashboard or Murano CLI should use API + as underlying + protocol for interaction. + + + + For detailed information about entities and terms used in + this document, please refer first to architecture. + + + Environment + + Environment is a set of logically related + Services managed by a single tenant. Environment + defines Windows environment boundaries. + + Services within single Environment may comprise + some complex configuration while Services + in different Environments are always independent + from one another. Each Environment is + associated with single OpenStack project (tenant). + + + + + Service + + Service is building block of Windows environment. + Service is a set of one or more Virtual + Machines sharing a common purpose and configured + together. Each service belongs to a single + Environment and single Service Type. + + Services are comprised from one or more Service + Units. + + + + + Service Type + + Service type is definition for describing set of + features exposed by service. + + + + + Service Unit + + Service Units are the actual Windows Server VMs + instantiated by OpenStack and then + configured according to its Service Type (this may + also correspond to one of predefined + Windows Server roles). + + + + + Service Metadata + + Service Metadata is a JSON-encoded definition of + Environment, its Services and their + Service Units along with all their attributes. + Service Metadata may describe both current + and the intended state of the Environment. + + + + + Session + + All changes to environment done in scope of + Session. After all changes to Environment + state are accumulated, changes actually are applied + only after session is deployed. + + + + +
+
+ Return codes and errors + All REST API calls return the natural HTTP response codes for + the operations, e.g. a successful GET + returns a HTTP 200, a successful PUT returns a HTTP 201, a GET + for a non-existent entity returns HTTP + 404, unauthorized operations return HTTP 401 or HTTP 403, + internal errors return HTTP 500. + +
+
+ Response of POSTs and PUTs + All POST and PUT requests by convention should return the + created object (in the case of POST, with a + generated ID) as if it was requested by GET. + +
+
+ Authentication + All requests include a Keystone authentication token header + (X-Auth-Token). Clients must authenticate + with Keystone before interacting with the Murano service. + +
+
+ Workflow +
+ Sample Workflow + + + + + + + + +
+ Let’s review a sample workflow (series of API calls) for + creating new Environment with Active + Directory Service deployment: + + + POST /environments/ - Creating new Environment + + + + POST /environments/id/configure – Creating new + configuration session for Environment + + + + POST /environments/id/activeDirectory – Creating + new ActiveDirectory service + + + + POST /environments/id/sessions/session_id/deploy + – Saving and deploying changes + + + + +
+
+ Hostname assignment + Each Service Object definition may have an attribute + "unitNamingPattern" that is used to control hostnames + that will be assigned to spawned VM instances of the + service. + + + Hostname pattern has the form of "name#" where "#" + character is replaced with sequential number of unit + within the service (starting with 1) and all other + characters remain intact. For example Service with + unitNamingPatter equal to "ad#-loc" will have units + with hostnames "ad1-loc", "ad2-loc" etc. + + + "unitNamingPattern" attribute is optional. + If it is omitted then a unique random hostname + would be assigned. + +
+
+ API +
+ Environment API + This section describes API calls for Environment + management. + +
+ Get a List of existing Environments + + Environment Object + + + + + + + Attribute + Type + Description + + + + + id + string + Unique ID + + + name + string + User-friendly name + + + created + datetime + Creation date and time in ISO format + + + + updated + datetime + Modification date and time in ISO + format + + + + tenant_id + string + OpenStack tenant ID + + + version + int + Current version + + + status + string + Deployment status: ready, pending, deploying + + + + +
+
+ Call + + GET /environments Call + + + + + + + Method + URI + Description + + + + + GET + /environments + Get a list of existing + Environments + + + + +
+
+
+ Payload + None +
+
+ Returns + This call returns list of environments. Only the + basic properties are returned. For details see "Get + Environment Detailed Information": + + + + +
+
+
+ Create Environment instance + + Environment Object + + + + + + + + Attribute + Type + Required + Description + + + + + name + string + yes + User-friendly name + + + +
+
+ Call + + POST /environments Call + + + + + + + Method + URI + Description + + + + + POST + /environments + Create new Environment + + + +
+
+
+ Payload + + + +
+
+ Returns + This call returns created environment: + + + + +
+
+
+ Update Environment Instance + + Environment Object + + + + + + + + Attribute + Type + Required + Description + + + + + name + string + yes + User-friendly name + + + +
+
+ Call + + PUT /environments/<id> Call + + + + + + + Method + URI + Description + + + + + PUT + /environments/<id> + Update properties of Environment + instance + + + + +
+ + Error Response Codes + + + + + + Code + Description + + + + + 401 + User is not authorized to access this tenant resources + + + +
+
+
+ Payload + + + +
+
+ Returns + This call returns modified environment object: + + + + +
+
+
+ Get Environment Instance Detailed Information + +
+ Call + + GET /environments/<id> Call + + + + + + + Method + URI + Description + + + + + GET + /environments/<id> + Returns detailed information + about Environment including child + entities + + + + +
+ + Error Response Codes + + + + + + Code + Description + + + + + 401 + User is not authorized to access this tenant resources + + + +
+
+
+ Payload + None +
+
+ Returns + This call returns environment object with underlying services: + + + + +
+
+
+ Remove Environment +
+ Call + + DELETE /environments/<id> Call + + + + + + + Method + URI + Description + + + + + DELETE + /environments/<id> + Remove specified Environment. + + + + +
+ + Error Response Codes + + + + + + Code + Description + + + + + 401 + User is not authorized to access this tenant resources + + + +
+
+
+ Payload + None +
+
+ Returns + None +
+
+
+
+ Environment Configuration API + Multiple sessions could be opened for one environment simultaneously, but only one session going + to be deployed. First session that starts deploying is going to be deployed; other ones become + invalid and could not be deployed at all. User could not open new session for environment that in + `deploying` state (that’s why we call it “almost lock free” model). + + + Configuration Session Object + + + + + + + Attribute + Type + Description + + + + + id + string + Session unique ID + + + environment_id + string + Environment that going to be modified + during this session + + + + created + datetime + Creation date and time in ISO format + + + + updated + datetime + Modification date and time in ISO + format + + + + user_id + string + Session owner ID + + + version + int + Environment version for which configuration session is opened + + + state + string + Session state. Could be: open, + deploying, deployed + + + + +
+
+ Configure Environment / Open session + During this call new working session is created, and session ID should be sent in header + (X-Configuration-Session) to all next API calls. + +
+ Call + + POST /environments/<id>/configure + Call + + + + + + + + Method + URI + Description + + + + + POST + /environments/<id>/configure + Creating new configuration session + + + + +
+ + Error Response Codes + + + + + + Code + Description + + + + + 403 + Could not open session for environment, environment has deploying + status + + + + +
+
+
+ Payload + None +
+
+ Returns + This call returns created session: + + + + +
+
+
+ Deploy changes from Session +
+ Call + + POST /environments/<id>/sessions/<sessionId>/deploy + Call + + + + + + + + Method + URI + Description + + + + + POST + /environments/<id>/sessions/<sessionId>/deploy + Deploying changes made in + session with specified <sessionId> + + + +
+ + Error Response Codes + + + + + + Code + Description + + + + + 403 + Session is invalid + + + 403 + Session is already deployed or deployment is in progress + + + +
+
+
+ Payload + None +
+
+ Returns + None +
+
+
+ Get session information +
+ Call + + GET /environments/<id>/sessions/<sessionId> + Call + + + + + + + + Method + URI + Description + + + + + GET + /environments/<id>/sessions/<sessionId> + Getting details about session + with specified + <sessionId> + + + +
+ + Error Response Codes + + + + + + Code + Description + + + + + 401 + User is not authorized to access this session + + + 403 + Session is invalid + + + +
+
+
+ Payload + None +
+
+ Returns + This call returns session information: + + + + +
+
+
+ Delete Session +
+ Call + + DELETE /environments/<id>/sessions/<sessionId> + Call + + + + + + + + Method + URI + Description + + + + + DELETE + /environments/<id>/sessions/<sessionId> + Delete session with specified + <sessionId> + + + +
+ + Error Response Codes + + + + + + Code + Description + + + + + 401 + User is not authorized to access this session + + + 403 + Session is in deploying state and could not be deleted + + + +
+
+
+ Payload + None +
+
+ Returns + None +
+
+
+
+ Active Directory API + This section describes API calls for Active Directory + service management. + +
+ Get a List of existing Active Directory instances + + + Active Directory Object + + + + + + + Attribute + Type + Description + + + + + id + string + Unique ID + + + name + string + Domain name + + + created + datetime + Creation date and time in ISO + format + + + + updated + datetime + Modification date and time in ISO + format + + + + domain + string + Domain name + + + uri + string + URI of the Service + + + units + object + Active Directory Unit object + + + +
+ + Active Directory Unit Object + + + + + + + Attribute + Type + Description + + + + + id + string + Unique ID + + + isMaster + boolean + true for primary domain controller, + false otherwise + + + + address + string + Unit address + + + location + string + AvailabilityZone or specific + physical datacenter. + + + + +
+
+ Call + + GET /environments/<id>/activeDirectories + Call + + + + + + + + Method + URI + Description + + + + + GET + /environments/<id>/activeDirectories + Get a list of Active Directory + instances + + + + +
+ + Headers + + + + + + + + Name + Type + Required + Description + + + + + X-Configuration-Session + string + no + ID of valid configuration session + + + +
+
+
+ Payload + None +
+
+ Returns + This call returns list of Active Directory + instances: + + + + +
+
+
+ Create Active Directory instance + + Active Directory Object + + + + + + + + Attribute + Type + Required + Description + + + + + name + string + yes + Domain name + + + adminPassword + string + yes + Password from domain administrator + account + + + + domain + string + yes + Domain name + + + units + object + yes + Active Directory Unit object + + + +
+ + Active Directory Unit Object + + + + + + + + Attribute + Type + Required + Description + + + + + isMaster + boolean + yes + true for primary domain controller, + false otherwise + + + + recoveryPassword + string + yes + Recovery password + + + location + string + yes + AvailabilityZone or specific physical datacenter. + + + +
+
+ Call + + POST /environments/<id>/activeDirectories + Call + + + + + + + + Method + URI + Description + + + + + POST + /environments/<id>/activeDirectories + Create new Active Directory + + + + +
+ + Headers + + + + + + + + Name + Type + Required + Description + + + + + X-Configuration-Session + string + yes + ID of valid configuration session + + + +
+
+
+ Payload + + + +
+
+ Returns + This call returns created active directory + domain: + + + + +
+
+
+
+ Web Server API + This section describes API calls for managing Windows web-server software – IIS. +
+ Get a List of existing Web Servers + + Web Server Object + + + + + + + Attribute + Type + Description + + + + + id + string + Unique ID + + + name + string + User-friendly name + + + created + datetime + Creation date and time in ISO format + + + + updated + datetime + Modification date and time in ISO + format + + + + uri + string + URI of the Service + + + domain + string + Domain name. + This attribute may be empty/null/omitted + if machine is not a domain member + + + + units + object + Web Server Unit object + + + +
+ + Web Server Unit Object + + + + + + + Attribute + Type + Description + + + + + id + string + Unique ID + + + address + string + Unit address + + + location + string + AvailabilityZone or specific physical datacenter. + + + + +
+
+ Call + + GET /environments/<id>/webServers + Call + + + + + + + + Method + URI + Description + + + + + GET + /environments/<id>/webServers + Get a list of existing Web + Servers + + + + +
+ + Headers + + + + + + + + Name + Type + Required + Description + + + + + X-Configuration-Session + string + no + ID of valid configuration session + + + +
+
+
+ Payload + None +
+
+ Returns + This call returns list of web servers: + + + + +
+
+
+ Create Web Server instance + + Web Server Object + + + + + + + + Attribute + Type + Required + Description + + + + + name + string + yes + User-friendly name + + + domain + string + no + Domain name + + + units + object + yes + Web Server Unit object + + + +
+ + Web Server Unit Object + + + + + + + + Attribute + Type + Required + Description + + + + + location + string + yes + AvailabilityZone or specific physical datacenter. + + + + +
+
+ Call + + POST /environments/<id>/webServers + Call + + + + + + + + Method + URI + Description + + + + + POST + /environments/<id>/webServers + Create new Web Server + + + +
+ + Headers + + + + + + + + Name + Type + Required + Description + + + + + X-Configuration-Session + string + yes + ID of valid configuration session + + + +
+
+
+ Payload + + + +
+
+ Returns + This call returns created web server: + + + + +
+
+
+
+ ASP.NET Application API + This section describes API calls for managing ASP.NET + Applications + +
+ Get a List of existing ASP.NET Applications + + ASP.NET Application Object + + + + + + + Attribute + Type + Description + + + + + id + string + Unique ID + + + name + string + User-friendly name + + + created + datetime + Creation date and time in ISO format + + + + updated + datetime + Modification date and time in ISO + format + + + + repository + string + URL of git repository containing the + application source files + + + + uri + string + URI of the Service + + + domain + string + Domain name. + This attribute may be empty/null/omitted + if machine is not a domain member + + + + units + object + ASP.NET Application Unit + object + + + + +
+ + ASP.NET Application Unit Object + + + + + + + Attribute + Type + Description + + + + + id + string + Unique ID + + + address + string + Unit address + + + location + string + AvailabilityZone or specific + physical datacenter. + + + + +
+
+ Call + + GET /environments/<id>/aspNetApps + Call + + + + + + + + Method + URI + Description + + + + + GET + /environments/<id>/aspNetApps + Get a list of existing ASP.NET + Applications + + + + +
+ + Headers + + + + + + + + Name + Type + Required + Description + + + + + X-Configuration-Session + string + no + ID of valid configuration session + + + +
+
+
+ Payload + None +
+
+ Returns + This call returns list of ASP.NET Applications: + + + + +
+
+
+ Create ASP.NET Application instance + + ASP.NET Application Object + + + + + + + + Attribute + Type + Required + Description + + + + + name + string + yes + User-friendly name + + + repository + string + yes + URL of git repository containing the + application source files + + + + domain + string + no + Domain name + + + units + object + yes + ASP.NET Application Unit object + + + +
+ + ASP.NET Application Unit Object + + + + + + + + Attribute + Type + Required + Description + + + + + location + string + yes + AvailabilityZone or specific physical datacenter. + + + + +
+
+ Call + + POST /environments/<id>/aspNetApps + Call + + + + + + + + Method + URI + Description + + + + + POST + /environments/<id>/aspNetApps + Create new ASP.NET Application + + + +
+ + Headers + + + + + + + + Name + Type + Required + Description + + + + + X-Configuration-Session + string + yes + ID of valid configuration session + + + +
+
+
+ Payload + + + +
+
+ Returns + This call returns created ASP.NET Application: + + + + +
+
+
+
+ Web Server Farm API + This section describes API calls for managing Web Server + (IIS) Web Farm services + +
+ Get a List of existing Web Server Farms + + Web Server Farm Object + + + + + + + Attribute + Type + Description + + + + + id + string + Unique ID + + + name + string + User-friendly name + + + created + datetime + Creation date and time in ISO format + + + + updated + datetime + Modification date and time in ISO + format + + + + uri + string + URI of the Service + + + loadBalancerPort + integer + Port number of the Farm + + + domain + string + Domain name. + This attribute may be empty/null/omitted + if machine is not a domain member + + + + units + object + Web Server Farm Unit + object + + + + +
+ + Web Server Farm Unit Object + + + + + + + Attribute + Type + Description + + + + + id + string + Unique ID + + + location + string + AvailabilityZone or specific + physical datacenter. + + + + +
+
+ Call + + GET /environments/<id>/webServerFarms + Call + + + + + + + + Method + URI + Description + + + + + GET + /environments/<id>/webServerFarms + Get a list of existing + Web Server Farms + + + + +
+ + Headers + + + + + + + + Name + Type + Required + Description + + + + + X-Configuration-Session + string + no + ID of valid configuration session + + + +
+
+
+ Payload + None +
+
+ Returns + This call returns list of Web Server Farms: + + + + +
+
+
+ Create Web Server Farm instance + + Web Server Farm Object + + + + + + + + Attribute + Type + Required + Description + + + + + name + string + yes + User-friendly name + + + loadBalancerPort + integer + yes + Port number for the Farm + + + domain + string + no + Domain name + + + units + object + yes + Web Server Farm Unit object + + + +
+ + Web Server Farm Unit Object + + + + + + + + Attribute + Type + Required + Description + + + + + location + string + yes + AvailabilityZone or specific physical datacenter. + + + + +
+
+ Call + + POST /environments/<id>/webServerFarms + Call + + + + + + + + Method + URI + Description + + + + + POST + /environments/<id>/webServerFarms + Create new Web Server Farm + + + +
+ + Headers + + + + + + + + Name + Type + Required + Description + + + + + X-Configuration-Session + string + yes + ID of valid configuration session + + + +
+
+
+ Payload + + + +
+
+ Returns + This call returns created Web Server Farm: + + + + +
+
+
+ +
+ ASP.NET Application Farm API + This section describes API calls for managing ASP.NET + Web Farm Application Services + +
+ Get a List of existing ASP.NET Application Farms + + ASP.NET Application Farm Object + + + + + + + Attribute + Type + Description + + + + + id + string + Unique ID + + + name + string + User-friendly name + + + created + datetime + Creation date and time in ISO format + + + + updated + datetime + Modification date and time in ISO + format + + + + uri + string + URI of the Service + + + repository + string + URL of git repository containing the + application source files + + + + loadBalancerPort + integer + Port number of the Farm + + + domain + string + Domain name. + This attribute may be empty/null/omitted + if machine is not a domain member + + + + units + object + ASP.NET Application Farm Unit + object + + + + +
+ + ASP.NET Application Farm Unit Object + + + + + + + Attribute + Type + Description + + + + + id + string + Unique ID + + + address + string + Unit address + + + location + string + AvailabilityZone or specific + physical datacenter. + + + + +
+
+ Call + + GET /environments/<id>/aspNetAppFarms + Call + + + + + + + + Method + URI + Description + + + + + GET + /environments/<id>/aspNetAppFarms + Get a list of existing + ASP.NET Application Farms + + + + +
+ + Headers + + + + + + + + Name + Type + Required + Description + + + + + X-Configuration-Session + string + no + ID of valid configuration session + + + +
+
+
+ Payload + None +
+
+ Returns + This call returns list of ASP.NET Application Farms: + + + + +
+
+
+ Create ASP.NET Application Farm instance + + ASP.NET Application Farm Object + + + + + + + + Attribute + Type + Required + Description + + + + + name + string + yes + User-friendly name + + + repository + string + yes + URL of git repository containing the + application source files + + + + loadBalancerPort + integer + yes + Port number for the Farm + + + domain + string + no + Domain name + + + units + object + yes + ASP.NET Application Farm Unit object + + + +
+ + ASP.NET Application Farm Unit Object + + + + + + + + Attribute + Type + Required + Description + + + + + location + string + yes + AvailabilityZone or specific physical datacenter. + + + + +
+
+ Call + + POST /environments/<id>/aspNetAppFarms + Call + + + + + + + + Method + URI + Description + + + + + POST + /environments/<id>/aspNetAppFarms + Create new ASP.NET Application Farm + + + +
+ + Headers + + + + + + + + Name + Type + Required + Description + + + + + X-Configuration-Session + string + yes + ID of valid configuration session + + + +
+
+
+ Payload + + + +
+
+ Returns + This call returns created ASP.NET Application Farm: + + + + +
+
+
+
+
\ No newline at end of file diff --git a/src/murano-manual/src/docbkx/murano-manual.xml b/src/murano-manual/src/docbkx/murano-manual.xml index 0fb0e26..7167cca 100644 --- a/src/murano-manual/src/docbkx/murano-manual.xml +++ b/src/murano-manual/src/docbkx/murano-manual.xml @@ -1,3 +1,4 @@ + + http://www.w3.org/1999/xlink http://www.w3.org/1999/xlink.xsd" + version="5.0"> Murano Project Documentation @@ -61,3778 +61,12 @@ http://docbook.org/ns/docbook " this is a placeholder for the back cover - - Overview - Welcome to Murano Project. - -
- Intended Audience - This guide is intended to individuals who want to contribute - to our - project. - -
-
- Document Change History - This version of the Murano Manual replaces and obsoletes all - previous versions. The - most recent changes are described in the table below: - - - - - Revision Date - Summary of Changes - - - - - April. 4, 2013 - - - - Initial document creation. - - - - - - -
-
- Additional Resources - - - - - Mirantis - Cloud Software - - - - -
-
- - Blueprint -
- - 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 - - - - - - The Key Features of the Service are the following: - - - Native to OpenStack - - - Introduces abstraction level for Windows Environments - - - Supports Availability Zones and Disaster Recovery scenarios - - - Uses native Windows features for HA solutions - - - -
-
-
- Architecture - - The Murano Service communicates with the following OpenStack components: - - - Horizon - provides a GUI with ability to use all Murano features; - - - Keystone - authenticates users and provides the security token that is used to work with - OpenStack, hence limiting the user abilities in Murano based on OpenStack privileges; - - - - Heat - is used to provision VMs and other OpenStack resources for Windows Environments; - - - - Glance - stores Windows Server VM images, with each image containing an installed OS and a - set of scripts - - - - Quantum - provides the network configuration API - - - Agent - provides agent functionality to communicate with the Orchestration Engine and - executes tasks on VMs - - - - -
- Architecture - - - - - - - - -
-
- 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 the 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 - - - - <emphasis>Phase 1. Initial Version</emphasis> - - (Release date: May 30th) - - Core Services: REST API, Orchestration Engine - - - Horizon dashboard extension as plugin - - - Integration with Heat - - - Support single Data Center (no Disaster Recovery) - - - Support the following Windows Services: - - - Active Directory - Single Domain with multiple domain controllers - - - IIS Server - single instance of IIS Server - - - IIS Cluster - multiple IIS instances with Load Balancing - - - ASP.NET Application Service - ASP.NET application installed on top of IIS - - - - - - - - - - <emphasis>Phase 2. Stable Release</emphasis> - - (3 month) - - Stabilize Core Services (bug fixing) - - - Support API, UI extensibility - - - UI design - - - Workflow and recipes repository - - - Data transfer between service instances - - - Basic Service monitoring - - - Additional Services: - - - MS SQL - single instance of Microsoft SQL Server or Pair of SQL Servers with DB - mirroring - - - - - - - - - - - <emphasis>Phase 3</emphasis> - - - Add more services - - - Services Dependencies support - - - Extended health monitoring - - - Agent extensibility (allow 3rd party configuration tools) - - - Basic Self-healing (actions on monitoring events) - - - Additional Services - - - - - - - - <emphasis>Phase 4</emphasis> - - - Availability Zones support - - - Auto-scaling for Windows services - - - Security improvements - - - - - - API Specification - - - - Revision Date - Summary of Changes - - - - - February 4, 2013 - - - - Initial document creation - - - - - - February 22, 2013 - - - - Enhance API with latest architecture - changes - - - - - - - March 06, 2013 - - - - Fix specification according to remarks - from Dmitry Teselkin - - - - - - - Jun 06, 2013 - - - - ASP.NET Application, Web Server Farm and - ASP.NET Application Farm Services Added, - uri/address/endpoint corrections, hostname - assignment section added - - - - - - - -
- Introduction - Murano Service API is a programmatic interface used for - interaction - with Murano. Other interaction - mechanisms like Murano Dashboard or Murano CLI should use API - as underlying - protocol for interaction. - - - - For detailed information about entities and terms used in - this document, please refer first to - . - - - Environment - - Environment is a set of logically related - Services managed by a single tenant. Environment - defines Windows environment boundaries. - - Services within single Environment may comprise - some complex configuration while Services - in different Environments are always independent - from one another. Each Environment is - associated with single OpenStack project (tenant). - - - - - Service - - Service is building block of Windows environment. - Service is a set of one or more Virtual - Machines sharing a common purpose and configured - together. Each service belongs to a single - Environment and single Service Type. - - Services are comprised from one or more Service - Units. - - - - - Service Type - - Service type is definition for describing set of - features exposed by service. - - - - - Service Unit - - Service Units are the actual Windows Server VMs - instantiated by OpenStack and then - configured according to its Service Type (this may - also correspond to one of predefined - Windows Server roles). - - - - - Service Metadata - - Service Metadata is a JSON-encoded definition of - Environment, its Services and their - Service Units along with all their attributes. - Service Metadata may describe both current - and the intended state of the Environment. - - - - - Session - - All changes to environment done in scope of - Session. After all changes to Environment - state are accumulated, changes actually are applied - only after session is deployed. - - - - -
-
- Return codes and errors - All REST API calls return the natural HTTP response codes for - the operations, e.g. a successful GET - returns a HTTP 200, a successful PUT returns a HTTP 201, a GET - for a non-existent entity returns HTTP - 404, unauthorized operations return HTTP 401 or HTTP 403, - internal errors return HTTP 500. - -
-
- Response of POSTs and PUTs - All POST and PUT requests by convention should return the - created object (in the case of POST, with a - generated ID) as if it was requested by GET. - -
-
- Authentication - All requests include a Keystone authentication token header - (X-Auth-Token). Clients must authenticate - with Keystone before interacting with the Murano service. - -
-
- Workflow -
- Sample Workflow - - - - - - - - -
- Let’s review a sample workflow (series of API calls) for - creating new Environment with Active - Directory Service deployment: - - - POST /environments/ - Creating new Environment - - - - POST /environments/id/configure – Creating new - configuration session for Environment - - - - POST /environments/id/activeDirectory – Creating - new ActiveDirectory service - - - - POST /environments/id/sessions/session_id/deploy - – Saving and deploying changes - - - - -
-
- Hostname assignment - Each Service Object definition may have an attribute - "unitNamingPattern" that is used to control hostnames - that will be assigned to spawned VM instances of the - service. - - - Hostname pattern has the form of "name#" where "#" - character is replaced with sequential number of unit - within the service (starting with 1) and all other - characters remain intact. For example Service with - unitNamingPatter equal to "ad#-loc" will have units - with hostnames "ad1-loc", "ad2-loc" etc. - - - "unitNamingPattern" attribute is optional. - If it is omitted then a unique random hostname - would be assigned. - -
-
- API -
- Environment API - This section describes API calls for Environment - management. - -
- Get a List of existing Environments - - Environment Object - - - - - - - Attribute - Type - Description - - - - - id - string - Unique ID - - - name - string - User-friendly name - - - created - datetime - Creation date and time in ISO format - - - - updated - datetime - Modification date and time in ISO - format - - - - tenant_id - string - OpenStack tenant ID - - - version - int - Current version - - - status - string - Deployment status: ready, pending, deploying - - - - -
-
- Call - - GET /environments Call - - - - - - - Method - URI - Description - - - - - GET - /environments - Get a list of existing - Environments - - - - -
-
-
- Payload - None -
-
- Returns - This call returns list of environments. Only the - basic properties are returned. For details see "Get - Environment Detailed Information": - - - - -
-
-
- Create Environment instance - - Environment Object - - - - - - - - Attribute - Type - Required - Description - - - - - name - string - yes - User-friendly name - - - -
-
- Call - - POST /environments Call - - - - - - - Method - URI - Description - - - - - POST - /environments - Create new Environment - - - -
-
-
- Payload - - - -
-
- Returns - This call returns created environment: - - - - -
-
-
- Update Environment Instance - - Environment Object - - - - - - - - Attribute - Type - Required - Description - - - - - name - string - yes - User-friendly name - - - -
-
- Call - - PUT /environments/<id> Call - - - - - - - Method - URI - Description - - - - - PUT - /environments/<id> - Update properties of Environment - instance - - - - -
- - Error Response Codes - - - - - - Code - Description - - - - - 401 - User is not authorized to access this tenant resources - - - -
-
-
- Payload - - - -
-
- Returns - This call returns modified environment object: - - - - -
-
-
- Get Environment Instance Detailed Information - -
- Call - - GET /environments/<id> Call - - - - - - - Method - URI - Description - - - - - GET - /environments/<id> - Returns detailed information - about Environment including child - entities - - - - -
- - Error Response Codes - - - - - - Code - Description - - - - - 401 - User is not authorized to access this tenant resources - - - -
-
-
- Payload - None -
-
- Returns - This call returns environment object with underlying services: - - - - -
-
-
- Remove Environment -
- Call - - DELETE /environments/<id> Call - - - - - - - Method - URI - Description - - - - - DELETE - /environments/<id> - Remove specified Environment. - - - - -
- - Error Response Codes - - - - - - Code - Description - - - - - 401 - User is not authorized to access this tenant resources - - - -
-
-
- Payload - None -
-
- Returns - None -
-
-
-
- Environment Configuration API - Multiple sessions could be opened for one environment simultaneously, but only one session going - to be deployed. First session that starts deploying is going to be deployed; other ones become - invalid and could not be deployed at all. User could not open new session for environment that in - `deploying` state (that’s why we call it “almost lock free” model). - - - Configuration Session Object - - - - - - - Attribute - Type - Description - - - - - id - string - Session unique ID - - - environment_id - string - Environment that going to be modified - during this session - - - - created - datetime - Creation date and time in ISO format - - - - updated - datetime - Modification date and time in ISO - format - - - - user_id - string - Session owner ID - - - version - int - Environment version for which configuration session is opened - - - state - string - Session state. Could be: open, - deploying, deployed - - - - -
-
- Configure Environment / Open session - During this call new working session is created, and session ID should be sent in header - (X-Configuration-Session) to all next API calls. - -
- Call - - POST /environments/<id>/configure - Call - - - - - - - - Method - URI - Description - - - - - POST - /environments/<id>/configure - Creating new configuration session - - - - -
- - Error Response Codes - - - - - - Code - Description - - - - - 403 - Could not open session for environment, environment has deploying - status - - - - -
-
-
- Payload - None -
-
- Returns - This call returns created session: - - - - -
-
-
- Deploy changes from Session -
- Call - - POST /environments/<id>/sessions/<sessionId>/deploy - Call - - - - - - - - Method - URI - Description - - - - - POST - /environments/<id>/sessions/<sessionId>/deploy - Deploying changes made in - session with specified <sessionId> - - - -
- - Error Response Codes - - - - - - Code - Description - - - - - 403 - Session is invalid - - - 403 - Session is already deployed or deployment is in progress - - - -
-
-
- Payload - None -
-
- Returns - None -
-
-
- Get session information -
- Call - - GET /environments/<id>/sessions/<sessionId> - Call - - - - - - - - Method - URI - Description - - - - - GET - /environments/<id>/sessions/<sessionId> - Getting details about session - with specified - <sessionId> - - - -
- - Error Response Codes - - - - - - Code - Description - - - - - 401 - User is not authorized to access this session - - - 403 - Session is invalid - - - -
-
-
- Payload - None -
-
- Returns - This call returns session information: - - - - -
-
-
- Delete Session -
- Call - - DELETE /environments/<id>/sessions/<sessionId> - Call - - - - - - - - Method - URI - Description - - - - - DELETE - /environments/<id>/sessions/<sessionId> - Delete session with specified - <sessionId> - - - -
- - Error Response Codes - - - - - - Code - Description - - - - - 401 - User is not authorized to access this session - - - 403 - Session is in deploying state and could not be deleted - - - -
-
-
- Payload - None -
-
- Returns - None -
-
-
-
- Active Directory API - This section describes API calls for Active Directory - service management. - -
- Get a List of existing Active Directory instances - - - Active Directory Object - - - - - - - Attribute - Type - Description - - - - - id - string - Unique ID - - - name - string - Domain name - - - created - datetime - Creation date and time in ISO - format - - - - updated - datetime - Modification date and time in ISO - format - - - - domain - string - Domain name - - - uri - string - URI of the Service - - - units - object - Active Directory Unit object - - - -
- - Active Directory Unit Object - - - - - - - Attribute - Type - Description - - - - - id - string - Unique ID - - - isMaster - boolean - true for primary domain controller, - false otherwise - - - address - string - Unit address - - - location - string - AvailabilityZone or specific - physical datacenter. - - - - -
-
- Call - - GET /environments/<id>/activeDirectories - Call - - - - - - - - Method - URI - Description - - - - - GET - /environments/<id>/activeDirectories - Get a list of Active Directory - instances - - - - -
- - Headers - - - - - - - - Name - Type - Required - Description - - - - - X-Configuration-Session - string - no - ID of valid configuration session - - - -
-
-
- Payload - None -
-
- Returns - This call returns list of Active Directory - instances: - - - - -
-
-
- Create Active Directory instance - - Active Directory Object - - - - - - - - Attribute - Type - Required - Description - - - - - name - string - yes - Domain name - - - adminPassword - string - yes - Password from domain administrator - account - - - - domain - string - yes - Domain name - - - units - object - yes - Active Directory Unit object - - - -
- - Active Directory Unit Object - - - - - - - - Attribute - Type - Required - Description - - - - - isMaster - boolean - yes - true for primary domain controller, - false otherwise - - - recoveryPassword - string - yes - Recovery password - - - location - string - yes - AvailabilityZone or specific physical datacenter. - - - -
-
- Call - - POST /environments/<id>/activeDirectories - Call - - - - - - - - Method - URI - Description - - - - - POST - /environments/<id>/activeDirectories - Create new Active Directory - - - - -
- - Headers - - - - - - - - Name - Type - Required - Description - - - - - X-Configuration-Session - string - yes - ID of valid configuration session - - - -
-
-
- Payload - - - -
-
- Returns - This call returns created active directory - domain: - - - - -
-
-
-
- Web Server API - This section describes API calls for managing Windows web-server software – IIS. -
- Get a List of existing Web Servers - - Web Server Object - - - - - - - Attribute - Type - Description - - - - - id - string - Unique ID - - - name - string - User-friendly name - - - created - datetime - Creation date and time in ISO format - - - - updated - datetime - Modification date and time in ISO - format - - - - uri - string - URI of the Service - - - domain - string - Domain name. - This attribute may be empty/null/omitted - if machine is not a domain member - - - - units - object - Web Server Unit object - - - -
- - Web Server Unit Object - - - - - - - Attribute - Type - Description - - - - - id - string - Unique ID - - - address - string - Unit address - - - location - string - AvailabilityZone or specific physical datacenter. - - - - -
-
- Call - - GET /environments/<id>/webServers - Call - - - - - - - - Method - URI - Description - - - - - GET - /environments/<id>/webServers - Get a list of existing Web - Servers - - - - -
- - Headers - - - - - - - - Name - Type - Required - Description - - - - - X-Configuration-Session - string - no - ID of valid configuration session - - - -
-
-
- Payload - None -
-
- Returns - This call returns list of web servers: - - - - -
-
-
- Create Web Server instance - - Web Server Object - - - - - - - - Attribute - Type - Required - Description - - - - - name - string - yes - User-friendly name - - - domain - string - no - Domain name - - - units - object - yes - Web Server Unit object - - - -
- - Web Server Unit Object - - - - - - - - Attribute - Type - Required - Description - - - - - location - string - yes - AvailabilityZone or specific physical datacenter. - - - - -
-
- Call - - POST /environments/<id>/webServers - Call - - - - - - - - Method - URI - Description - - - - - POST - /environments/<id>/webServers - Create new Web Server - - - -
- - Headers - - - - - - - - Name - Type - Required - Description - - - - - X-Configuration-Session - string - yes - ID of valid configuration session - - - -
-
-
- Payload - - - -
-
- Returns - This call returns created web server: - - - - -
-
-
-
- ASP.NET Application API - This section describes API calls for managing ASP.NET - Applications -
- Get a List of existing ASP.NET Applications - - ASP.NET Application Object - - - - - - - Attribute - Type - Description - - - - - id - string - Unique ID - - - name - string - User-friendly name - - - created - datetime - Creation date and time in ISO format - - - - updated - datetime - Modification date and time in ISO - format - - - - repository - string - URL of git repository containing the - application source files - - - uri - string - URI of the Service - - - domain - string - Domain name. - This attribute may be empty/null/omitted - if machine is not a domain member - - - - units - object - ASP.NET Application Unit - object - - - -
- - ASP.NET Application Unit Object - - - - - - - Attribute - Type - Description - - - - - id - string - Unique ID - - - address - string - Unit address - - - location - string - AvailabilityZone or specific - physical datacenter. - - - - -
-
- Call - - GET /environments/<id>/aspNetApps - Call - - - - - - - - Method - URI - Description - - - - - GET - /environments/<id>/aspNetApps - Get a list of existing ASP.NET - Applications - - - - -
- - Headers - - - - - - - - Name - Type - Required - Description - - - - - X-Configuration-Session - string - no - ID of valid configuration session - - - -
-
-
- Payload - None -
-
- Returns - This call returns list of ASP.NET Applications: - - - - -
-
-
- Create ASP.NET Application instance - - ASP.NET Application Object - - - - - - - - Attribute - Type - Required - Description - - - - - name - string - yes - User-friendly name - - - repository - string - yes - URL of git repository containing the - application source files - - - domain - string - no - Domain name - - - units - object - yes - ASP.NET Application Unit object - - - -
- - ASP.NET Application Unit Object - - - - - - - - Attribute - Type - Required - Description - - - - - location - string - yes - AvailabilityZone or specific physical datacenter. - - - - -
-
- Call - - POST /environments/<id>/aspNetApps - Call - - - - - - - - Method - URI - Description - - - - - POST - /environments/<id>/aspNetApps - Create new ASP.NET Application - - - -
- - Headers - - - - - - - - Name - Type - Required - Description - - - - - X-Configuration-Session - string - yes - ID of valid configuration session - - - -
-
-
- Payload - - - -
-
- Returns - This call returns created ASP.NET Application: - - - - -
-
-
-
- Web Server Farm API - This section describes API calls for managing Web Server - (IIS) Web Farm services -
- Get a List of existing Web Server Farms - - Web Server Farm Object - - - - - - - Attribute - Type - Description - - - - - id - string - Unique ID - - - name - string - User-friendly name - - - created - datetime - Creation date and time in ISO format - - - - updated - datetime - Modification date and time in ISO - format - - - - uri - string - URI of the Service - - - loadBalancerPort - integer - Port number of the Farm - - - domain - string - Domain name. - This attribute may be empty/null/omitted - if machine is not a domain member - - - - units - object - Web Server Farm Unit - object - - - -
- - Web Server Farm Unit Object - - - - - - - Attribute - Type - Description - - - - - id - string - Unique ID - - - location - string - AvailabilityZone or specific - physical datacenter. - - - - -
-
- Call - - GET /environments/<id>/webServerFarms - Call - - - - - - - - Method - URI - Description - - - - - GET - /environments/<id>/webServerFarms - Get a list of existing - Web Server Farms - - - - -
- - Headers - - - - - - - - Name - Type - Required - Description - - - - - X-Configuration-Session - string - no - ID of valid configuration session - - - -
-
-
- Payload - None -
-
- Returns - This call returns list of Web Server Farms: - - - - -
-
-
- Create Web Server Farm instance - - Web Server Farm Object - - - - - - - - Attribute - Type - Required - Description - - - - - name - string - yes - User-friendly name - - - loadBalancerPort - integer - yes - Port number for the Farm - - - domain - string - no - Domain name - - - units - object - yes - Web Server Farm Unit object - - - -
- - Web Server Farm Unit Object - - - - - - - - Attribute - Type - Required - Description - - - - - location - string - yes - AvailabilityZone or specific physical datacenter. - - - - -
-
- Call - - POST /environments/<id>/webServerFarms - Call - - - - - - - - Method - URI - Description - - - - - POST - /environments/<id>/webServerFarms - Create new Web Server Farm - - - -
- - Headers - - - - - - - - Name - Type - Required - Description - - - - - X-Configuration-Session - string - yes - ID of valid configuration session - - - -
-
-
- Payload - - - -
-
- Returns - This call returns created Web Server Farm: - - - - -
-
-
- -
- ASP.NET Application Farm API - This section describes API calls for managing ASP.NET - Web Farm Application Services -
- Get a List of existing ASP.NET Application Farms - - ASP.NET Application Farm Object - - - - - - - Attribute - Type - Description - - - - - id - string - Unique ID - - - name - string - User-friendly name - - - created - datetime - Creation date and time in ISO format - - - - updated - datetime - Modification date and time in ISO - format - - - - uri - string - URI of the Service - - - repository - string - URL of git repository containing the - application source files - - - loadBalancerPort - integer - Port number of the Farm - - - domain - string - Domain name. - This attribute may be empty/null/omitted - if machine is not a domain member - - - - units - object - ASP.NET Application Farm Unit - object - - - -
- - ASP.NET Application Farm Unit Object - - - - - - - Attribute - Type - Description - - - - - id - string - Unique ID - - - address - string - Unit address - - - location - string - AvailabilityZone or specific - physical datacenter. - - - - -
-
- Call - - GET /environments/<id>/aspNetAppFarms - Call - - - - - - - - Method - URI - Description - - - - - GET - /environments/<id>/aspNetAppFarms - Get a list of existing - ASP.NET Application Farms - - - - -
- - Headers - - - - - - - - Name - Type - Required - Description - - - - - X-Configuration-Session - string - no - ID of valid configuration session - - - -
-
-
- Payload - None -
-
- Returns - This call returns list of ASP.NET Application Farms: - - - - -
-
-
- Create ASP.NET Application Farm instance - - ASP.NET Application Farm Object - - - - - - - - Attribute - Type - Required - Description - - - - - name - string - yes - User-friendly name - - - repository - string - yes - URL of git repository containing the - application source files - - - loadBalancerPort - integer - yes - Port number for the Farm - - - domain - string - no - Domain name - - - units - object - yes - ASP.NET Application Farm Unit object - - - -
- - ASP.NET Application Farm Unit Object - - - - - - - - Attribute - Type - Required - Description - - - - - location - string - yes - AvailabilityZone or specific physical datacenter. - - - - -
-
- Call - - POST /environments/<id>/aspNetAppFarms - Call - - - - - - - - Method - URI - Description - - - - - POST - /environments/<id>/aspNetAppFarms - Create new ASP.NET Application Farm - - - -
- - Headers - - - - - - - - Name - Type - Required - Description - - - - - X-Configuration-Session - string - yes - ID of valid configuration session - - - -
-
-
- Payload - - - -
-
- Returns - This call returns created ASP.NET Application Farm: - - - - -
-
-
-
- -
- - Installation Guide - This chapter is about installation and configuration Murano services. - Note that all Murano modules can be downloaded from - our page on launchpad. - -
- Common Pre-Requirements - Operation system: - - Ubuntu - RHEL/CentOS - - Packages: - - python-dev - libxml2-dev - libxslt-dev - - -
-
- Murano API Service - Murano API provides access to the Murano orchestration engine via API. - This chapter describes Murano API for contributors of the project, and assumes that you are already - familiar with Murano API from an end-user perspective. - -
- Install - - - Project source can be checked out as git repository (see below) or downloaded from - here - - - - - - Switch to just created directory - - - - - - And them perform installation: - - - - - -
-
- Configure - - - First configure rabbitMQ by adding vhost and user with administrator rights: - - - - - - Copy and edit configuration file: - - - - - - Configure it according to your environment: - [DEFAULT] section sets up logging. - In [reports] section you can set names for new rabbitMQ queues. - [rabbitmq] section sets up host configuration where rabbitMQ with just created user and vhost is running. - - - - - - - Copy and edit one more configuration file: - - - - - - Configure keystone auth_token in [filter:authtoken] section. - For more information see Auth-Token Middleware with Username and Password - - - - - - Register murano-api service in Openstack - (note: you need to be authorized in Openstack to run this commands) - - - - - - - -
-
- Run - Run Murano API and supply valid configuration file: - - - -
-
-
- Conductor Service - Conductor is a Murano orchestration engine that transforms object model sent by REST API service into - a series of Heat and Murano-Agent commands. - - This document describes Conductor for contributors of the project. -
- Install - - - Murano Condutor uses OpenStack Heat for new virtual machines creation, therefore Heat should been installed and configured. Some services require the Internet access for virtual machines to successfull deployment. - The detailed information about Heat configuration is described here. - - - OpenStack Heat require Key Pair for Load Balancer instances. Murano Conductor uses LoadBalancer for IIS Farms and ASP.NET Farms. The default name for Key Pair is 'murano-lb-key', you can change this parameter in file - - - - - Project source code can be checked out from git repository (see below) or downloaded from - here. - - - - - - - - - - Switch to just created directory - - - - - - And install Conductor Service to the system: - - - - - -
-
- Configure - - - Edit configuration file: - - - - - - - Change it according to your environment. - [DEFAULT] section is responsible for logging. - [heat] points where heat is running. - [rabbitmq] section points where your rabbitMQ installed and configured. - - - - - - -
-
- Run - Run Conductor and supply valid configuration file: - - - -
-
-
- Murano Dashboard - Murano Dashboard provides Web UI for Murano Project. -
- Pre-Requirements - - - To setup Murano Dashboard on a host with Openstack Dashbord already installed you just need to install - the python-muranoclient. You can download it from here. - And then perform installation with pip: - - just_downloaded.tar.gz - - - - If there is no OpenStack Dashboard (horizon) you'll need to install it. See here how to do that. - - -
-
- Install - - - Project source code can be checked out from git repository (see below) or downloaded from - here. - - - - - - - Switch to just created directory - - - - - - And perform installation - - - - - -
-
- Configure - - - Open Django configuration file: - - && nano settings.py - ]]> - - Please, make sure that no local/local_settings.py file exists. - - - Add to import section - - - - - - And this so muranoclient exceptions can be safely handle by horizon: - - - - - - And finally edit HORIZON_CONFIG and INSTALLED_APPS sections - - - - - -
-
- Run - Run Horizon: - - - -
-
-
- - ScreenShots - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + How To Participate If you would like to ask some questions or make proposals, feel free to reach us on #murano irc channel at @@ -3841,8 +75,7 @@ user@work:~/$ sudo service apache2 restart Murano community directly by murano-all@lists.launchpad.net (please, note that your email address should be registered in launchpad, otherwise your mail will be ignored - by - mailing system). + by mailing system). We’re going to hold public weekly meetings on Mondays at 17:00 UTC on #openstack-meeting-alt irc channel.