Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
slapos
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Romain Courteaud
slapos
Commits
a1f39999
Commit
a1f39999
authored
Jun 07, 2012
by
Cédric de Saint Martin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
slaprunner is now generic
parent
3f2d794b
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
126 additions
and
91 deletions
+126
-91
slapos/recipe/cloud9/__init__.py
slapos/recipe/cloud9/__init__.py
+8
-5
slapos/recipe/slaprunner/__init__.py
slapos/recipe/slaprunner/__init__.py
+51
-55
software/slaprunner/instance-runner.cfg
software/slaprunner/instance-runner.cfg
+66
-30
software/slaprunner/software.cfg
software/slaprunner/software.cfg
+1
-1
No files found.
slapos/recipe/cloud9/__init__.py
View file @
a1f39999
...
...
@@ -31,14 +31,15 @@ class Recipe(GenericBaseRecipe):
"""Deploy a fully operational cloud9 service."""
def
_options
(
self
,
options
):
self
.
ip
=
options
[
'ip
v6
'
].
strip
()
self
.
ip
=
options
[
'ip'
].
strip
()
self
.
port
=
options
[
'port'
].
strip
()
self
.
git
=
options
[
'git-binary'
].
strip
()
self
.
node_executable
=
options
[
'node-binary'
].
strip
()
self
.
cloud9
=
options
[
'cloud9'
].
strip
()
self
.
workdir
=
options
[
'working-directory'
].
strip
()
self
.
wrapper
=
options
[
'wrapper'
].
strip
()
# Set cloud9 access URL
options
[
'access
_
url'
]
=
'http://[%s]:%s'
%
(
self
.
ip
,
self
.
port
)
options
[
'access
-
url'
]
=
'http://[%s]:%s'
%
(
self
.
ip
,
self
.
port
)
def
install
(
self
):
path_list
=
[]
...
...
@@ -50,8 +51,10 @@ class Recipe(GenericBaseRecipe):
cloud9_args
=
[
self
.
node_executable
,
self
.
cloud9
,
'-l'
,
self
.
ip
,
'-p'
,
self
.
port
,
'-w'
,
self
.
workdir
]
wrapper
=
self
.
createPythonScript
(
self
.
options
[
'wrapper-name'
],
'slapos.recipe.librecipe.execute.executee'
,
cloud9_args
,
environment
)
wrapper
=
self
.
createPythonScript
(
self
.
wrapper
,
'slapos.recipe.librecipe.execute.executee'
,
(
cloud9_args
,
environment
)
)
path_list
.
append
(
wrapper
)
return
path_list
slapos/recipe/slaprunner/__init__.py
View file @
a1f39999
...
...
@@ -24,74 +24,70 @@
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
##############################################################################
from
slapos.recipe.librecipe
import
BaseSlap
Recipe
from
slapos.recipe.librecipe
import
GenericBase
Recipe
import
os
import
pkg_resources
import
sys
import
zc.buildout
import
zc.recipe.egg
class
Recipe
(
GenericBaseRecipe
):
def
_options
(
self
,
options
):
self
.
ipv4
=
options
[
'ipv4'
].
strip
()
self
.
ipv6
=
options
[
'ipv6'
].
strip
()
self
.
proxy_port
=
options
[
'proxy_port'
].
strip
()
self
.
runner_port
=
options
[
'runner_port'
].
strip
()
self
.
workdir
=
options
[
'working-directory'
].
strip
()
self
.
software_directory
=
options
[
'software-directory'
].
strip
()
self
.
instance_directory
=
options
[
'instance-directory'
].
strip
()
self
.
partition_amount
=
options
[
'partition-amount'
].
strip
()
self
.
cloud9_url
=
options
[
'cloud9-url'
].
strip
()
# Set slaprunner access URL
options
[
'access-url'
]
=
'http://[%s]:%s'
%
(
self
.
ipv6
,
self
.
runner_port
)
def
install
(
self
):
path_list
=
[]
class
Recipe
(
BaseSlapRecipe
):
def
_install
(
self
):
self
.
path_list
=
[]
self
.
requirements
,
self
.
ws
=
self
.
egg
.
working_set
()
ipv4
=
self
.
getLocalIPv4Address
()
ipv6
=
self
.
getGlobalIPv6Address
()
proxy_port
=
'50000'
runner_port
=
'50000'
cloud9_port
=
'30000'
workdir
=
self
.
createDataDirectory
(
'runner'
)
software_root
=
os
.
path
.
join
(
workdir
,
'software'
)
instance_root
=
os
.
path
.
join
(
workdir
,
'instance'
)
configuration
=
dict
(
software_root
=
s
oftware_root
,
instance_root
=
instance_root
,
master_url
=
'http://%s:%s/'
%
(
ipv4
,
proxy_port
),
software_root
=
s
elf
.
software_directory
,
instance_root
=
self
.
instance_directory
,
master_url
=
'http://%s:%s/'
%
(
self
.
ipv4
,
self
.
proxy_port
),
computer_id
=
'slaprunner'
,
partition_amount
=
7
,
partition_amount
=
self
.
partition_amount
,
slapgrid_sr
=
self
.
options
[
'slapgrid_sr'
],
slapgrid_cp
=
self
.
options
[
'slapgrid_cp'
],
slapproxy
=
self
.
options
[
'slapproxy'
],
supervisor
=
self
.
options
[
'supervisor'
],
supervisord_config
=
os
.
path
.
join
(
instance_root
,
'etc'
,
supervisord_config
=
os
.
path
.
join
(
self
.
instance_directory
,
'etc'
,
'supervisord.conf'
),
runner_workdir
=
workdir
,
runner_host
=
ipv6
,
runner_port
=
runner_port
,
ipv4_address
=
ipv4
,
ipv6_address
=
ipv6
,
proxy_host
=
ipv4
,
proxy_port
=
proxy_port
,
proxy_database
=
os
.
path
.
join
(
workdir
,
'proxy.db'
),
git
=
self
.
options
[
'git'
],
cloud9_url
=
'http://[%s]:%s'
%
(
ipv6
,
cloud9_port
),
ssh_client
=
self
.
options
[
'ssh_client'
],
public_key
=
self
.
options
[
'public_key'
],
private_key
=
self
.
options
[
'private_key'
],
runner_workdir
=
self
.
workdir
,
runner_host
=
self
.
ipv6
,
runner_port
=
self
.
runner_port
,
ipv4_address
=
self
.
ipv4
,
ipv6_address
=
self
.
ipv6
,
proxy_host
=
self
.
ipv4
,
proxy_port
=
self
.
proxy_port
,
proxy_database
=
os
.
path
.
join
(
self
.
workdir
,
'proxy.db'
),
git
=
self
.
options
[
'git-binary'
],
ssh_client
=
self
.
options
[
'ssh_client'
],
public_key
=
self
.
options
[
'public_key'
],
private_key
=
self
.
options
[
'private_key'
],
cloud9_url
=
self
.
cloud9_url
)
config_file
=
self
.
createConfigurationFile
(
'slapos.cfg'
,
self
.
substituteTemplate
(
pkg_resources
.
resource_filename
(
__name__
,
'template/slapos.cfg.in'
),
configuration
))
self
.
path_list
.
append
(
config_file
)
config_file
=
self
.
createFile
(
self
.
options
[
'slapos.cfg'
],
self
.
substituteTemplate
(
self
.
getTemplateFilename
(
'slapos.cfg.in'
),
configuration
))
path_list
.
append
(
config_file
)
environment
=
dict
(
PATH
=
os
.
path
.
dirname
(
self
.
options
[
'git'
])
+
':'
+
os
.
environ
[
'PATH'
],
PATH
=
os
.
path
.
dirname
(
self
.
options
[
'git
-binary
'
])
+
':'
+
os
.
environ
[
'PATH'
],
GIT_SSH
=
self
.
options
[
'ssh_client'
]
)
project_workdir
=
os
.
path
.
join
(
workdir
,
'project'
)
if
not
os
.
path
.
exists
(
project_workdir
):
os
.
mkdir
(
project_workdir
)
launch_args
=
[
self
.
options
[
'slaprunner'
].
strip
(),
config_file
,
'--debug'
]
cloud9_args
=
[
self
.
options
[
'node-bin'
].
strip
(),
self
.
options
[
'cloud9'
].
strip
(),
'-l'
,
ipv6
,
'-p'
,
cloud9_port
,
'-w'
,
workdir
]
self
.
path_list
.
extend
(
zc
.
buildout
.
easy_install
.
scripts
([(
'slaprunner'
,
'slapos.recipe.librecipe.execute'
,
'executee'
)],
self
.
ws
,
sys
.
executable
,
self
.
wrapper_directory
,
arguments
=
[
launch_args
,
environment
]))
self
.
path_list
.
extend
(
zc
.
buildout
.
easy_install
.
scripts
([(
'cloud9IDE'
,
'slapos.recipe.librecipe.execute'
,
'executee'
)],
self
.
ws
,
sys
.
executable
,
self
.
wrapper_directory
,
arguments
=
[
cloud9_args
,
environment
]))
self
.
setConnectionDict
(
dict
(
slaprunner_url
=
'http://[%s]:%s'
%
(
ipv6
,
runner_port
),
cloud9_url
=
'http://[%s]:%s'
%
(
ipv6
,
cloud9_port
)))
return
self
.
path_list
wrapper
=
self
.
createPythonScript
(
self
.
options
[
'wrapper'
],
'slapos.recipe.librecipe.execute.executee'
,
(
launch_args
,
environment
)
)
path_list
.
append
(
wrapper
)
return
path_list
software/slaprunner/instance-runner.cfg
View file @
a1f39999
[buildout]
parts =
instance
cloud9
slaprunner
sshkeys-dropbear
dropbear-server-add-authorized-key
publish-connection-informations
eggs-directory = ${buildout:eggs-directory}
develop-eggs-directory = ${buildout:develop-eggs-directory}
offline = true
[instance]
recipe = ${instance-recipe:egg}:${instance-recipe:module}
# 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/
[runnerdirectory]
recipe = slapos.cookbook:mkdirectory
home = $${rootdirectory:srv}/runner/
project = $${:home}/project
software-root = $${:home}/software
instance-root = $${:home}/instance
# Deploy cloud9 and slaprunner
[cloud9]
recipe = slapos.cookbook:cloud9
ip = $${slap-network-information:global-ipv6}
port = 30000
wrapper = $${basedirectory:services}/cloud9
working-directory = $${runnerdirectory:home}
git-binary = ${git:location}/bin/git
node-binary = ${nodejs:location}/bin/node
cloud9 = ${cloud9:location}/server.js
[slaprunner]
recipe = slapos.cookbook:slaprunner
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
git = ${git:location}/bin/git
node-bin = ${nodejs:location}/bin/node
cloud9 = ${cloud9:location}/bin/cloud9.js
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}
ssh_client = $${sshkeys-dropbear:wrapper}
public_key = $${sshkeys-dropbear:public-key}
private_key = $${sshkeys-dropbear:private-key}
ipv4 = $${slap-network-information:local-ipv4}
ipv6 = $${slap-network-information:global-ipv6}
proxy_port = 50000
runner_port = 50000
partition-amount = 7
cloud9-url = $${cloud9:access-url}
wrapper = $${basedirectory:services}/slaprunner
[sshkeys-directory]
recipe = slapos.cookbook:mkdirectory
requests = $${directory:sshkeys}/requests/
keys = $${directory:sshkeys}/keys/
# Deploy dropbear (minimalist SSH server)
# Deploy dropbear (minimalist ssh server)
[sshkeys-directory]
recipe = slapos.cookbook:mkdirectory
requests = $${directory:sshkeys}/requests/
...
...
@@ -65,26 +113,14 @@ wrapper = $${basedirectory:services}/sshd
recipe = slapos.cookbook:dropbear.add_authorized_key
key = $${slap-parameter:authorized-key}
[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/
# Send informations to SlapOS Master
[publish-connection-informations]
recipe = slapos.cookbook:publish
url = $${slaprunner:access-url}
cloud9_url = $${cloud9:access-url}
ssh_command = ssh $${dropbear-server:host} -p $${dropbear-server:port}
[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/
[slap-parameter]
# Default value if no ssh key is specified
...
...
software/slaprunner/software.cfg
View file @
a1f39999
...
...
@@ -34,7 +34,7 @@ md5sum = 5307e4200f044ae57b504ad68444491c
recipe = slapos.recipe.template
url = ${:_profile_base_location_}/instance-runner.cfg
output = ${buildout:directory}/template-runner.cfg
md5sum =
c24f4a76c9e8be5f5b83af28daf0fca1
md5sum =
779df8a10f18511058a49b14b8ffba18
mode = 0644
[eggs]
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment