############################# # # Instanciate kvm # ############################# [buildout] parts = certificate-authority kvm-instance kvm-promise tunnel-ipv6-keystone tunnel-ipv6-keystone-admin tunnel-ipv6-keystone-compute tunnel-ipv6-novnc tunnel-ipv6-glance tunnel-ipv6-s3api tunnel-ipv6-spice tunnel-ipv6-novadb tunnel-ipv6-rabbit tunnel-ipv6-ec2 nova-configure websockify-sighandler novnc-promise publish-kvm-connection-information eggs-directory = ${buildout:eggs-directory} develop-eggs-directory = ${buildout:develop-eggs-directory} offline = true [directory] recipe = slapos.cookbook:mkdirectory etc = $${buildout:directory}/etc bin = $${buildout:directory}/bin srv = $${buildout:directory}/srv var = $${buildout:directory}/var scripts = $${:etc}/run services = $${:etc}/service promises = $${:etc}/promise novnc-conf = $${:etc}/novnc run = $${:var}/run ca-dir = $${:srv}/ssl nova = $${:bin}/nova log = $${:var}/log [create-mac] recipe = slapos.cookbook:generate.mac storage-path = $${directory:srv}/mac [gen-passwd] recipe = slapos.cookbook:generate.password storage-path = $${directory:srv}/passwd bytes = 8 [kvm-instance] recipe = slapos.cookbook:kvm vnc-passwd = $${gen-passwd:passwd} ipv4 = $${slap-network-information:local-ipv4} ipv6 = $${slap-network-information:global-ipv6} vnc-ip = $${:ipv4} vnc-port = 5901 # XXX-Cedric: should be named "default-cdrom-iso" default-disk-image = ${debian-amd64-netinst.iso:location}/${debian-amd64-netinst.iso:filename} nbd-host = $${slap-parameter:nbd-host} nbd-port = $${slap-parameter:nbd-port} nbd2-host = $${slap-parameter:nbd2-host} nbd2-port = $${slap-parameter:nbd2-port} tap-interface = $${slap-network-information:network-interface} disk-path = $${directory:srv}/virtual.qcow2 disk-size = $${slap-parameter:disk-size} disk-type = $${slap-parameter:disk-type} socket-path = $${directory:var}/qmp_socket pid-file-path = $${directory:run}/kvm_run.pid smp-count = $${slap-parameter:cpu-count} ram-size = $${slap-parameter:ram-size} mac-address = $${create-mac:mac-address} # XXX-Cedric: should be named runner-wrapper-path and controller-wrapper-path runner-path = $${directory:services}/kvm controller-path = $${directory:scripts}/kvm_controller use-tap = False nat-rules = 22 80 443 6tunnel-wrapper-path = $${directory:services}/6tunnel virtual-hard-drive-url = $${slap-parameter:virtual-hard-drive-url} virtual-hard-drive-md5sum = $${slap-parameter:virtual-hard-drive-md5sum} shell-path = ${dash:location}/bin/dash qemu-path = ${kvm:location}/bin/qemu-system-x86_64 qemu-img-path = ${kvm:location}/bin/qemu-img 6tunnel-path = ${6tunnel:location}/bin/6tunnel [kvm-promise] recipe = slapos.cookbook:check_port_listening path = $${directory:promises}/vnc_promise hostname = $${kvm-instance:vnc-ip} port = $${kvm-instance:vnc-port} [ssh-port-check] recipe = slapos.cookbook:check_port_listening path = $${directory:nova}/ssh_port_check hostname = $${tunnel-ipv6-ssh:ipv4} port = $${tunnel-ipv6-ssh:ipv4-port} [nova-conf] recipe = slapos.recipe.template url = ${compute-script:location}/${compute-script:filename} output = $${directory:nova}/nova_configure.sh mode = 0700 nova-url = https://github.com/openstack/nova.git slap-ipv4 = $${slap-network-information:local-ipv4} nova-passwd = $${slap-parameter:master-passwd} vnc-url = $${request-openstack-vnc-frontend:connection-url} nova-host = $${slap-parameter:host} [nova-conf-run] recipe = slapos.recipe.template url = ${compute-script-run:location}/${compute-script-run:filename} output = $${directory:nova}/nova_configure.py mode = 0700 host-ip = $${tunnel-ipv6-ssh:ipv6} ssh-port = $${tunnel-ipv6-ssh:ipv6-port} system-user = $${slap-parameter:system-user} system-passwd = $${slap-parameter:system-passwd} nova-configure = $${nova-conf:output} nova-result = $${directory:log} ssh-check-script = $${ssh-port-check:path} python_path = ${buildout:executable} eggs-dir = ${buildout:eggs-directory} [nova-configure] recipe = slapos.cookbook:wrapper command-line = $${nova-conf-run:output} wrapper-path = $${directory:scripts}/nova-configure ##########CONFIGURE TUNNELS########################## [tunnel-ipv6-base] recipe = slapos.cookbook:ipv6toipv4 ipv6 = $${slap-network-information:global-ipv6} ipv4 = $${slap-network-information:local-ipv4} shell-path = ${dash:location}/bin/dash 6tunnel-path = ${6tunnel:location}/bin/6tunnel [tunnel-ipv4-to6] recipe = slapos.cookbook:ipv4toipv6 ipv6 = $${slap-parameter:master-address} ipv4 = $${slap-network-information:local-ipv4} shell-path = ${dash:location}/bin/dash 6tunnel-path = ${6tunnel:location}/bin/6tunnel [tunnel-ipv6-ssh] ipv6-port = 10022 ipv4-port = 10022 ipv6 = $${slap-network-information:global-ipv6} ipv4 = $${slap-network-information:local-ipv4} #[tunnel-ipv6-ssh] #<= tunnel-ipv6-base #ipv6-port = 22222 #ipv4-port = 10022 #runner-path = $${directory:services}/6tunnel-ssh #[tunnel-ipv6-http] #<= tunnel-ipv6-base #ipv6-port = 80 #ipv4-port = 10080 #runner-path = $${directory:services}/6tunnel-http #[tunnel-ipv6-https] #<= tunnel-ipv6-base #ipv6-port = 443 #ipv4-port = 10443 #runner-path = $${directory:services}/6tunnel-https [tunnel-ipv6-keystone] <= tunnel-ipv4-to6 ipv6-port = 5000 ipv4-port = 5000 runner-path = $${directory:services}/6tunnel-keystone [tunnel-ipv6-keystone-admin] <= tunnel-ipv4-to6 ipv6-port = 35357 ipv4-port = 35357 runner-path = $${directory:services}/6tunnel-keystone-admin [tunnel-ipv6-keystone-compute] <= tunnel-ipv4-to6 ipv6-port = 8774 ipv4-port = 8774 runner-path = $${directory:services}/6tunnel-keystone-compute [tunnel-ipv6-novnc] <= tunnel-ipv6-base ipv6-port = 6080 ipv4-port = 6080 runner-path = $${directory:services}/6tunnel-novnc [tunnel-ipv6-glance] <= tunnel-ipv4-to6 ipv6-port = 9292 ipv4-port = 9292 runner-path = $${directory:services}/6tunnel-glance [tunnel-ipv6-spice] <= tunnel-ipv6-base ipv6-port = 6082 ipv4-port = 6082 runner-path = $${directory:services}/6tunnel-spice #I don't know if this is really usefull!! [tunnel-ipv6-s3api] <= tunnel-ipv4-to6 ipv6-port = 3333 ipv4-port = 3333 runner-path = $${directory:services}/6tunnel-s3api [tunnel-ipv6-ec2] <= tunnel-ipv4-to6 ipv6-port = 8773 ipv4-port = 8773 runner-path = $${directory:services}/6tunnel-ec2 [tunnel-ipv6-rabbit] <= tunnel-ipv4-to6 ipv6-port = 5672 ipv4-port = 5672 runner-path = $${directory:services}/6tunnel-rabbit [tunnel-ipv6-novadb] <= tunnel-ipv4-to6 ipv6-port = 3306 ipv4-port = 3306 runner-path = $${directory:services}/6tunnel-novadb #########INSTALL NOVNC FOR KVM IMAGE################ [novnc-instance] recipe = slapos.cookbook:novnc path = $${ca-novnc:executable} ip = $${slap-network-information:global-ipv6} port = 6090 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} [websockify-sighandler] recipe = slapos.cookbook:signalwrapper wrapper-path = $${directory:services}/websockify wrapped-path = $${novnc-instance:path} [certificate-authority] recipe = slapos.cookbook:certificate_authority openssl-binary = ${openssl:location}/bin/openssl ca-dir = $${directory:ca-dir} requests-directory = $${cadirectory:requests} wrapper = $${directory: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 = $${directory:ca-dir}/requests/ private = $${directory:ca-dir}/private/ certs = $${directory:ca-dir}/certs/ newcerts = $${directory:ca-dir}/newcerts/ crl = $${directory:ca-dir}/crl/ [ca-novnc] <= certificate-authority recipe = slapos.cookbook:certificate_authority.request key-file = $${directory:novnc-conf}/novnc.key cert-file = $${directory:novnc-conf}/novnc.crt executable = $${directory:bin}/novnc wrapper = $${directory:bin}/websockify [novnc-promise] recipe = slapos.cookbook:check_port_listening path = $${directory:promises}/novnc_promise hostname = $${novnc-instance:ip} port = $${novnc-instance:port} [kvm-monitor] recipe = slapos.cookbook:generic.slapmonitor db-path = $${directory:srv}/slapmonitor_database ##############REQUEST FRONTEND AND PUBLISH CONNEXION PARAMETERS############ [request-slave-frontend] recipe = slapos.cookbook:requestoptional software-url = $${slap-parameter:kvm-frontend-url} 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 = VNC Frontend software-type = $${slap-parameter:frontend-software-type} slave = true config = host port config-host = $${novnc-instance:ip} config-port = $${novnc-instance:port} return = url resource port domainname #sla = instance_guid #sla-instance_guid = $${slap-parameter:frontend-instance-guid} [request-openstack-vnc-frontend] recipe = slapos.cookbook:requestoptional software-url = $${slap-parameter:kvm-frontend-url} 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 = OpenStack VNC Frontend software-type = $${slap-parameter:frontend-software-type} slave = true config = host port config-host = $${slap-network-information:global-ipv6} config-port = $${tunnel-ipv6-novnc:ipv6-port} return = url resource port domainname sla = instance_guid sla-instance_guid = $${slap-parameter:frontend-instance-guid} [publish-kvm-connection-information] recipe = slapos.cookbook:publish vnc-backend-url = https://[$${novnc-instance:ip}]:$${novnc-instance:port}/vnc_auto.html?host=[$${novnc-instance:ip}]&port=$${novnc-instance:port}&encrypt=1&password=$${kvm-instance:vnc-passwd} vnc-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:vnc-passwd} ssh = ssh $${slap-parameter:system-user}@$${tunnel-ipv6-ssh:ipv6} -p $${tunnel-ipv6-ssh:ipv6-port} ssh-defaul-passwd = $${slap-parameter:system-passwd} local-ipv4 = $${slap-network-information:local-ipv4} [slap-parameter] # Default values if not specified #frontend-instance-guid = SOFTINST-81 frontend-software-type = frontend kvm-frontend-url = http://git.erp5.org/gitweb/slapos.git/blob_plain/refs/tags/slapos-0.92:/software/kvm/software.cfg frontend-instance-guid = ram-size = 2048 disk-size = 20 disk-type = virtio cpu-count = 4 nbd-port = 1024 nbd-host = 2001:470:1f14:169:dd6b:3f84:9205:c750 nbd2-port = 1024 nbd2-host = domain = master-address = 2001:470:1f14:169:dd6b:3f84:9205:cd50 master-passwd = openstack system-user = stack system-passwd = openstack #XXX- This host name should be changed as soon as possible, to avoid having two or more identical #compute host name on the same openstack-Manager node. host = nova.compute-$${slap-connection:computer-id} virtual-hard-drive-url = virtual-hard-drive-md5sum =