SlideShare a Scribd company logo
Powered by OpenStack 
GMOインターネット株式会社 
システム本部 第2サービス開発部 
河田 幸博 
Openstack SPICE console の検証(icehouse)
Powered by OpenStack 
•背景 
–VNC(RFB )consoleはGMOのサービスにも使用しているが、spiceは試したことがない。 
•目的 
–どんなものか動かしてみる、ポイントは 
•Guest OS とClient間でのテキストのコピーペースト機能 
•Guest OS 上のAudio device 動作 
•VNCとの違いやメリット・デメリット 
•結論 
–Horizonも対応しているがwebで操作させるconsoleとしての実装はwebproxy経由となる ので期待するコピーペースト機能やaudio機能は動作せず、VNC からみてメリットは全く ない。conoHa web console の実装の方が優れている。 
–spice-html5 (Javascript -webproxy arbiter)は開発途上の感あり、keymapはusしか対応し ていない。Ctrl-Alt-Del を送れないのでwindowsにログイン出来ないとか・・・ 
–Spice client にて直接接続する場合には、テキストのコピーペースト、audioの再生とかは 実際に動作する。まぁ面白い。 
–nova(cnode)にspiceの実装は存在するが、device config(xml)の設定がないので実際に 試すには、少々修正(後述)が必要となる。 
–nova-api やHorizonは修正する必要がなく、vnc かspice か動いている方へ接続する。 
Y. Kawada 
2014/10/2 
2
Powered by OpenStack 
2014/10/2 
Y. Kawada 
3 
•結果 
–Spice client から直接接続すれば、テキストのコピーペーストも可能 
–同様に audioデバイスも動作可能。Videoとかの音声が再生されます。 
•考察 
–VNC or SPICE を使用するかは instance 毎に設定がしたい。 
•instance_metadata とかに console device の設定やkeymap の設定を入れて、それ が反映されるようにするのが良いのだと思う。(conoHaではkeymap やvirtio on/off 等の設定は独自に組み込んでいる。) 
•現状では設定が、host(cnode)のnova.confに書かれる。 
–Guest OS側では、spice-vdagent + vdagentd が動いている必要がある。これがcopy/paste などの通信を行います。
Powered by OpenStack 
•Guest OS 
–CentOS 7 install 
•端末モードでは意味がないのでgnome環境等のインストールが必要 
–Windows 2008 server 
•conoHaで提供しているwindows osを使用した 
•http://www.spice-space.org/download/windows/spice-guest-tools/spice-guest-tools-0.74.exe 
これをインストールすればよい 
•Spice client (windows) 
–http://virt-manager.org/download/sources/virt-viewer/virt-viewer-x64-1.0.msi 
これを使用した 
2014/10/2 
Y. Kawada 
4 
# yum install spice-vdagent 
# cd /etc/systemd/system 
# cp ./spice-vdagentd.target.wants/spice-vdagentd.service ./graphical.target.wants 
# systemctl enable spice-vdagentd.service
Powered by OpenStack 
2014/10/2 
Y. Kawada 
5 
horizon -> CentOS 7 
Spice client -> window 2008 server 
サンプル
Powered by OpenStack 
•nova 
–nova-api server にwebproxy も置く 
2014/10/2 
Y. Kawada 
6 
[root@ih-api-p1]# cat /usr/bin/nova-spicehtml5proxy 
#!/usr/bin/python 
# PBR Generated from u'console_scripts' 
import sys 
from nova.cmd.spicehtml5proxy import main 
if __name__ == "__main__": 
sys.exit(main()) 
[root@ih-api-p1 ]# cd /usr/share/ 
[root@ih-api-p1 ]# git clone git://anongit.freedesktop.org/spice/spice-html5 ./spice-html5 
[root@ih-api-p1 ]# cat /etc/httpd/conf.d/spice.conf 
# 
# spice-html5 is a Javascript SPICE client 
# 
Alias /spice /usr/share/spice-html5 
<Directory /usr/share/spice-html5> 
# This page is broadly available, tune here to make it more restricted. 
Require all granted 
DirectoryIndex spice.html 
</Directory> 
[root@ih-api-p1 ]# cat /usr/lib/systemd/system/openstack-nova-spicehtml5proxy.service 
[Unit] 
Description=OpenStack Nova Spice HTML5 Proxy Server 
After=syslog.target network.target 
[Service] 
Type=simple 
User=nova 
ExecStart=/usr/bin/nova-spicehtml5proxy 
[Install] 
WantedBy=multi-user.target 
[root@ih-api-p1 ]# systemctl start openstack-nova-spicehtml5proxy.service
Powered by OpenStack 
•nova (api) 
–/etc/nova/nova.conf 
Spice に関係のある箇所だけ 
2014/10/2 
Y. Kawada 
7 
# # Options defined in nova.cmd.spicehtml5proxy # # Host on which to listen for incoming requests (string value) spicehtml5proxy_host=0.0.0.0 # Port on which to listen for incoming requests (integer # value) spicehtml5proxy_port=6082 [spice] # # Options defined in nova.spice # html5proxy_base_url=http://xxx.xxx.xxx.xxx:6082/spice_auto.html # nova-api(proxy) のアドレス # IP address on which instance spice server should listen # (string value) server_listen=0.0.0.0 # Enable spice related features (boolean value) enabled=True # Enable spice guest agent support (boolean value) agent_enabled=true
Powered by OpenStack 
•nova (cnode) 
–/etc/nova/nova.conf 
Spice に関係のある箇所だけ 
2014/10/2 
Y. Kawada 
8 
[DEFAULT] # Enable VNC related features (boolean value) vnc_enabled=False [spice] # # Options defined in nova.spice # html5proxy_base_url=http://xxx.xxx.xxx.xxx:6082/spice_auto.html # nova-api(proxy) のアドレス # IP address on which instance spice server should listen # (string value) server_listen=0.0.0.0 # The address to which proxy clients (like nova- # spicehtml5proxy) should connect (string value) server_proxyclient_address=10.0.0.22 # cnode (host)のアドレス # Enable spice related features (boolean value) enabled=True # Enable spice guest agent support (boolean value) agent_enabled=true
Powered by OpenStack 
2014/10/2 
Y. Kawada 
9 
diff --git a/virt/libvirt/config.py b/virt/libvirt/config.py 
index a931b57..e2ac9ea 100644 
--- a/virt/libvirt/config.py 
+++ b/virt/libvirt/config.py 
@@ -950,6 +950,23 @@ class LibvirtConfigGuestVideo(LibvirtConfigGuestDevice): 
return dev 
+class LibvirtConfigGuestSound(LibvirtConfigGuestDevice): # Y.Kawada 
+ 
+ def __init__(self, **kwargs): 
+ super(LibvirtConfigGuestSound, self).__init__(root_name="sound", 
+ **kwargs) 
+ # pcspk PC speaker 
+ # hda Intel HD Audio 
+ # ac97 Intel 82801AA AC97 Audio 
+ self.type = "ich6" # for windows 2008 
+ # self.type = "ac97" # for Centos7 
+ 
+ def format_dom(self): 
+ dev = super(LibvirtConfigGuestSound, self).format_dom() 
+ dev.set("model", self.type) 
+ 
+ return dev 
+ 
class LibvirtConfigGuestController(LibvirtConfigGuestDevice): 
@@ -1053,6 +1070,27 @@ class LibvirtConfigGuestCharBase(LibvirtConfigGuestDevice): 
return dev 
+class LibvirtConfigGuestCharSpiceBase(LibvirtConfigGuestDevice): # Y.Kawada 
+ 
+ def __init__(self, **kwargs): 
+ super(LibvirtConfigGuestCharSpiceBase, self).__init__(**kwargs) 
+ 
+ self.type = "spicevmc" 
+ self.source_path = None 
+ 
+ def format_dom(self): 
+ dev = super(LibvirtConfigGuestCharSpiceBase, self).format_dom() 
+ 
+ dev.set("type", self.type) 
+ if self.type == "file": 
+ dev.append(etree.Element("source", path=self.source_path)) 
+ elif self.type == "unix": 
+ dev.append(etree.Element("source", mode="bind", 
+ path=self.source_path)) 
+ 
+ return dev 
+ 
+ 
class LibvirtConfigGuestChar(LibvirtConfigGuestCharBase): 
def __init__(self, **kwargs): 
@@ -1083,7 +1121,7 @@ class LibvirtConfigGuestConsole(LibvirtConfigGuestChar): 
**kwargs) 
-class LibvirtConfigGuestChannel(LibvirtConfigGuestCharBase): 
+class LibvirtConfigGuestChannel(LibvirtConfigGuestCharSpiceBase): # Y.Kawada 
def __init__(self, **kwargs): 
super(LibvirtConfigGuestChannel, self).__init__(root_name="channel", 
nova (cnode) source 修正1
Powered by OpenStack 
2014/10/2 
Y. Kawada 
10 
diff --git a/virt/libvirt/driver.py b/virt/libvirt/driver.py 
index 1e14892..c7f0e03 100644 
--- a/virt/libvirt/driver.py 
+++ b/virt/libvirt/driver.py 
@@ -3385,6 +3385,11 @@ class LibvirtDriver(driver.ComputeDriver): 
video.vram = video_ram 
guest.add_device(video) 
+ # Y.Kawada 
+ # VALID_SOUND_DEVICES = ("ac97", "hda", "pcspk", "ich6") 
+ sound = vconfig.LibvirtConfigGuestSound() 
+ guest.add_device(sound) 
+ 
# Qemu guest agent only support 'qemu' and 'kvm' hypervisor 
if CONF.libvirt.virt_type in ('qemu', 'kvm'): 
qga_enabled = False 
nova (cnode) source 修正2 
以上、御参考まで。

More Related Content

What's hot

Open stack networking vlan, gre
Open stack networking   vlan, greOpen stack networking   vlan, gre
Open stack networking vlan, greSim Janghoon
 
Openstack Summit Vancouver 2018 - Multicloud Networking
Openstack Summit Vancouver 2018 - Multicloud NetworkingOpenstack Summit Vancouver 2018 - Multicloud Networking
Openstack Summit Vancouver 2018 - Multicloud NetworkingShannon McFarland
 
Monitoring kubernetes with prometheus-operator
Monitoring kubernetes with prometheus-operatorMonitoring kubernetes with prometheus-operator
Monitoring kubernetes with prometheus-operatorLili Cosic
 
[242]open stack neutron dataplane 구현
[242]open stack neutron   dataplane 구현[242]open stack neutron   dataplane 구현
[242]open stack neutron dataplane 구현NAVER D2
 
Linux-HA Japanプロジェクトのこれまでとこれから
Linux-HA JapanプロジェクトのこれまでとこれからLinux-HA Japanプロジェクトのこれまでとこれから
Linux-HA Japanプロジェクトのこれまでとこれからksk_ha
 
OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!ksk_ha
 
Openv switchの使い方とか
Openv switchの使い方とかOpenv switchの使い方とか
Openv switchの使い方とかkotto_hihihi
 
ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観Yamato Tanaka
 
Packet flow on openstack
Packet flow on openstackPacket flow on openstack
Packet flow on openstackAchhar Kalia
 
[2018] 오픈스택 5년 운영의 경험
[2018] 오픈스택 5년 운영의 경험[2018] 오픈스택 5년 운영의 경험
[2018] 오픈스택 5년 운영의 경험NHN FORWARD
 
Virtualized network with openvswitch
Virtualized network with openvswitchVirtualized network with openvswitch
Virtualized network with openvswitchSim Janghoon
 
第20回 OpenStack勉強会 Neutron Deep Dive - DVR
第20回 OpenStack勉強会 Neutron Deep Dive - DVR第20回 OpenStack勉強会 Neutron Deep Dive - DVR
第20回 OpenStack勉強会 Neutron Deep Dive - DVRToru Makabe
 
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No1
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No1OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No1
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No1Etsuji Nakai
 
LinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking WalkthroughLinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking WalkthroughThomas Graf
 
[Container Plumbing Days 2023] Why was nerdctl made?
[Container Plumbing Days 2023] Why was nerdctl made?[Container Plumbing Days 2023] Why was nerdctl made?
[Container Plumbing Days 2023] Why was nerdctl made?Akihiro Suda
 
Routed Provider Networks on OpenStack
Routed Provider Networks on OpenStack Routed Provider Networks on OpenStack
Routed Provider Networks on OpenStack Romana Project
 
[오픈소스컨설팅]오픈스택에 대하여
[오픈소스컨설팅]오픈스택에 대하여[오픈소스컨설팅]오픈스택에 대하여
[오픈소스컨설팅]오픈스택에 대하여Ji-Woong Choi
 
OVN operationalization at scale at eBay
OVN operationalization at scale at eBayOVN operationalization at scale at eBay
OVN operationalization at scale at eBayAliasgar Ginwala
 
Introduction to OpenStack Trove & Database as a Service
Introduction to OpenStack Trove & Database as a ServiceIntroduction to OpenStack Trove & Database as a Service
Introduction to OpenStack Trove & Database as a ServiceTesora
 

What's hot (20)

Open stack networking vlan, gre
Open stack networking   vlan, greOpen stack networking   vlan, gre
Open stack networking vlan, gre
 
Openstack Summit Vancouver 2018 - Multicloud Networking
Openstack Summit Vancouver 2018 - Multicloud NetworkingOpenstack Summit Vancouver 2018 - Multicloud Networking
Openstack Summit Vancouver 2018 - Multicloud Networking
 
Monitoring kubernetes with prometheus-operator
Monitoring kubernetes with prometheus-operatorMonitoring kubernetes with prometheus-operator
Monitoring kubernetes with prometheus-operator
 
[242]open stack neutron dataplane 구현
[242]open stack neutron   dataplane 구현[242]open stack neutron   dataplane 구현
[242]open stack neutron dataplane 구현
 
Linux-HA Japanプロジェクトのこれまでとこれから
Linux-HA JapanプロジェクトのこれまでとこれからLinux-HA Japanプロジェクトのこれまでとこれから
Linux-HA Japanプロジェクトのこれまでとこれから
 
OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!OpenStackでも重要な役割を果たすPacemakerを知ろう!
OpenStackでも重要な役割を果たすPacemakerを知ろう!
 
Openv switchの使い方とか
Openv switchの使い方とかOpenv switchの使い方とか
Openv switchの使い方とか
 
ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観
 
Packet flow on openstack
Packet flow on openstackPacket flow on openstack
Packet flow on openstack
 
[2018] 오픈스택 5년 운영의 경험
[2018] 오픈스택 5년 운영의 경험[2018] 오픈스택 5년 운영의 경험
[2018] 오픈스택 5년 운영의 경험
 
Virtualized network with openvswitch
Virtualized network with openvswitchVirtualized network with openvswitch
Virtualized network with openvswitch
 
VPNaaS in Neutron
VPNaaS in NeutronVPNaaS in Neutron
VPNaaS in Neutron
 
第20回 OpenStack勉強会 Neutron Deep Dive - DVR
第20回 OpenStack勉強会 Neutron Deep Dive - DVR第20回 OpenStack勉強会 Neutron Deep Dive - DVR
第20回 OpenStack勉強会 Neutron Deep Dive - DVR
 
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No1
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No1OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No1
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:講義No1
 
LinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking WalkthroughLinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking Walkthrough
 
[Container Plumbing Days 2023] Why was nerdctl made?
[Container Plumbing Days 2023] Why was nerdctl made?[Container Plumbing Days 2023] Why was nerdctl made?
[Container Plumbing Days 2023] Why was nerdctl made?
 
Routed Provider Networks on OpenStack
Routed Provider Networks on OpenStack Routed Provider Networks on OpenStack
Routed Provider Networks on OpenStack
 
[오픈소스컨설팅]오픈스택에 대하여
[오픈소스컨설팅]오픈스택에 대하여[오픈소스컨설팅]오픈스택에 대하여
[오픈소스컨설팅]오픈스택에 대하여
 
OVN operationalization at scale at eBay
OVN operationalization at scale at eBayOVN operationalization at scale at eBay
OVN operationalization at scale at eBay
 
Introduction to OpenStack Trove & Database as a Service
Introduction to OpenStack Trove & Database as a ServiceIntroduction to OpenStack Trove & Database as a Service
Introduction to OpenStack Trove & Database as a Service
 

Viewers also liked

Cloud Based VDI with OpenStack, by Shifen Yang
Cloud Based VDI with OpenStack, by Shifen YangCloud Based VDI with OpenStack, by Shifen Yang
Cloud Based VDI with OpenStack, by Shifen YangHui Cheng
 
Linux VDI with OpenStack – How to Deliver Linux Virtual Desktops on Demand
Linux VDI with OpenStack – How to Deliver Linux Virtual Desktops on DemandLinux VDI with OpenStack – How to Deliver Linux Virtual Desktops on Demand
Linux VDI with OpenStack – How to Deliver Linux Virtual Desktops on DemandLeostream
 
Configuring OpenStack to Use the Xen Project Hypervisor
Configuring OpenStack to Use the Xen Project HypervisorConfiguring OpenStack to Use the Xen Project Hypervisor
Configuring OpenStack to Use the Xen Project HypervisorThe Linux Foundation
 
[OpenStack Day in Korea 2015] Track 1-4 - VDI OpenStack? It Works!!!
[OpenStack Day in Korea 2015] Track 1-4 - VDI OpenStack? It Works!!![OpenStack Day in Korea 2015] Track 1-4 - VDI OpenStack? It Works!!!
[OpenStack Day in Korea 2015] Track 1-4 - VDI OpenStack? It Works!!!OpenStack Korea Community
 
Leostream Webinar - OpenStack VDI and DaaS
Leostream Webinar - OpenStack VDI and DaaSLeostream Webinar - OpenStack VDI and DaaS
Leostream Webinar - OpenStack VDI and DaaSLeostream
 
OpenStack VDI and DaaS with Leostream and the Teradici Pervasive Cloud Comput...
OpenStack VDI and DaaS with Leostream and the Teradici Pervasive Cloud Comput...OpenStack VDI and DaaS with Leostream and the Teradici Pervasive Cloud Comput...
OpenStack VDI and DaaS with Leostream and the Teradici Pervasive Cloud Comput...Leostream
 
neutron_icehouse_update
neutron_icehouse_updateneutron_icehouse_update
neutron_icehouse_updateAkihiro Motoki
 
GPU Accelerated Virtual Desktop Infrastructure (VDI) on OpenStack
GPU Accelerated Virtual Desktop Infrastructure (VDI) on OpenStackGPU Accelerated Virtual Desktop Infrastructure (VDI) on OpenStack
GPU Accelerated Virtual Desktop Infrastructure (VDI) on OpenStackBrian Schott
 
[OpenStack Days Korea 2016] Track3 - VDI on OpenStack with LeoStream Connecti...
[OpenStack Days Korea 2016] Track3 - VDI on OpenStack with LeoStream Connecti...[OpenStack Days Korea 2016] Track3 - VDI on OpenStack with LeoStream Connecti...
[OpenStack Days Korea 2016] Track3 - VDI on OpenStack with LeoStream Connecti...OpenStack Korea Community
 

Viewers also liked (9)

Cloud Based VDI with OpenStack, by Shifen Yang
Cloud Based VDI with OpenStack, by Shifen YangCloud Based VDI with OpenStack, by Shifen Yang
Cloud Based VDI with OpenStack, by Shifen Yang
 
Linux VDI with OpenStack – How to Deliver Linux Virtual Desktops on Demand
Linux VDI with OpenStack – How to Deliver Linux Virtual Desktops on DemandLinux VDI with OpenStack – How to Deliver Linux Virtual Desktops on Demand
Linux VDI with OpenStack – How to Deliver Linux Virtual Desktops on Demand
 
Configuring OpenStack to Use the Xen Project Hypervisor
Configuring OpenStack to Use the Xen Project HypervisorConfiguring OpenStack to Use the Xen Project Hypervisor
Configuring OpenStack to Use the Xen Project Hypervisor
 
[OpenStack Day in Korea 2015] Track 1-4 - VDI OpenStack? It Works!!!
[OpenStack Day in Korea 2015] Track 1-4 - VDI OpenStack? It Works!!![OpenStack Day in Korea 2015] Track 1-4 - VDI OpenStack? It Works!!!
[OpenStack Day in Korea 2015] Track 1-4 - VDI OpenStack? It Works!!!
 
Leostream Webinar - OpenStack VDI and DaaS
Leostream Webinar - OpenStack VDI and DaaSLeostream Webinar - OpenStack VDI and DaaS
Leostream Webinar - OpenStack VDI and DaaS
 
OpenStack VDI and DaaS with Leostream and the Teradici Pervasive Cloud Comput...
OpenStack VDI and DaaS with Leostream and the Teradici Pervasive Cloud Comput...OpenStack VDI and DaaS with Leostream and the Teradici Pervasive Cloud Comput...
OpenStack VDI and DaaS with Leostream and the Teradici Pervasive Cloud Comput...
 
neutron_icehouse_update
neutron_icehouse_updateneutron_icehouse_update
neutron_icehouse_update
 
GPU Accelerated Virtual Desktop Infrastructure (VDI) on OpenStack
GPU Accelerated Virtual Desktop Infrastructure (VDI) on OpenStackGPU Accelerated Virtual Desktop Infrastructure (VDI) on OpenStack
GPU Accelerated Virtual Desktop Infrastructure (VDI) on OpenStack
 
[OpenStack Days Korea 2016] Track3 - VDI on OpenStack with LeoStream Connecti...
[OpenStack Days Korea 2016] Track3 - VDI on OpenStack with LeoStream Connecti...[OpenStack Days Korea 2016] Track3 - VDI on OpenStack with LeoStream Connecti...
[OpenStack Days Korea 2016] Track3 - VDI on OpenStack with LeoStream Connecti...
 

Similar to Openstack SPICE console (icehouse) verification

Cloudstack user group meeting in osaka
Cloudstack user group meeting in osakaCloudstack user group meeting in osaka
Cloudstack user group meeting in osakaNaotaka Jay HOTTA
 
OpenStack Liberty をインストールしてみた
OpenStack Liberty をインストールしてみたOpenStack Liberty をインストールしてみた
OpenStack Liberty をインストールしてみたTakashi Umeno
 
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)Daisuke Ikeda
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略Hiroshi SHIBATA
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefnpsg
 
Server side Swift & Photo Booth
Server side Swift & Photo Booth Server side Swift & Photo Booth
Server side Swift & Photo Booth LINE Corporation
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門VirtualTech Japan Inc.
 
Apache cloudstack4.0インストール
Apache cloudstack4.0インストールApache cloudstack4.0インストール
Apache cloudstack4.0インストールYasuhiro Arai
 
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますinfinite_loop
 
サーバー設定自動化は経営課題
サーバー設定自動化は経営課題 サーバー設定自動化は経営課題
サーバー設定自動化は経営課題 Maho Takara
 
Ansibleで始めるinfraTDD(初級編)
Ansibleで始めるinfraTDD(初級編)Ansibleで始めるinfraTDD(初級編)
Ansibleで始めるinfraTDD(初級編)佐久本正太
 
Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)
Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)
Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)Takamasa Maejima
 
OpenStack base public cloud service by GMO Internet Inc., at 2013/12/12 Okin...
OpenStack base public cloud service by GMO Internet Inc.,  at 2013/12/12 Okin...OpenStack base public cloud service by GMO Internet Inc.,  at 2013/12/12 Okin...
OpenStack base public cloud service by GMO Internet Inc., at 2013/12/12 Okin...Naoto Gohko
 
Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)Yasuhiro Arai
 
Hive undocumented feature
Hive undocumented featureHive undocumented feature
Hive undocumented featuretamtam180
 

Similar to Openstack SPICE console (icehouse) verification (20)

Cloudstack user group meeting in osaka
Cloudstack user group meeting in osakaCloudstack user group meeting in osaka
Cloudstack user group meeting in osaka
 
OpenStack Liberty をインストールしてみた
OpenStack Liberty をインストールしてみたOpenStack Liberty をインストールしてみた
OpenStack Liberty をインストールしてみた
 
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
 
Hadoop on LXC
Hadoop on LXCHadoop on LXC
Hadoop on LXC
 
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
 
Hbstudy41 auto scaling
Hbstudy41 auto scalingHbstudy41 auto scaling
Hbstudy41 auto scaling
 
Server side Swift & Photo Booth
Server side Swift & Photo Booth Server side Swift & Photo Booth
Server side Swift & Photo Booth
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門
 
Apache cloudstack4.0インストール
Apache cloudstack4.0インストールApache cloudstack4.0インストール
Apache cloudstack4.0インストール
 
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せます
 
サーバー設定自動化は経営課題
サーバー設定自動化は経営課題 サーバー設定自動化は経営課題
サーバー設定自動化は経営課題
 
Ansibleで始めるinfraTDD(初級編)
Ansibleで始めるinfraTDD(初級編)Ansibleで始めるinfraTDD(初級編)
Ansibleで始めるinfraTDD(初級編)
 
Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)
Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)
Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)
 
Ansible handson
Ansible handsonAnsible handson
Ansible handson
 
No SSH (@nojima; KMC関東例会)
No SSH (@nojima; KMC関東例会)No SSH (@nojima; KMC関東例会)
No SSH (@nojima; KMC関東例会)
 
OpenStack base public cloud service by GMO Internet Inc., at 2013/12/12 Okin...
OpenStack base public cloud service by GMO Internet Inc.,  at 2013/12/12 Okin...OpenStack base public cloud service by GMO Internet Inc.,  at 2013/12/12 Okin...
OpenStack base public cloud service by GMO Internet Inc., at 2013/12/12 Okin...
 
Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)
 
Hive undocumented feature
Hive undocumented featureHive undocumented feature
Hive undocumented feature
 
Tottoruby 20110903
Tottoruby 20110903Tottoruby 20110903
Tottoruby 20110903
 

Recently uploaded

エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料Toru Miyahara
 
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料Toru Miyahara
 
【登壇資料】スタートアップCTO経験からキャリアについて再考する CTO・VPoEに聞く by DIGGLE CTO 水上
【登壇資料】スタートアップCTO経験からキャリアについて再考する  CTO・VPoEに聞く by DIGGLE CTO 水上【登壇資料】スタートアップCTO経験からキャリアについて再考する  CTO・VPoEに聞く by DIGGLE CTO 水上
【登壇資料】スタートアップCTO経験からキャリアについて再考する CTO・VPoEに聞く by DIGGLE CTO 水上mizukami4
 
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介miyp
 
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例Kurata Takeshi
 
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHub
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHubCompute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHub
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHubK Kinzal
 
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋  セミナー資料今さら聞けない人のためのDevOps超入門 OSC2024名古屋  セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料Toru Miyahara
 
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題についてMasatsugu Matsushita
 

Recently uploaded (8)

エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
エンジニアのセルフブランディングと技術情報発信の重要性 テクニカルライターになろう 講演資料
 
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
Linuxサーバー構築 学習のポイントと環境構築 OSC2024名古屋 セミナー資料
 
【登壇資料】スタートアップCTO経験からキャリアについて再考する CTO・VPoEに聞く by DIGGLE CTO 水上
【登壇資料】スタートアップCTO経験からキャリアについて再考する  CTO・VPoEに聞く by DIGGLE CTO 水上【登壇資料】スタートアップCTO経験からキャリアについて再考する  CTO・VPoEに聞く by DIGGLE CTO 水上
【登壇資料】スタートアップCTO経験からキャリアについて再考する CTO・VPoEに聞く by DIGGLE CTO 水上
 
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
ビジュアルプログラミングIotLT17-オープンソース化されたビジュアルプログラミング環境Noodlの紹介
 
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
人的資本経営のための地理情報インテリジェンス 作業パターン分析と心身状態把握に関する実証事例
 
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHub
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHubCompute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHub
Compute Units/Budget最適化 - Solana Developer Hub Online 6 #SolDevHub
 
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋  セミナー資料今さら聞けない人のためのDevOps超入門 OSC2024名古屋  セミナー資料
今さら聞けない人のためのDevOps超入門 OSC2024名古屋 セミナー資料
 
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
本の感想共有会「データモデリングでドメインを駆動する」本が突きつける我々の課題について
 

Openstack SPICE console (icehouse) verification

  • 1. Powered by OpenStack GMOインターネット株式会社 システム本部 第2サービス開発部 河田 幸博 Openstack SPICE console の検証(icehouse)
  • 2. Powered by OpenStack •背景 –VNC(RFB )consoleはGMOのサービスにも使用しているが、spiceは試したことがない。 •目的 –どんなものか動かしてみる、ポイントは •Guest OS とClient間でのテキストのコピーペースト機能 •Guest OS 上のAudio device 動作 •VNCとの違いやメリット・デメリット •結論 –Horizonも対応しているがwebで操作させるconsoleとしての実装はwebproxy経由となる ので期待するコピーペースト機能やaudio機能は動作せず、VNC からみてメリットは全く ない。conoHa web console の実装の方が優れている。 –spice-html5 (Javascript -webproxy arbiter)は開発途上の感あり、keymapはusしか対応し ていない。Ctrl-Alt-Del を送れないのでwindowsにログイン出来ないとか・・・ –Spice client にて直接接続する場合には、テキストのコピーペースト、audioの再生とかは 実際に動作する。まぁ面白い。 –nova(cnode)にspiceの実装は存在するが、device config(xml)の設定がないので実際に 試すには、少々修正(後述)が必要となる。 –nova-api やHorizonは修正する必要がなく、vnc かspice か動いている方へ接続する。 Y. Kawada 2014/10/2 2
  • 3. Powered by OpenStack 2014/10/2 Y. Kawada 3 •結果 –Spice client から直接接続すれば、テキストのコピーペーストも可能 –同様に audioデバイスも動作可能。Videoとかの音声が再生されます。 •考察 –VNC or SPICE を使用するかは instance 毎に設定がしたい。 •instance_metadata とかに console device の設定やkeymap の設定を入れて、それ が反映されるようにするのが良いのだと思う。(conoHaではkeymap やvirtio on/off 等の設定は独自に組み込んでいる。) •現状では設定が、host(cnode)のnova.confに書かれる。 –Guest OS側では、spice-vdagent + vdagentd が動いている必要がある。これがcopy/paste などの通信を行います。
  • 4. Powered by OpenStack •Guest OS –CentOS 7 install •端末モードでは意味がないのでgnome環境等のインストールが必要 –Windows 2008 server •conoHaで提供しているwindows osを使用した •http://www.spice-space.org/download/windows/spice-guest-tools/spice-guest-tools-0.74.exe これをインストールすればよい •Spice client (windows) –http://virt-manager.org/download/sources/virt-viewer/virt-viewer-x64-1.0.msi これを使用した 2014/10/2 Y. Kawada 4 # yum install spice-vdagent # cd /etc/systemd/system # cp ./spice-vdagentd.target.wants/spice-vdagentd.service ./graphical.target.wants # systemctl enable spice-vdagentd.service
  • 5. Powered by OpenStack 2014/10/2 Y. Kawada 5 horizon -> CentOS 7 Spice client -> window 2008 server サンプル
  • 6. Powered by OpenStack •nova –nova-api server にwebproxy も置く 2014/10/2 Y. Kawada 6 [root@ih-api-p1]# cat /usr/bin/nova-spicehtml5proxy #!/usr/bin/python # PBR Generated from u'console_scripts' import sys from nova.cmd.spicehtml5proxy import main if __name__ == "__main__": sys.exit(main()) [root@ih-api-p1 ]# cd /usr/share/ [root@ih-api-p1 ]# git clone git://anongit.freedesktop.org/spice/spice-html5 ./spice-html5 [root@ih-api-p1 ]# cat /etc/httpd/conf.d/spice.conf # # spice-html5 is a Javascript SPICE client # Alias /spice /usr/share/spice-html5 <Directory /usr/share/spice-html5> # This page is broadly available, tune here to make it more restricted. Require all granted DirectoryIndex spice.html </Directory> [root@ih-api-p1 ]# cat /usr/lib/systemd/system/openstack-nova-spicehtml5proxy.service [Unit] Description=OpenStack Nova Spice HTML5 Proxy Server After=syslog.target network.target [Service] Type=simple User=nova ExecStart=/usr/bin/nova-spicehtml5proxy [Install] WantedBy=multi-user.target [root@ih-api-p1 ]# systemctl start openstack-nova-spicehtml5proxy.service
  • 7. Powered by OpenStack •nova (api) –/etc/nova/nova.conf Spice に関係のある箇所だけ 2014/10/2 Y. Kawada 7 # # Options defined in nova.cmd.spicehtml5proxy # # Host on which to listen for incoming requests (string value) spicehtml5proxy_host=0.0.0.0 # Port on which to listen for incoming requests (integer # value) spicehtml5proxy_port=6082 [spice] # # Options defined in nova.spice # html5proxy_base_url=http://xxx.xxx.xxx.xxx:6082/spice_auto.html # nova-api(proxy) のアドレス # IP address on which instance spice server should listen # (string value) server_listen=0.0.0.0 # Enable spice related features (boolean value) enabled=True # Enable spice guest agent support (boolean value) agent_enabled=true
  • 8. Powered by OpenStack •nova (cnode) –/etc/nova/nova.conf Spice に関係のある箇所だけ 2014/10/2 Y. Kawada 8 [DEFAULT] # Enable VNC related features (boolean value) vnc_enabled=False [spice] # # Options defined in nova.spice # html5proxy_base_url=http://xxx.xxx.xxx.xxx:6082/spice_auto.html # nova-api(proxy) のアドレス # IP address on which instance spice server should listen # (string value) server_listen=0.0.0.0 # The address to which proxy clients (like nova- # spicehtml5proxy) should connect (string value) server_proxyclient_address=10.0.0.22 # cnode (host)のアドレス # Enable spice related features (boolean value) enabled=True # Enable spice guest agent support (boolean value) agent_enabled=true
  • 9. Powered by OpenStack 2014/10/2 Y. Kawada 9 diff --git a/virt/libvirt/config.py b/virt/libvirt/config.py index a931b57..e2ac9ea 100644 --- a/virt/libvirt/config.py +++ b/virt/libvirt/config.py @@ -950,6 +950,23 @@ class LibvirtConfigGuestVideo(LibvirtConfigGuestDevice): return dev +class LibvirtConfigGuestSound(LibvirtConfigGuestDevice): # Y.Kawada + + def __init__(self, **kwargs): + super(LibvirtConfigGuestSound, self).__init__(root_name="sound", + **kwargs) + # pcspk PC speaker + # hda Intel HD Audio + # ac97 Intel 82801AA AC97 Audio + self.type = "ich6" # for windows 2008 + # self.type = "ac97" # for Centos7 + + def format_dom(self): + dev = super(LibvirtConfigGuestSound, self).format_dom() + dev.set("model", self.type) + + return dev + class LibvirtConfigGuestController(LibvirtConfigGuestDevice): @@ -1053,6 +1070,27 @@ class LibvirtConfigGuestCharBase(LibvirtConfigGuestDevice): return dev +class LibvirtConfigGuestCharSpiceBase(LibvirtConfigGuestDevice): # Y.Kawada + + def __init__(self, **kwargs): + super(LibvirtConfigGuestCharSpiceBase, self).__init__(**kwargs) + + self.type = "spicevmc" + self.source_path = None + + def format_dom(self): + dev = super(LibvirtConfigGuestCharSpiceBase, self).format_dom() + + dev.set("type", self.type) + if self.type == "file": + dev.append(etree.Element("source", path=self.source_path)) + elif self.type == "unix": + dev.append(etree.Element("source", mode="bind", + path=self.source_path)) + + return dev + + class LibvirtConfigGuestChar(LibvirtConfigGuestCharBase): def __init__(self, **kwargs): @@ -1083,7 +1121,7 @@ class LibvirtConfigGuestConsole(LibvirtConfigGuestChar): **kwargs) -class LibvirtConfigGuestChannel(LibvirtConfigGuestCharBase): +class LibvirtConfigGuestChannel(LibvirtConfigGuestCharSpiceBase): # Y.Kawada def __init__(self, **kwargs): super(LibvirtConfigGuestChannel, self).__init__(root_name="channel", nova (cnode) source 修正1
  • 10. Powered by OpenStack 2014/10/2 Y. Kawada 10 diff --git a/virt/libvirt/driver.py b/virt/libvirt/driver.py index 1e14892..c7f0e03 100644 --- a/virt/libvirt/driver.py +++ b/virt/libvirt/driver.py @@ -3385,6 +3385,11 @@ class LibvirtDriver(driver.ComputeDriver): video.vram = video_ram guest.add_device(video) + # Y.Kawada + # VALID_SOUND_DEVICES = ("ac97", "hda", "pcspk", "ich6") + sound = vconfig.LibvirtConfigGuestSound() + guest.add_device(sound) + # Qemu guest agent only support 'qemu' and 'kvm' hypervisor if CONF.libvirt.virt_type in ('qemu', 'kvm'): qga_enabled = False nova (cnode) source 修正2 以上、御参考まで。