instance-runner.cfg 6.03 KB
Newer Older
1 2
[buildout]
parts =
3
  cloud9
4
  slaprunner
5
  test-runner
6 7
  sshkeys-dropbear
  dropbear-server-add-authorized-key
8
  sshkeys-authority
9
  publish-connection-informations
10 11 12 13
  slaprunner-promise
  slaprunner-frontend-promise
  cloud9-promise
  dropbear-promise
14

15

16 17 18 19
eggs-directory = ${buildout:eggs-directory}
develop-eggs-directory = ${buildout:develop-eggs-directory}
offline = true

20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41

# Create all needed directories
[rootdirectory]
recipe = slapos.cookbook:mkdirectory
etc = $${buildout:directory}/etc/
var = $${buildout:directory}/var/
srv = $${buildout:directory}/srv/
bin = $${buildout:directory}/bin/

[directory]
recipe = slapos.cookbook:mkdirectory
sshkeys = $${rootdirectory:srv}/sshkeys
services = $${rootdirectory:etc}/run/
ssh = $${rootdirectory:etc}/ssh/

[basedirectory]
recipe = slapos.cookbook:mkdirectory
log = $${rootdirectory:var}/log/
services = $${rootdirectory:etc}/run/
run = $${rootdirectory:var}/run/
backup = $${rootdirectory:srv}/backup/
promises = $${rootdirectory:etc}/promise/
42
test = $${rootdirectory:etc}/test/
43 44 45 46

[runnerdirectory]
recipe = slapos.cookbook:mkdirectory
home = $${rootdirectory:srv}/runner/
47
test = $${rootdirectory:srv}/test/
48 49 50
project = $${:home}/project
software-root = $${:home}/software
instance-root = $${:home}/instance
51 52 53
project-test = $${:test}/project
software-test = $${:test}/software
instance-test = $${:test}/instance
54

55 56
#Create password recovery code for slaprunner
[recovery-code]
57
recipe = slapos.cookbook:generate.password
58
storage-path = $${rootdirectory:etc}/.rcode
59 60
bytes = 4

61 62 63 64
# Deploy cloud9 and slaprunner
[cloud9]
recipe = slapos.cookbook:cloud9
ip = $${slap-network-information:global-ipv6}
Jean-Baptiste Petre's avatar
Jean-Baptiste Petre committed
65
port = 30000
66 67 68
wrapper = $${basedirectory:services}/cloud9
working-directory = $${runnerdirectory:home}
git-binary = ${git:location}/bin/git
Cédric de Saint Martin's avatar
Cédric de Saint Martin committed
69
node-binary = ${nodejs:location}/bin/node
70
cloud9 = ${cloud9:executable}
71 72 73

[slaprunner]
recipe = slapos.cookbook:slaprunner
74 75 76 77 78
slaprunner = ${buildout:directory}/bin/slaprunner
slapgrid_sr = ${buildout:directory}/bin/slapgrid-sr
slapgrid_cp = ${buildout:directory}/bin/slapgrid-cp
slapproxy = ${buildout:directory}/bin/slapproxy
supervisor = ${buildout:directory}/bin/slapgrid-supervisorctl
79 80 81 82 83 84
git-binary = ${git:location}/bin/git
slapos.cfg = $${rootdirectory:etc}/slapos.cfg
working-directory = $${runnerdirectory:home}
project-directory = $${runnerdirectory:project}
software-directory = $${runnerdirectory:software-root}
instance-directory = $${runnerdirectory:instance-root}
85 86
etc_dir = $${rootdirectory:etc}
log_dir =  $${basedirectory:log}
87 88 89
ssh_client = $${sshkeys-dropbear:wrapper}
public_key = $${sshkeys-dropbear:public-key}
private_key = $${sshkeys-dropbear:private-key}
90 91
ipv4 = $${slap-network-information:local-ipv4}
ipv6 = $${slap-network-information:global-ipv6}
Jean-Baptiste Petre's avatar
Jean-Baptiste Petre committed
92 93
proxy_port = 50000
runner_port = 50000
94 95 96
partition-amount = 7
cloud9-url = $${cloud9:access-url}
wrapper = $${basedirectory:services}/slaprunner
97

98
# Deploy dropbear (minimalist ssh server)
99 100 101 102 103
[sshkeys-directory]
recipe = slapos.cookbook:mkdirectory
requests = $${directory:sshkeys}/requests/
keys = $${directory:sshkeys}/keys/

104 105 106 107 108 109 110 111 112 113 114 115
[test-runner]
<= slaprunner
recipe = slapos.cookbook:slaprunner.test
slaprunnertest = ${buildout:directory}/bin/slaprunnertest
slapos.cfg = $${rootdirectory:etc}/slapos-test.cfg
working-directory = $${runnerdirectory:test}
project-directory = $${runnerdirectory:project-test}
software-directory = $${runnerdirectory:software-test}
instance-directory = $${runnerdirectory:instance-test}
wrapper = $${rootdirectory:bin}/slaprunner-test
etc_dir = $${basedirectory:test}

116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
[sshkeys-authority]
recipe = slapos.cookbook:sshkeys_authority
request-directory = $${sshkeys-directory:requests}
keys-directory = $${sshkeys-directory:keys}
wrapper = $${basedirectory:services}/sshkeys_authority
keygen-binary = ${dropbear:location}/bin/dropbearkey

[dropbear-server]
recipe = slapos.cookbook:dropbear
host = $${slap-network-information:global-ipv6}
port = 2222
home = $${directory:ssh}
wrapper = $${rootdirectory:bin}/raw_sshd
shell = /bin/bash
rsa-keyfile = $${directory:ssh}/server_key.rsa
dropbear-binary = ${dropbear:location}/sbin/dropbear

[sshkeys-dropbear]
<= sshkeys-authority
recipe = slapos.cookbook:sshkeys_authority.request
name = dropbear
type = rsa
executable = $${dropbear-server:wrapper}
public-key = $${dropbear-server:rsa-keyfile}.pub
private-key = $${dropbear-server:rsa-keyfile}
wrapper = $${basedirectory:services}/sshd

[dropbear-server-add-authorized-key]
<= dropbear-server
recipe = slapos.cookbook:dropbear.add_authorized_key
key = $${slap-parameter:authorized-key}


149 150 151
# Request frontend
[request-frontend]
<= slap-connection
152
recipe = slapos.cookbook:requestoptional
153 154 155 156 157 158 159 160 161
name = Frontend
# XXX We have hardcoded SR URL here.
software-url = http://git.erp5.org/gitweb/slapos.git/blob_plain/HEAD:/software/apache-frontend/software.cfg
slave = true
config = url
config-url = $${slaprunner:access-url}
return = site_url


162 163 164
# Send informations to SlapOS Master
[publish-connection-informations]
recipe = slapos.cookbook:publish
165 166
backend_url = $${slaprunner:access-url}
url =  $${request-frontend:connection-site_url}
167 168
cloud9_url = $${cloud9:access-url}
ssh_command = ssh $${dropbear-server:host} -p $${dropbear-server:port}
169
password_recovery_code = $${recovery-code:passwd}
170

Jean-Baptiste Petre's avatar
Jean-Baptiste Petre committed
171 172

# Deploy promises scripts
173 174 175 176 177
[slaprunner-promise]
recipe = slapos.cookbook:check_port_listening
path = $${basedirectory:promises}/slaprunner
hostname = $${slaprunner:ipv6}
port = $${slaprunner:runner_port}
Jean-Baptiste Petre's avatar
Jean-Baptiste Petre committed
178

179
[slaprunner-frontend-promise]
Jean-Baptiste Petre's avatar
Jean-Baptiste Petre committed
180
recipe = slapos.cookbook:check_url_available
181
path = $${basedirectory:promises}/slaprunner_frontend
Jean-Baptiste Petre's avatar
Jean-Baptiste Petre committed
182 183 184 185
url = $${request-frontend:connection-site_url}
dash_path = ${dash:location}/bin/dash
curl_path = ${curl:location}/bin/curl

186 187 188
[cloud9-promise]
recipe = slapos.cookbook:check_url_available
path = $${basedirectory:promises}/cloud9
189
url = http://$${cloud9:ip}:$${cloud9:port}
190 191 192 193 194 195 196 197 198 199 200 201 202
dash_path = ${dash:location}/bin/dash
curl_path = ${curl:location}/bin/curl

[dropbear-promise]
recipe = slapos.cookbook:check_port_listening
path = $${basedirectory:promises}/dropbear
hostname = $${dropbear-server:host}
port = $${dropbear-server:port}


[slap-parameter]
# Default value if no ssh key is specified
authorized-key =