instance-runner.cfg 6.14 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
partition-amount = $${slap-parameter:instance-amount}
95 96
cloud9-url = $${cloud9:access-url}
wrapper = $${basedirectory:services}/slaprunner
97
debug = False
98

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

105 106 107 108 109 110 111 112 113
[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}
114
wrapper = $${rootdirectory:bin}/runTestSuite
115 116
etc_dir = $${basedirectory:test}

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 149
[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}


150 151 152
# Request frontend
[request-frontend]
<= slap-connection
153
recipe = slapos.cookbook:requestoptional
154 155 156 157 158 159 160 161 162
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


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

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

# Deploy promises scripts
174 175 176 177 178
[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
179

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

187 188 189
[cloud9-promise]
recipe = slapos.cookbook:check_url_available
path = $${basedirectory:promises}/cloud9
190
url = http://$${cloud9:ip}:$${cloud9:port}
191 192 193 194 195 196 197 198 199 200 201 202 203
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 =
204
# Default value of instances number in slaprunner
205
instance-amount = 10