############################# # # Instanciate kvm # ############################# [buildout] parts = request-slave-frontend certificate-authority kvm-promise novnc-promise publish-kvm-connection-information eggs-directory = ${buildout:eggs-directory} develop-eggs-directory = ${buildout:develop-eggs-directory} offline = true [rootdirectory] recipe = slapos.cookbook:mkdirectory etc = $${buildout:directory}/etc bin = $${buildout:directory}/bin srv = $${buildout:directory}/srv var = $${buildout:directory}/var [basedirectory] recipe = slapos.cookbook:mkdirectory services = $${rootdirectory:etc}/run promises = $${rootdirectory:etc}/promise novnc-conf = $${rootdirectory:etc}/novnc run = $${rootdirectory:var}/run ca-dir = $${rootdirectory:srv}/ssl [create-mac] recipe = slapos.cookbook:generate.mac [kvm-instance] recipe = slapos.cookbook:kvm vnc-ip = $${slap-network-information:local-ipv4} vnc-port = 5901 nbd-ip = $${slap-parameter:nbd_ip} nbd-port = $${slap-parameter:nbd_port} tap = $${slap-network-information:network-interface} disk-path = $${rootdirectory:srv}/virtual.qcow2 disk-size = 10 socket-path = $${rootdirectory:var}/qmp_socket pid-path = $${basedirectory:run}/pid_file smp-count = 1 ram-size = 1024 mac-address = $${create-mac:mac-address} runner-path = $${basedirectory:services}/kvm controller-path = $${basedirectory:services}/kvm_controller shell-path = ${dash:location}/bin/dash qemu-path = ${kvm:location}/bin/qemu-system-x86_64 qemu-img-path = ${kvm:location}/bin/qemu-img [kvm-promise] recipe = slapos.cookbook:check_port_listening path = $${basedirectory:promises}/vnc_promise hostname = $${kvm-instance:vnc-ip} port = $${kvm-instance:vnc-port} [novnc-instance] recipe = slapos.cookbook:novnc 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} [certificate-authority] recipe = slapos.cookbook:certificate_authority openssl-binary = ${openssl:location}/bin/openssl ca-dir = $${basedirectory:ca-dir} requests-directory = $${cadirectory:requests} wrapper = $${basedirectory:services}/certificate_authority ca-private = $${cadirectory:private} ca-certs = $${cadirectory:certs} ca-newcerts = $${cadirectory:newcerts} ca-crl = $${cadirectory:crl} [cadirectory] recipe = slapos.cookbook:mkdirectory requests = $${basedirectory:ca-dir}/requests/ private = $${basedirectory:ca-dir}/private/ certs = $${basedirectory:ca-dir}/certs/ newcerts = $${basedirectory:ca-dir}/newcerts/ crl = $${basedirectory:ca-dir}/crl/ [ca-novnc] <= certificate-authority recipe = slapos.cookbook:certificate_authority.request key-file = $${basedirectory:novnc-conf}/novnc.key cert-file = $${basedirectory:novnc-conf}/novnc.crt executable = $${rootdirectory:bin}/novnc wrapper = $${basedirectory:services}/websockify [novnc-promise] recipe = slapos.cookbook:check_port_listening path = $${basedirectory:promises}/novnc_promise hostname = $${novnc-instance:ip} port = $${novnc-instance:port} [kvm-monitor] recipe = slapos.cookbook:generic.slapmonitor db-path = $${rootdirectory:srv}/slapmonitor_database [request-common] recipe = slapos.cookbook:request software-url = $${slap-connection:software-release-url} sla = computer_guid sla-computer_guid = $${slap-connection:computer-id} 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} [request-slave-frontend] <=request-common name = SlaveFrontend software-type = frontend slave = true config = host port config-host = $${novnc-instance:ip} config-port = $${novnc-instance:port} return = url resource port domainname [publish-kvm-connection-information] recipe = slapos.cookbook:publish backend_url = https://[$${novnc-instance:ip}]:$${novnc-instance:port}/vnc_auto.html?host=[$${novnc-instance:ip}]&port=$${novnc-instance:port}&encrypt=1 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} password = $${kvm-instance:passwd}