instance-kvm.cfg.in 5.56 KB
Newer Older
1 2 3 4 5 6 7 8
#############################
#
# Instanciate kvm
#
#############################
[buildout]
parts =
  certificate-authority
Romain Courteaud's avatar
Romain Courteaud committed
9 10
  publish-kvm-backend-connection-information
  publish-kvm-frontend-connection-information
11
  kvm-promise
12
  websockify-sighandler
13
  novnc-promise
14
  frontend-promise
15 16 17 18 19

eggs-directory = ${buildout:eggs-directory}
develop-eggs-directory = ${buildout:develop-eggs-directory}
offline = true

20
[directory]
21 22 23 24 25
recipe = slapos.cookbook:mkdirectory
etc = $${buildout:directory}/etc
bin = $${buildout:directory}/bin
srv = $${buildout:directory}/srv
var = $${buildout:directory}/var
26 27 28 29 30 31
scripts = $${:etc}/run
services = $${:etc}/service
promises = $${:etc}/promise
novnc-conf = $${:etc}/novnc
run = $${:var}/run
ca-dir = $${:srv}/ssl
32 33 34

[create-mac]
recipe = slapos.cookbook:generate.mac
35
storage-path = $${directory:srv}/mac
36

37 38
[gen-passwd]
recipe = slapos.cookbook:generate.password
39
storage-path = $${directory:srv}/passwd
40 41
bytes = 4

42
[kvm-instance]
43 44
# XXX-Cedric: change "KVM" recipe to simple "create wrappers". No need for this
# Specific code
45
recipe = slapos.cookbook:kvm
46 47
vnc-ip = $${slap-network-information:local-ipv4}
vnc-port = 5901
48
nbd-host = $${slap-parameter:nbd-host}
49
nbd-port = $${slap-parameter:nbd-port}
50 51
nbd2-host = $${slap-parameter:nbd2-host}
nbd2-port = $${slap-parameter:nbd2-port}
52
tap = $${slap-network-information:network-interface}
53
disk-path = $${directory:srv}/virtual.qcow2
54
disk-size = $${slap-parameter:disk-size}
55
disk-type = $${slap-parameter:disk-type}
56 57
socket-path = $${directory:var}/qmp_socket
pid-path = $${directory:run}/pid_file
58
smp-count = $${slap-parameter:cpu-count}
59
ram-size = $${slap-parameter:ram-size}
60
mac-address = $${create-mac:mac-address}
61 62
runner-path = $${directory:services}/kvm
controller-path = $${directory:scripts}/kvm_controller
63 64 65
shell-path = ${dash:location}/bin/dash
qemu-path = ${kvm:location}/bin/qemu-system-x86_64
qemu-img-path = ${kvm:location}/bin/qemu-img
66
passwd = $${gen-passwd:passwd}
67 68 69

[kvm-promise]
recipe = slapos.cookbook:check_port_listening
70
path = $${directory:promises}/vnc_promise
71 72 73
hostname = $${kvm-instance:vnc-ip}
port = $${kvm-instance:vnc-port}

74

75
[novnc-instance]
76
recipe = slapos.cookbook:novnc
77 78 79 80 81 82 83 84 85 86
path = $${ca-novnc:executable}
ip = $${slap-network-information:global-ipv6}
port = 6080
vnc-ip = $${kvm-instance:vnc-ip}
vnc-port = $${kvm-instance:vnc-port}
novnc-location = ${noVNC:location}
websockify-path = ${buildout:directory}/bin/websockify
ssl-key-path = $${ca-novnc:key-file}
ssl-cert-path = $${ca-novnc:cert-file}

87 88
[websockify-sighandler]
recipe = slapos.cookbook:signalwrapper
89
wrapper-path = $${directory:services}/websockify
90 91
wrapped-path = $${novnc-instance:path}

92 93 94
[certificate-authority]
recipe = slapos.cookbook:certificate_authority
openssl-binary = ${openssl:location}/bin/openssl
95
ca-dir = $${directory:ca-dir}
96
requests-directory = $${cadirectory:requests}
97
wrapper = $${directory:services}/certificate_authority
98 99 100 101 102 103 104
ca-private = $${cadirectory:private}
ca-certs = $${cadirectory:certs}
ca-newcerts = $${cadirectory:newcerts}
ca-crl = $${cadirectory:crl}

[cadirectory]
recipe = slapos.cookbook:mkdirectory
105 106 107 108 109
requests = $${directory:ca-dir}/requests/
private = $${directory:ca-dir}/private/
certs = $${directory:ca-dir}/certs/
newcerts = $${directory:ca-dir}/newcerts/
crl = $${directory:ca-dir}/crl/
110 111 112 113

[ca-novnc]
<= certificate-authority
recipe = slapos.cookbook:certificate_authority.request
114 115 116 117
key-file = $${directory:novnc-conf}/novnc.key
cert-file = $${directory:novnc-conf}/novnc.crt
executable = $${directory:bin}/novnc
wrapper = $${directory:bin}/websockify
118 119 120

[novnc-promise]
recipe = slapos.cookbook:check_port_listening
121
path = $${directory:promises}/novnc_promise
122 123 124
hostname = $${novnc-instance:ip}
port = $${novnc-instance:port}

125

126 127
[kvm-monitor]
recipe = slapos.cookbook:generic.slapmonitor
128
db-path = $${directory:srv}/slapmonitor_database
129

130 131

[request-slave-frontend]
132
recipe = slapos.cookbook:requestoptional
Romain Courteaud's avatar
Typo  
Romain Courteaud committed
133
software-url = $${slap-parameter:frontend-software-url}
134 135 136 137 138 139
server-url = $${slap-connection:server-url}
key-file = $${slap-connection:key-file}
cert-file = $${slap-connection:cert-file}
computer-id = $${slap-connection:computer-id}
partition-id = $${slap-connection:partition-id}
name = SlaveFrontend
Romain Courteaud's avatar
Typo  
Romain Courteaud committed
140
software-type = $${slap-parameter:frontend-software-type}
141
slave = true
142 143 144
config = host port
config-host = $${novnc-instance:ip}
config-port = $${novnc-instance:port}
145
return = url resource port domainname
146 147
sla = instance_guid
sla-instance_guid = $${slap-parameter:frontend-instance-guid}
148

Romain Courteaud's avatar
Romain Courteaud committed
149 150
[publish-kvm-backend-connection-information]
recipe = slapos.cookbook:publish
151
backend-url = https://[$${novnc-instance:ip}]:$${novnc-instance:port}/vnc_auto.html?host=[$${novnc-instance:ip}]&port=$${novnc-instance:port}&encrypt=1
Romain Courteaud's avatar
Romain Courteaud committed
152 153 154 155 156
password = $${kvm-instance:passwd}

[publish-kvm-frontend-connection-information]
<= publish-kvm-backend-connection-information
url = $${request-slave-frontend:connection-url}/vnc_auto.html?host=$${request-slave-frontend:connection-domainname}&port=$${request-slave-frontend:connection-port}&encrypt=1&path=$${request-slave-frontend:connection-resource}
157 158 159

[frontend-promise]
recipe = slapos.cookbook:check_url_available
160
path = $${directory:promises}/frontend_promise
Romain Courteaud's avatar
Romain Courteaud committed
161
url = $${publish-kvm-frontend-connection-information:url}
162
dash_path = ${dash:location}/bin/dash
Romain Courteaud's avatar
Romain Courteaud committed
163
curl_path = ${curl:location}/bin/curl
164 165 166 167 168 169

[slap-parameter]
# Default values if not specified
frontend-instance-guid = SOFTINST-11031
frontend-software-type = frontend
frontend-software-url = http://git.erp5.org/gitweb/slapos.git/blob_plain/refs/tags/slapos-0.92:/software/kvm/software.cfg
170 171

nbd-port = 1024
172
nbd-host = debian.nbd.vifib.net
173 174
nbd2-port = 1024
nbd2-host =
175 176 177

ram-size = 1024
disk-size = 10
178 179 180
disk-type = virtio

cpu-count = 1