User Tools

Site Tools


nova-rdp

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
nova-rdp [2013/12/23 02:36]
admin
nova-rdp [2014/06/12 19:37] (current)
Line 1: Line 1:
-====== Nova RDP Support======+====== Nova RDP Support Configuration======
  
-Nova currently provides support for [[http://en.wikipedia.org/wiki/Virtual_Network_Computing|VNC]] and [[http://en.wikipedia.org/wiki/SPICE_(protocol)|SPICE]] graphical consoles. VNC in particular is the protocol employed natively by most popular hypervisors supported by Nova. [[http://en.wikipedia.org/wiki/Hyper-V|Microsoft Hyper-V]] in this context is a remarkable exception, as it employs [[http://en.wikipedia.org/wiki/Remote_Desktop_Protocol|Remote Desktop Protocol (RDP)]] for graphical console access, based on [[http://msdn.microsoft.com/en-us/library/jj712081.aspx|Open Specifications]].+Nova currently provides support for [[http://en.wikipedia.org/wiki/Virtual_Network_Computing|VNC]] and [[http://en.wikipedia.org/wiki/SPICE_(protocol)|SPICE]] graphical consoles. VNC in particular is the protocol employed natively by most popular hypervisors supported by Nova. [[http://en.wikipedia.org/wiki/Hyper-V|Microsoft Hyper-V]] in this context is a remarkable exception, as it employs the [[http://en.wikipedia.org/wiki/Remote_Desktop_Protocol|Remote Desktop Protocol (RDP)]] for graphical console access, based on [[http://msdn.microsoft.com/en-us/library/jj712081.aspx|Open Specifications]] and implemented by various open source projects.
  
-===== Getting console connection details =====+[[http://www.youtube.com/watch?v=DhBa-IuTQAs|Here]]'s an example video showing an HTML5 RDP console based on [[https://github.com/FreeRDP/FreeRDP|FreeRDP]].
  
-Nova includes internally the required proxy solutions for VNC (novnc, xvpvnc) and SPICE, but this is not the case for RDP. Beside that, it's also desirable to leave third party the ability to choose a custom graphical console UI solution not necessarily included with Nova.  
  
-In order to allow external tools to access graphical console protocol connection details, a public API has been provided.+---- 
 +===== Configuring Nova for RDP support =====
  
 +RDP console configuration is quite straightforward. All you need to do is to add the following configuration settings in your Hyper-V compute node's **nova.conf**:
  
-==== Get console connection infoV2 API ====+    [rdp] 
 +    enabled=True 
 +    html5_proxy_base_url=http://10.0.0.1:8000/ 
 +   
 +Where the url specified in the **html5_proxy_base_url** setting is provided by the FreeRDP HTML5 proxy as detailed in the next section.
  
-^Verb ^URI ^Description ^ +===== Installing and configuring the FreeRDP HTML5 proxy =====
-|GET |/servers/id/action |gets the connection info for the specified server. |+
  
-Normal Response Code(s): 200+The FreeRDP HTML5 proxy can be installed on various Linux distributions (currently Ubuntu >= 12.04, RHEL 6.x / CentOS 6.x and Fedora >= 16or on Microsoft Windows, including Hyper-V Server.
  
-Error Response Code(s): badRequest (400), unauthorized (401), itemNotFound (404)+==== Ubuntu 12.04 and above ====
  
 +A shell script is provided to simplify the installation of the application and the dependencies, mostly available in source form only.
  
-==== ExampleGet console connection requestXML ====+    sudo apt-get install -y git 
 +    git clone https://github.com/FreeRDP/FreeRDP-WebConnect.git 
 +    cd FreeRDP-WebConnect     
 +    sudo ./setup_all.sh -f -i 
 +     
 +At this point the proxy, called **wsgate** can be installed by running:
  
-<code xml> +    sudo make install    
-<?xml version="1.0" encoding="UTF-8"?> +
-<os-getConsoleConnectInfo/> +
-</code>+
  
-==== Example. Get console connection request: JSON ====+==== wsgate configuration ====
  
-<code javascript> +The default configuration file is located here:
-+
-    "os-getConsoleConnectInfo"null +
-+
-</code>+
  
-==== ExampleGet console connection responseXML ====+    /usr/local/etc/wsgate.ini 
 +     
 +Change the following options to match your environment configuration:
  
-<code xml> +    [global] 
-<?xml version='1.0' encoding='UTF-8'?> +    port = 8000
-<console> +
-    <instance_uuid>b48316c5-71e8-45e4-9884-6c78055b9b13</instance_uuid> +
-    <host>localhost</host> +
-    <port>3389</port> +
-    <internal_access_path>51af38c3-555e-4884-a314-6c8cdde37444</internal_access_path> +
-</console> +
-</code>+
  
-==== Example. Get console connection responseJSON ====+Notemake sure to open the port in your operating system firewall.
  
-<code javascript> +    [openstack] 
- { +    authurl = http://10.0.0.1:5000/v2.0 
-    "console"+    username = admin 
-        "instance_uuid""b48316c5-71e8-45e4-9884-6c78055b9b13", +    password = secret 
-        "host": "localhost", +    tenantname = admin
-        "port": 3389, +
-        "internal_access_path": "51af38c3-555e-4884-a314-6c8cdde37444" +
-    +
-}  +
-</code>+
  
-==== Get console connection info: V3 API ====+    [hyperv] 
 +    # Credentials used to connect to the Hyper-V hosts when accessing 
 +    # OpenStack instances consoles  
  
-^Verb ^URI ^Description ^ +    hostusername = Administrator 
-|GET |/servers/id/action |gets the connection info for the specified server. |+    hostpassword = secret
  
-Normal Response Code(s): 200+It is also strongly recommended to encrypt the traffic using HTTPS. Here are the relevant parameters, including a PEM file containing both the certificate and the private key.
  
-Error Response Code(s): badRequest (400), unauthorized (401), itemNotFound (404)+    [ssl] 
 +    port = 4430 
 +    certfile = /usr/local/etc/wsgate/test.pem 
 +    certpass = verysecret
  
-==== Example. Get console connection requestXML ====+HTML, CSS and Javascript files are available at the following location for further customization:
  
-<code xml> +    /usr/local/share/wsgate
-<?xml version="1.0" encoding="UTF-8"?> +
-<get_console_connect_info/+
-</code>+
  
-==== Example. Get console connection request: JSON ====+==== Running wsgate ==== 
 +     
 +wsgate can be executed as a demon with the following instruction:
  
-<code javascript> +    wsgate -c /usr/local/etc/wsgate.ini
-+
-    "get_console_connect_info": null +
-+
-</code> +
- +
-==== Example. Get console connection response: XML ==== +
- +
-Same output as in the [[nova-rdp#Example. Get console connection response: XML|V2 API example]] +
- +
-==== Example. Get console connection response: JSON ==== +
- +
-Same output as in the [[nova-rdp#ExampleGet console connection response: JSON|V2 API example]]+
  
 +In case you should prefer to execute wsgate in a shell for debugging purposes, just set:
  
 +    [global]
 +    daemon = false
  
nova-rdp.1387758987.txt.gz · Last modified: 2013/12/23 02:36 (external edit)