Commit cb01986f authored by Cédric Le Ninivin's avatar Cédric Le Ninivin

Initial commit with environment for obs packaging

parents
prepare slapos build for obs
============================
This environment is made to prepare a SlapOS tarball and packaging configurations
to be used with openSUSE Build Service (OBS).
Requirements
------------
- A computer
- Internet connection
- gcc, g++, make, patch, wget, python, chrpath, osc, devscripts
- An account on OBS
Documentation
-------------
- http://en.opensuse.org/openSUSE:Build_Service_Tutorial
- http://en.opensuse.org/Portal:Packaging
- http://wiki.debian.org/IntroDebianPackaging
Directory Organisation
----------------------
- prepare_slapos_build.sh : This is the script you have to run to prepare the packet.
You can choose the version you want to build in it.
- ./home:VIFIBnexedi/SlapOS-Node : This is the directory for OBS. It is the one used to generate package so far.
If you have/want to use another directory, update its path in prepare_slapos_build.sh
- slapos-*version : Used to register current version of packet.
Avoid to rebuild network-cache if you just change packaging configuration files.
- templates/ : Contain templates to build the package.
- debian/ : contain configuration files for .deb packaging
- Makefile.in : Makefile to build slapos
- offline.sh.in : Prepare network-cache build building once slapos
- slapos.dsc.in : File needed by obs to build .deb package
- slapos.spec.in : configuration file for rpm packaging
- slapos-node/ : Template to build package
- Makefile : Makefile to build slapos and add files for package
- slapos-start : shell script that will be run on startup (called by slapos-node daemon)
- template : template files for package (cron.d, service)
- slapos : to build slapos. Contain buildout.cfg.in
preparing the package
---------------------
First make sure all files are ready and you have all necessary packages installed.
SlapOS is build using buildout and need an internet connection to fetch all elements.
On obs package are build on virtual machines without internet acces.
prepare_slapos_build.sh will compile slapos on your computer and build a network-cache thanks to offline.sh script.
At the end it remove slapos installation and only keep cache.
It makes a tarball out of it to be used by obs.
It then fetch packaging configuration from templates directory. Everything is then commit to obs thanks to osc.
\ No newline at end of file
#!/bin/bash -e
VERSION=0.28.2
RECIPE_VERSION=0.101
CURRENT_RECIPE_VERSION=$(cat ./slapos-recipe-version)
CURRENT_VERSION=$(cat ./slapos-version)
CURRENT_DIRECTORY="$(pwd)"
TEMPLATES_DIRECTORY=$CURRENT_DIRECTORY/templates
SLAPOS_ORGINAL_DIRECTORY=slapos-node
SLAPOS_DIRECTORY=slapos-node_$VERSION+$RECIPE_VERSION+0
OBS_DIRECTORY=$CURRENT_DIRECTORY/home:VIFIBnexedi/SlapOS-Node
# Prepare directory for new version if needed
if [ ! -d "$CURRENT_DIRECTORY/$SLAPOS_DIRECTORY" ]; then
cp -r $CURRENT_DIRECTORY/$SLAPOS_ORGINAL_DIRECTORY $CURRENT_DIRECTORY/$SLAPOS_DIRECTORY
fi
# Prepare Makefile and offline script
sed "s/\%RECIPE_VERSION\%/$RECIPE_VERSION/g;s/\%VERSION\%/$VERSION/g" $TEMPLATES_DIRECTORY/Makefile.in > $CURRENT_DIRECTORY/$SLAPOS_DIRECTORY/slapos/Makefile
sed "s/\%RECIPE_VERSION\%/$RECIPE_VERSION/g;s/\%VERSION\%/$VERSION/g" $TEMPLATES_DIRECTORY/offline.sh.in > $CURRENT_DIRECTORY/$SLAPOS_DIRECTORY/slapos/offline.sh
# Prepare Download Cache for SlapOS
cd $CURRENT_DIRECTORY/$SLAPOS_DIRECTORY/slapos/
#rm -rf build/
bash offline.sh
# Prepare tarball
cd $CURRENT_DIRECTORY
tar -czf $SLAPOS_DIRECTORY.tar.gz $SLAPOS_DIRECTORY
################# Prepare obs ###################################
cd $CURRENT_DIRECTORY/home:VIFIBnexedi/SlapOS-Node
# Remove former configuration
osc rm -f $SLAPOS_ORGINAL_DIRECTORY*.tar.gz
osc rm -f slapos.spec
# Prepare new tarball
cp $CURRENT_DIRECTORY/$SLAPOS_DIRECTORY.tar.gz .
osc add $SLAPOS_DIRECTORY.tar.gz
# Prepare new specfile
sed "s/\%RECIPE_VERSION\%/$RECIPE_VERSION/g;s/\%VERSION\%/$VERSION/g" $TEMPLATES_DIRECTORY/slapos.spec.in > slapos.spec
osc add slapos.spec
##################### Prepare configuration file for .deb ############
# Add entry to changelog
if [ $RECIPE_VERSION != $CURRENT_RECIPE_VERSION ]
then
cd $TEMPLATES_DIRECTORY/debian
dch -pm -v $VERSION+$RECIPE_VERSION+0 --check-dirname-level=0 "New version of slapos ($VERSION+$RECIPE_VERSION)"
fi
cd $TEMPLATES_DIRECTORY
tar -czf debian.tar.gz debian
cd $OBS_DIRECTORY
cp $TEMPLATES_DIRECTORY/debian.tar.gz .
#prepare new .dsc file
osc rm -f slapos*.dsc
sed "s/\%RECIPE_VERSION\%/$RECIPE_VERSION/g;s/\%VERSION\%/$VERSION/g" $TEMPLATES_DIRECTORY/slapos.dsc.in > $SLAPOS_DIRECTORY.dsc
osc add $SLAPOS_DIRECTORY.dsc
## Upload new Package
osc commit -m " New SlapOS Recipe $RECIPE_VERSION"
# Save current version
echo "$RECIPE_VERSION" > $CURRENT_DIRECTORY/slapos-recipe-version
echo "$VERSION" > $CURRENT_DIRECTORY/slapos-version
\ No newline at end of file
#!/usr/bin/make -f
# -*- makefile -*-
build:
cd slapos; make build
all: build
install: all
cd slapos; make install
mkdir -p $(DESTDIR)/usr/sbin/
cp slapos-start $(DESTDIR)/usr/sbin/
cp $(DESTDIR)/opt/slapos/bin/slapos $(DESTDIR)/usr/sbin/
clean:
# cd slapos; make clean
# Début 23:39
\ No newline at end of file
#!/bin/sh
IPV6CHECK=ipv6.google.com
IPV4CHECK=google.com
IPV6WAITTIME=5
# Execute slapformat
SLAPOS_CONFIGURATION=/etc/opt/slapos
echo "Starting slap script"
# Check ipv4
ping -c 2 $IPV4CHECK
while [ $? != 0 ]; do
sleep $(($i*5))
if [[ $i < 40 ]]; then
let i++
fi
ping -c 2 $IPV4CHECK
done
# Wait for ipv6 connection to be ready
i=0
ping6 -c 2 $IPV6CHECK
while [ $? != 0 ];
do
sleep $(($i*10))
if [[ $i < 40 ]]; then
let i++
fi
ping6 -c 2 $IPV6CHECK
done
# Run slapformat
i=1
echo -n "Running slapformat..."
/opt/slapos/bin/slapformat --now --console --verbose $SLAPOS_CONFIGURATION/slapos.cfg
while [[ $? != 0 ]]; do
sleep $(($i*60))
if [[ $i < 20 ]]; then
let i++
fi
echo "Retrying slapformat"
/opt/slapos/bin/slapformat --now --console --verbose $SLAPOS_CONFIGURATION/slapos.cfg
done
# Run bang
i=1
echo -n "Banging..."
/opt/slapos/bin/bang -m "Rebooted" $SLAPOS_CONFIGURATION/slapos.cfg
while [[ $? != 0 ]]; do
sleep $(($i*60))
if [[ $i < 20 ]]; then
let i++
fi
echo "Retrying Bang"
/opt/slapos/bin/bang -m "Rebooted" $SLAPOS_CONFIGURATION/slapos.cfg
done
echo "done."
# Run slapgrid on all computer partitions
/opt/slapos/bin/slapgrid-cp --verbose --develop --now --logfile=/opt/slapos/slapgrid-cp.log --pidfile=/opt/slapos/slapgrid-cp.pid $SLAPOS_CONFIGURATION/slapos.cfg >> /opt/slapos/slapgrid-cp.log 2>&1
\ No newline at end of file
[buildout]
extends =
http://git.erp5.org/gitweb/slapos.git/blob_plain/refs/tags/slapos-%RECIPE_VERSION%:/component/slapos/buildout.cfg
extends-cache= extends-cache
download-cache= download-cache
# Uguu, upstream buildout.cfg must be patched as it works the other way
# around from a packager point of view at least, thus at the end static
# path, such as Python HOME directory, are wrong...
#
# Currently:
# ./configure --prefix=BUILD_DIRECTORY && make install
# Instead of:
# ./configure --prefix=INSTALL_DIRECTORY && make install DESTDIR=BUILD_DIRECTORY
[python2.7]
configure-options +=
--prefix=%TARGET_DIRECTORY%/parts/${:_buildout_section_name_}
make-options +=
DESTDIR=%BUILD_ROOT_DIRECTORY%
[openssl]
configure-options +=
--prefix=%TARGET_DIRECTORY%/parts/${:_buildout_section_name_}
--openssldir=%TARGET_DIRECTORY%/parts/${:_buildout_section_name_}/etc/ssl
make-options +=
INSTALL_PREFIX=%BUILD_ROOT_DIRECTORY%
[gettext]
configure-options +=
--prefix=%TARGET_DIRECTORY%/parts/${:_buildout_section_name_}
make-options +=
DESTDIR=%BUILD_ROOT_DIRECTORY%
# Add gettext library path to RPATH as its binaries are used to build
# glib for example
environment =
CPPFLAGS=-I${libxml2:location}/include -I${zlib:location}/include -I${ncurses:location}/include
LDFLAGS=-L${libxml2:location}/lib -Wl,-rpath=${libxml2:location}/lib -L${zlib:location}/lib -Wl,-rpath=${zlib:location}/lib -L${ncurses:location}/lib -Wl,-rpath=${ncurses:location}/lib -Wl,-rpath=%BUILD_DIRECTORY%/parts/${:_buildout_section_name_}/lib
[bison]
configure-options +=
--prefix=%TARGET_DIRECTORY%/parts/${:_buildout_section_name_}
make-options +=
DESTDIR=%BUILD_ROOT_DIRECTORY%
[slapos]
software_root = /opt/slapgrid
instance_root = /srv/slapgrid
master_url = http://127.0.0.1:5000
computer_id = abeautifulbutuniquename
pidfile = /var/opt/slapos/run/slapgrid.pid
logfile = /var/opt/slapos/log/slapgrid.log
supervisord-socket = /var/opt/slapos/run/slapgrid-supervisord.sock
#key_file = /etc/opt/slapos/ssl/computer.key
#cert_file = /etc/opt/slapos/ssl/computer.crt
#certificate_repository_path = /var/opt/slapos/lib/certificates
[slapformat]
computer_xml = /var/opt/slapos/lib/computer.xml
log_file = /var/opt/slapos/log/slapformat.log
partition_amount = 10
ipv4_local_network = 10.0.0.0/16
bridge_name = slapbr0
tap_base_name = slaptap
partition_base_name = slappart
user_base_name = slapuser
[slapproxy]
host = 127.0.0.1
port = 5000
database_uri = /var/opt/slapos/lib/proxy.db
SHELL=/bin/sh
PATH=/usr/bin:/usr/sbin:/sbin:/bin
MAILTO=root
*/5 * * * * root /opt/slapos/bin/slapgrid-cp /etc/opt/slapos.cfg
*/15 * * * * root /opt/slapos/bin/slapgrid-sr /etc/opt/slapos.cfg
0 0 * * * root /opt/slapos/bin/slapgrid-ur /etc/opt/slapos.cfg
0 0 * * * root /opt/slapos/bin/slapformat /etc/opt/slapos.cfg
[Unit]
Description=SlapOS node script
Requires=basic.target
Wants=network.target remote-fs.target
After=basic.target network.target remote-fs.target
[Service]
Type=simple
ExecStart=/usr/sbin/slapos-start
StandardOutput=tty
TTYPath=/dev/console
[Install]
WantedBy=multi-user.target
recursive-include slapprepare/template *.in
include slapprepare/script/slapos
include slapprepare/script/slapos_firstboot
include slapprepare/script/slapos.service
include slapprepare/script/run_slapformat
include slapprepare/connect.sh
\ No newline at end of file
slapos.toolbox
==============
[egg_info]
tag_build =
tag_date = 0
tag_svn_revision = 0
from setuptools import setup, find_packages
import glob
import os
version = '0.23'
name = 'slapprepare'
setup(name=name,
version=version,
description="SlapOS SetUP kit.",
classifiers=[
"Programming Language :: Python",
],
keywords='slapos Setup Kit',
license='GPLv3',
packages=['slapprepare'],
include_package_data=True,
zip_safe=False, # proxy depends on Flask, which has issues with
# accessing templates
entry_points={
'console_scripts': [
'slapprepare = slapprepare:slapprepare',
]
},
)
# -*- coding: utf-8 -*-
##############################################################################
#
# Copyright (c) 2010 Vifib SARL and Contributors. All Rights Reserved.
#
# WARNING: This program as such is intended to be used by professional
# programmers who take the whole responsibility of assessing all potential
# consequences resulting from its eventual inadequacies and bugs
# End users who are looking for a ready-to-use solution with commercial
# guarantees and support are strongly advised to contract a Free Software
# Service Company
#
# This program is Free Software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 3
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
##############################################################################
import os
import pkg_resources
from shutil import move
from subprocess import call as subprocessCall
import sys
import urllib2
__import__('pkg_resources').declare_namespace(__name__)
class SlapError(Exception):
"""
Slap error
"""
def __init__(self, message):
self.msg = message
class UsageError(SlapError):
pass
class ExecError(SlapError):
pass
def _call(cmd_args, stdout=None, stderr=None, dry_run=False):
"""
Wrapper for subprocess.call() which'll secure the usage of external program's.
Args:
cmd_args: list of strings representing the command and all it's needed args
stdout/stderr: only precise PIPE (from subprocess) if you don't want the
command to create output on the regular stream
"""
print "Calling: %s" % ' '.join(cmd_args)
try:
if subprocessCall(cmd_args, stdout=stdout, stderr=stderr) != 0:
raise ValueError('Issues during running %r' % cmd_args)
except OSError as e:
raise ExecError('Process respond:"%s" when calling "%s"' % \
(str(e), ' '.join(cmd_args)))
# Utility fonction to get yes/no answers
def get_yes_no (prompt):
ok= 0
while not ok:
answer=raw_input( prompt + " [y,n]: " )
if answer.upper() in [ 'Y','YES' ]: return True
if answer.upper() in [ 'N', 'NO' ]: return False
# Return OpenSUSE version if it is SuSE
def suse_version():
if os.path.exists('/etc/SuSE-release') :
with open('/etc/SuSE-release') as f :
for line in f:
if "VERSION" in line:
dist = line.split()
return float(dist[2])
else :
return 0
# Parse certificate to get computer name and return it
def get_computer_name(slapos_configuration):
conf_file=open(slapos_configuration,"r")
for line in conf_file:
if "computer_id" in line:
i=line.find("COMP-")
conf_file.close()
return line[i:]
return -1
def enable_bridge(slapos_configuration):
#Create temp file
slapos_old_path = os.path.join(slapos_configuration,'slapos.cfg')
slapos_new_path = os.path.join(slapos_configuration,'slapos.cfg.tmp')
slapos_new = open(slapos_new_path,'w')
slapos_old = open(slapos_old_path)
for line in slapos_old:
slapos_new.write(line.replace("create_tap = false", "#create_tap = false"))
#close temp file
slapos_new.close()
slapos_old.close()
#Remove original file
os.remove(slapos_old_path)
#Move new file
move(slapos_new_path, slapos_old_path)
# Function to get ssh key
def get_ssh(temp_dir):
# Downloading ssh_key
count = 10
gotten = True
while count > 0 :
try:
print "Enter the url of your public ssh key"
ssh_web=raw_input('--> ')
try:
ssh_key_all = urllib2.urlopen(''.join(ssh_web))
gotten= True
except ValueError, err:
# add http:// if it is missing (needed by urllib2)
ssh_web = """http://"""+ssh_web
ssh_key_all = urllib2.urlopen(''.join(ssh_web))
gotten= True
except urllib2.URLError,err:
print " URL ERROR"
gotten = False
count -= 1
if gotten:
ssh_pub_key= ssh_key_all.read()
print ssh_pub_key
if get_yes_no ('Is this your ssh public key?'):
break
else:
count -=1
ssh_file=open(os.path.join(temp_dir,"authorized_keys"),"w")
ssh_file.write(''.join(ssh_pub_key))
ssh_file.close()
return 0
# Specific function to configure SlapOS Image
def slapserver(config):
dry_run = config.dry_run
mount_dir_path = config.mount_dir_path
try:
# Setting hostname
hostname_path = os.path.normpath('/'.join([mount_dir_path,
config.hostname_path]))
print "Setting hostname in : %s" % hostname_path
if not dry_run:
open(hostname_path, 'w').write("%s\n" % config.computer_id)
# Adding the hostname as a valid address
host_path = os.path.normpath('/'.join([mount_dir_path,
config.host_path]))
print "Creating %r" % host_path
if not dry_run:
open(host_path, 'w').write(
pkg_resources.resource_stream(__name__,
'template/hosts.in').read() % dict(
computer_id=config.computer_id))
# Creating safe sshd_config
sshd_path = os.path.normpath('/'.join([mount_dir_path, 'etc', 'ssh',
'sshd_config']))
print "Creating %r" % sshd_path
if not dry_run:
open(sshd_path, 'w').write(
pkg_resources.resource_stream(__name__,
'template/sshd_config.in').read())
os.chmod(sshd_path, 0600)
# Creating default bridge config
br0_path = os.path.normpath('/'.join([mount_dir_path, 'etc',
'sysconfig', 'network', 'ifcfg-br0']))
print "Creating %r" % br0_path
if not dry_run:
open(br0_path, 'w').write(
pkg_resources.resource_stream(__name__,
'template/ifcfg-br0.in').read())
# Creating boot scripts
path = os.path.join('/','usr','sbin', 'slapos-boot-dedicated')
print "Creating %r" % path
if not dry_run:
open(path, 'w').write(pkg_resources.resource_stream(__name__,
'script/%s' % 'slapos').read() )
os.chmod(path, 0755)
path = os.path.join(mount_dir_path, 'etc', 'systemd', 'system','slapos-boot-dedicated.service')
print "Creating %r" % path
if not dry_run:
open(path, 'w').write(pkg_resources.resource_stream(__name__,
'script/%s' % 'slapos.service').read() % dict(
slapos_configuration=config.slapos_configuration))
os.chmod(path, 0755)
# Preparing retry slapformat script
path = os.path.join(config.slapos_configuration,'run_slapformat')
print "Creating %r" % path
if not dry_run:
open(path, 'w').write(pkg_resources.resource_stream(__name__,
'script/%s' % 'run_slapformat').read() % dict(
slapos_configuration=config.slapos_configuration))
os.chmod(path, 0755)
path = os.path.join(mount_dir_path,'etc','openvpn','client.conf')
print "Creating %r" % path
if not dry_run:
open(path, 'a').write("""script-security 3 system
up-restart
up '/bin/bash %(slapos_configuration)s/run_slapformat & echo foo'
log /var/log/openvpn.log""" % dict(
slapos_configuration=config.slapos_configuration))
os.chmod(path, 0755)
# Writing ssh key
if config.need_ssh :
user_path = os.path.normpath('/'.join([mount_dir_path, 'root']))
ssh_key_directory = os.path.normpath('/'.join([user_path, '.ssh']))
ssh_key_path = os.path.normpath('/'.join([ssh_key_directory,
'authorized_keys']))
stat_info = os.stat(user_path)
uid, gid = stat_info.st_uid, stat_info.st_gid
ssh_key_directory = os.path.dirname(ssh_key_path)
if not os.path.exists(ssh_key_directory):
print "Creating ssh directory: %s" % ssh_key_directory
if not dry_run:
os.mkdir(ssh_key_directory)
if not dry_run:
print "Setting uid:gid of %r to %s:%s" % (ssh_key_directory, uid, gid)
os.chown(ssh_key_directory, uid, gid)
os.chmod(ssh_key_directory, 0700)
print "Creating file: %s" % ssh_key_path
if not dry_run:
open(ssh_key_path,'a').write(''.join(open(config.key_path,'r').read()))
if not dry_run:
print "Setting uid:gid of %r to %s:%s" % (ssh_key_path, uid, gid)
os.chown(ssh_key_path, uid, gid)
os.chmod(ssh_key_path, 0600)
# Put file to force VPN if user asked
if config.force_vpn :
if not dry_run:
open(os.path.join(config.slapos_configuration,'openvpn-needed'),'w')
# Removing line in slapos script activating kvm in virtual
if config.virtual:
if not dry_run:
path = os.path.join('/','usr','sbin', 'slapos-boot-dedicated')
_call(['sed','-i',"$d",path],dry_run=dry_run)
_call(['sed','-i',"$d",path],dry_run=dry_run)
# Adding slapos_firstboot in case of MultiDisk usage
if not config.one_disk :
for script in ['slapos_firstboot']:
path = os.path.join(mount_dir_path, 'etc', 'init.d', script)
print "Creating %r" % path
if not dry_run:
open(path, 'w').write(pkg_resources.resource_stream(__name__,
'script/%s' % script).read())
os.chmod(path, 0755)
else:
for script in ['slapos_firstboot']:
path = os.path.join(mount_dir_path, 'etc', 'init.d', script)
if os.path.exists(path):
print "Removing %r" % path
if not dry_run:
os.remove(path)
finally:
print "SlapOS Image configuration: DONE"
return 0
class Config:
def setConfig(self,mount_dir_path,slapos_configuration,
hostname_path, host_path,
dry_run,
key_path, master_url,
temp_dir,computer_id):
"""
Set options given by parameters.
"""
self.slapos_configuration = slapos_configuration
self.hostname_path = hostname_path
self.host_path = host_path
self.dry_run = dry_run
self.key_path = key_path
self.master_url = master_url
self.mount_dir_path = mount_dir_path
self.temp_dir=temp_dir
self.computer_id=computer_id
def userConfig(self):
self.certificates = get_yes_no("Automatically register new computer to Vifib?")
if self.certificates:
self.computer_name = raw_input("Define a unique name for this computer: ")
self.partition_amount = raw_input("""Number of SlapOS partitions for this computer? """)
self.virtual = get_yes_no("Is this a virtual Machine?")
if not self.virtual:
self.one_disk = not get_yes_no ("Do you want to use SlapOS with a second disk?")
else:
self.one_disk=True
self.force_vpn = get_yes_no ("Do you want to force the use of vpn to provide ipv6?")
if self.force_vpn :
self.ipv6_interface = "tapVPN"
else :
self.ipv6_interface = ""
self.need_ssh = get_yes_no("Do you want a remote ssh access?")
def displayUserConfig(self):
if self.certificates:
print "Number of partition: %s" % (self.partition_amount)
print "Computer name: %s" % self.computer_name
print "Ipv6 over VPN: %s" % self.force_vpn
print "Remote ssh access: %s" % self.need_ssh
print "Virtual Machine: %s" % self.virtual
if not self.virtual:
print "Use a second disk: %s" % (not self.one_disk)
def slapprepare():
try:
temp_directory=os.path.join('/tmp/slaptemp/')
if not os.path.exists(temp_directory):
print "Creating directory: %s" % temp_directory
os.mkdir(temp_directory, 0711)
config= Config()
while True :
config.userConfig()
print "\nThis your configuration: \n"
config.displayUserConfig()
if get_yes_no("\nDo you confirm?"):
break
if config.certificates:
slapos_configuration='/etc/opt/slapos/'
else:
# Check for config file in /etc/slapos/
if os.path.exists('/etc/slapos/slapos.cfg'):
slapos_configuration='/etc/slapos/'
else:
slapos_configuration='/etc/opt/slapos/'
# Prepare Slapos Configuration
if config.certificates:
_call(['slapos','node','register',config.computer_name
,'--interface-name','br0'
,'--ipv6-interface',config.ipv6_interface
,'--partition-number',config.partition_amount])
# Prepare for bridge
enable_bridge(slapos_configuration)
computer_id = get_computer_name(os.path.join('/',slapos_configuration,'slapos.cfg'))
print computer_id
config.setConfig(mount_dir_path = '/',
slapos_configuration=slapos_configuration,
hostname_path='/etc/HOSTNAME',
host_path='/etc/hosts',
dry_run=False,
key_path=os.path.join(temp_directory,'authorized_keys'),
master_url="""https://slap.vifib.com""",
temp_dir=temp_directory,
computer_id=computer_id)
# Prepare SlapOS Suse Server confuguration
if config.need_ssh :
get_ssh(temp_directory)
slapserver(config)
if not config.one_disk:
_call(['/etc/init.d/slapos_firstboot'])
_call(['systemctl','enable','slapos-boot-dedicated.service'])
_call(['systemctl','start','slapos-boot-dedicated.service'])
return_code = 0
except UsageError, err:
print >>sys.stderr, err.msg
print >>sys.stderr, "For help use --help"
return_code = 16
except ExecError, err:
print >>sys.stderr, err.msg
return_code = 16
except SystemExit, err:
# Catch exception raise by optparse
return_code = err
if os.path.exists(temp_directory):
print "Deleting directory: %s" % temp_directory
_call(['rm','-rf',temp_directory])
sys.exit(return_code)
#!/bin/sh
sleep 15
SLAPOS_CONFIGURATION='%(slapos_configuration)s'
i=0
false
while [[ $? != 0 ]]; do
sleep $(($i*60))
if [[ $i < 20 ]]; then
let i++
fi
echo "Retrying slapformat"
/opt/slapos/bin/slapformat --verbose --console $SLAPOS_CONFIGURATION/slapos.cfg
done
\ No newline at end of file
#!/bin/sh
##############################################################################
#
# Copyright (c) 2010 Vifib SARL and Contributors. All Rights Reserved.
#
# WARNING: This program as such is intended to be used by professional
# programmers who take the whole responsibility of assessing all potential
# consequences resulting from its eventual inadequacies and bugs
# End users who are looking for a ready-to-use solution with commercial
# guarantees and support are strongly advised to contract a Free Software
# Service Company
#
# This program is Free Software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 3
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
##############################################################################
systemctl stop slapos-node.service
systemctl disable slapos-node.service
# clean the system
for service in rpcbind network-remotefs postfix ; do
chkconfig --del $service
/etc/init.d/$service stop
done
IPV6CHECK=ipv6.google.com
IPV4CHECK=google.com
IPV6WAITTIME=5
SLAPVPN="ipv6_interface = tapVPN"
SLAPOS_CONFIGURATION='%(slapos_configuration)s'
# Test ipv4/ipv6 connectivity and if not working use openvpn
# and wait for it to be ready
/etc/init.d/openvpn stop
ping -c 2 $IPV4CHECK
while [ $? != 0 ]; do
sleep 5
ping -c 2 $IPV4CHECK
done
echo """Ipv4 connection ok"""
# Wait for native ipv6 connection to be ready
i=0
ping6 -c 2 $IPV6CHECK
while [[ $? != 0 ]] && [[ $i < $IPV6WAITTIME ]]
do
let i++
sleep 1
ping6 -c 2 $IPV6CHECK
done
if [ $? != 0 ] || [ -f $SLAPOS_CONFIGURATION/openvpn-needed ]; then
echo """ Starting openVPN """
/etc/init.d/openvpn start
sleep 10
ping6 -I tapVPN -c 2 $IPV6CHECK
while [[ $? != 0 ]]; do
ping6 -I tapVPN -c 2 $IPV6CHECK
done
# Ask slapos to use openvpn as ipv6 provider
sed -i "/${SLAPVPN}/ s/# *//" $SLAPOS_CONFIGURATION/slapos.cfg
# Use tapVPN as default interface for ipv6 traffic
/sbin/ip -6 route del default dev br0
sleep 2
else
# OpenVPN not needed, comment line about he_ipv6 (if not ailready done)
sed -i "/${SLAPVPN}/ s/^\([^#]\)/#\1/g" $SLAPOS_CONFIGURATION/slapos.cfg
fi
# set random root password
pwgen -sync 512 1 | passwd --stdin root
SLAP_INSTALL_LOG=/opt/slapos/slapos-install.log
while :; do
if [ -f /opt/slapos/bin/slapformat ] && [ -f /opt/slapos/bin/bang ]; then
# slapos tools available, nothing to do
break
fi
# software not detected, force forever installation
echo -n "Installing SlapOS, log availble at ${SLAP_INSTALL_LOG}..."
mkdir -p /opt/slapos
#(python -S -c \
# 'import urllib2;print urllib2.urlopen("http://svn.zope.org/*checkout*/zc.buildout/trunk/bootstrap/bootstrap.py").read()' \
# | python -S - -c $SLAPOS_CONFIGURATION/software.cfg buildout:directory=/opt/slapos \
# >> ${SLAP_INSTALL_LOG} 2>&1 && /opt/slapos/bin/buildout -c \
# $SLAPOS_CONFIGURATION/software.cfg buildout:directory=/opt/slapos >> \
# ${SLAP_INSTALL_LOG} 2>&1 ) && (echo "done.") || (echo \
# "failed, retrying, the last error was:." ; tail -n 20 ${SLAP_INSTALL_LOG} ; rm -f /opt/slapos/bin/slapformat)
rpm --install --force $SLAPOS_CONFIGURATION/slapos*.rpm
done
# Create PKI repository
repo=`egrep ^certificate_repository_path $SLAPOS_CONFIGURATION/slapos.cfg | sed 's/^certificate_repository_path.*= *//'`
mkdir -v -p -m 0755 $repo
# software detected, ready to run
# Set up cron
echo """# BEWARE: This file will be automatically regenerated on each boot
SHELL=/bin/sh
PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin
MAILTO=root
0 0 * * * root /opt/slapos/bin/slapformat --verbose --log_file=/opt/slapos/slapformat.log $SLAPOS_CONFIGURATION/slapos.cfg >> /opt/slapos/slapformat.log 2>&1
*/5 * * * * root /opt/slapos/bin/slapgrid-cp --verbose --logfile=/opt/slapos/slapgrid-cp.log --pidfile=/opt/slapos/slapgrid-cp.pid $SLAPOS_CONFIGURATION/slapos.cfg >> /opt/slapos/slapgrid-cp.log 2>&1
*/15 * * * * root /opt/slapos/bin/slapgrid-sr --verbose --logfile=/opt/slapos/slapgrid-sr.log --pidfile=/opt/slapos/slapgrid-sr.pid $SLAPOS_CONFIGURATION/slapos.cfg >> /opt/slapos/slapgrid-sr.log 2>&1
0 0 * * * root /opt/slapos/bin/slapgrid-ur --verbose --logfile=/opt/slapos/slapgrid-ur.log --pidfile=/opt/slapos/slapgrid-ur.pid $SLAPOS_CONFIGURATION/slapos.cfg >> /opt/slapos/slapgrid-ur.log 2>&1
""" > /etc/cron.d/slapos
# Setup more server like network parameters in order to avoid
# "Neighbour table overflow."
# Those machines are itself has a lot of interfaces and are in
# heavily networked environment, so limit of ARP cache for IPv4
# and IPv6 is 4x higher then default
# More tuning can be applied from: http://www.enigma.id.au/linux_tuning.txt
sysctl -w \
net.ipv4.neigh.default.gc_thresh1=512 \
net.ipv4.neigh.default.gc_thresh2=1024 \
net.ipv4.neigh.default.gc_thresh3=2048 \
net.ipv6.neigh.default.gc_thresh1=512 \
net.ipv6.neigh.default.gc_thresh2=1024 \
net.ipv6.neigh.default.gc_thresh3=2048
# Increase default aio-max-nr for sql servers
sysctl -w fs.aio-max-nr=262144
# Enable noop scheduler for disk which have SLAPOS labeled partition
disk=`blkid -L SLAPOS | sed -r -e 's/(\/dev\/|[0-9]*$)//g'`
echo noop > /sys/block/$disk/queue/scheduler
# Set kvm up
modprobe kvm_intel
sleep 1
chmod 666 /dev/kvm
# Set power saving
modprobe acpi_cpufreq
# Set hardware monitoring tools (for Shuttle xh61 machines)
modprobe coretemp
modprobe f71882fg
# Activate KSM (shared memory for KVM)
echo 1 > /sys/kernel/mm/ksm/run
systemctl enable slapos-node.service
systemctl start slapos-node.service
[Unit]
Description=SlapOs Boot script
Requires=basic.target
Wants=network.target remote-fs.target
After=basic.target network.target remote-fs.target
Before=slapos-node.service
[Service]
Type=simple
ExecStart=/usr/sbin/slapos-boot-dedicated
StandardOutput=tty
TTYPath=/dev/console
[Install]
WantedBy=multi-user.target
#!/usr/bin/python
### BEGIN INIT INFO
# Provides: slapos_firstboot
# Required-Start:
# Required-Stop:
# Default-Start:
# Default-Stop:
# Description: Configures first boot of SlapOS
### END INIT INFO
##############################################################################
#
# Copyright (c) 2010 Vifib SARL and Contributors. All Rights Reserved.
#
# WARNING: This program as such is intended to be used by professional
# programmers who take the whole responsibility of assessing all potential
# consequences resulting from its eventual inadequacies and bugs
# End users who are looking for a ready-to-use solution with commercial
# guarantees and support are strongly advised to contract a Free Software
# Service Company
#
# This program is Free Software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 3
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
##############################################################################
import os
import shutil
import subprocess
import tempfile
import time
# some constants
LABEL="SLAPOS"
MINIMUM_FREE_SPACE_GB=60
MINIMUM_FREE_SPACE=MINIMUM_FREE_SPACE_GB * 1024 * 1024 * 1024
SLAPOS_MARK='# Added by SlapOS\n'
def callWithCheck(args):
"""Calls args in subprocesses, rasies ValueError if command failed"""
if subprocess.call(args) != 0:
raise ValueError
def callWithIgnore(args):
"""Calls args in subprocess, ignores issues"""
subprocess.call(args)
def partprobe():
"""Calls partprobe utility"""
callWithIgnore("partprobe")
def env():
"""Returns language neutreal environment"""
env = {}
for k, v in os.environ.iteritems():
if 'LANG' not in k:
env[k] = v
env['LANG'] = 'C'
env['LANGUAGE'] = 'C'
return env
def getPartitionList(path):
"""Returns list of all partitions found on disk"""
partprobe()
result = subprocess.Popen(['fdisk', '-l', path], env=env(),
stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()[0]
partition_list = []
for l in result.split('\n'):
if l.startswith(path):
partition_list.append(l.split()[0])
return partition_list
def setupFilesystem(path):
"""Setups partition on path"""
print "Setting up filesystem on %r" % path
partprobe()
callWithCheck(["mkfs", "-m", "1", "-L", LABEL, "-t", "ext4", path])
partprobe()
def prepareDisk(path):
"""Prepares disk and creates partition"""
callWithCheck(["parted", "--script", path, "mklabel", "msdos"])
callWithCheck(["parted", "--script", '--', path, "mkpart", "primary",
"ext2", "0", "-1"])
partition = path + '1'
setupFilesystem(partition)
def findEmptyDisk():
"""Tries to find not configured yet disk"""
result = subprocess.Popen(['parted', '--script', '-l'], env=env(),
stdout=subprocess.PIPE, stderr=subprocess.STDOUT).communicate()[0]
for line in result.split('\n'):
if 'unrecognised disk label' in line:
disk = line.split(':')[1].strip()
fdisk = subprocess.Popen(['fdisk', '-l', disk], env=env(),
stdout=subprocess.PIPE, stderr=subprocess.STDOUT).communicate()[0]
size = 0
for l in fdisk.split('\n'):
if l.startswith('Disk %s:' % disk):
size = int(l.split(' ')[4])
break
if size > MINIMUM_FREE_SPACE:
return disk
def deactivateSwap():
"""Disactivates swap in /etc/fstab and turns off any existing"""
old_fstab = open('/etc/fstab', 'r').readlines()
fstab = open('/etc/fstab', 'w')
for line in old_fstab:
if 'swap' in line:
line = '#deactivated by slapos#' + line
fstab.write(line)
fstab.close()
callWithIgnore(['swapoff', '-a'])
def prepareSlapOSPartition(mount_point):
"""Prepare SlapOS partitioning"""
new_fstab = open('/etc/fstab', 'r').readlines()
a = new_fstab.append
d = dict(label=LABEL)
a(SLAPOS_MARK)
a('LABEL=%(label)s /mnt/%(label)s ext4 defaults,noatime 0 0\n'%
d)
a("/mnt/%(label)s/opt /opt none bind 0 0\n" % d)
a("/mnt/%(label)s/tmp /tmp none bind 0 0\n" % d)
a("/mnt/%(label)s/srv /srv none bind 0 0\n" % d)
open('/etc/fstab', 'w').write(''.join(new_fstab))
partprobe()
retry = 10
while True:
try:
print 'Trying to mount new partition, %s to go.' % retry
callWithCheck(['mount', '/mnt/'+LABEL])
except ValueError:
if retry > 0:
retry -= 1
# give some time
time.sleep(2)
else:
raise
else:
break
for d in ['opt', 'srv', 'tmp']:
p = '/mnt/'+LABEL+'/'+d
if not os.path.exists(p):
os.mkdir(p)
os.chmod(p, 0755)
os.chmod('/mnt/'+LABEL+'/tmp', 01777)
callWithCheck(['mount', '/opt'])
callWithCheck(['mount', '/tmp'])
callWithCheck(['mount', '/srv'])
def configureNtp():
"""Configures NTP daemon"""
server = "server pool.ntp.org"
old_ntp = open('/etc/ntp.conf', 'r').readlines()
new_ntp = open('/etc/ntp.conf', 'w')
for line in old_ntp:
if line.startswith('server'):
continue
new_ntp.write(line)
new_ntp.write(SLAPOS_MARK)
new_ntp.write(server+'\n')
new_ntp.close()
callWithIgnore(['chkconfig', '--add', 'ntp'])
def getMountedPartitionList():
partition_list = []
for line in open('/etc/mtab', 'r').readlines():
if line.startswith('/dev'):
partition_list.append(line.split(' ')[0])
return partition_list
def getWidestFreeSpaceList(disk_dict):
free_space_disk_dict = {}
for disk in disk_dict.iterkeys():
v = disk_dict[disk]
for l in v:
size = int(l.split(':')[3].rstrip('B'))
free_space_disk_dict.setdefault(size, [])
free_space_disk_dict[size].append(dict(disk=disk, info=l))
if free_space_disk_dict:
m = max(free_space_disk_dict)
if m > MINIMUM_FREE_SPACE:
return free_space_disk_dict[max(free_space_disk_dict)]
return []
def findAndPrepareFreeSpace():
"""Finds free space, ignoring / mounted device
Prefers disk with correct empty partition table"""
mounted_partition_list = getMountedPartitionList()
disk_dict = {}
parted = subprocess.Popen(['parted', '--script', '-lm'], env=env(),
stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()[0]
for line in parted.split('\n'):
line = line.strip()
if line.startswith('/dev'):
disk = line.split(':')[0]
if any([q.startswith(disk) for q in mounted_partition_list]):
continue
# disk found, time to fetch free space
disk_dict[disk] = []
free = subprocess.Popen(['parted', '--script', '-m', disk, 'unit', 'B', 'print',
'free'], env=env(),
stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()[0]
for f in free.split('\n'):
if ':free;' in f:
disk_dict[disk].append(f.strip())
disk_space_list = getWidestFreeSpaceList(disk_dict)
if len(disk_space_list) == 0:
raise ValueError('Minumum of free space %sGB not found' % MINIMUM_FREE_SPACE_GB)
disk = disk_space_list[0]
beg = disk['info'].split(':')[1].rstrip('B')
end = disk['info'].split(':')[2].rstrip('B')
before = getPartitionList(disk['disk'])
callWithCheck(['parted', '--script', '-m', '-a', 'optimal', '--',
disk['disk'], 'unit', 'B', 'mkpart', 'primary', 'ext2', beg, end])
after = getPartitionList(disk['disk'])
new = [q for q in after if q not in before]
setupFilesystem(new[0])
return disk['disk']
def configureGrub(mount_point, slapos_label_file):
"""Configures grub on mount_point using disk"""
boot = os.path.join(mount_point, 'boot')
grub = os.path.join(boot, 'grub')
if not os.path.exists(boot):
os.mkdir(boot)
if os.path.exists(grub):
shutil.rmtree(grub)
shutil.copytree('/boot/grub', grub)
open(os.path.join(grub, 'menu.lst'), 'w').write("""timeout 3600
title SlapOS Error: The USB key is not first and bootable device
root (hd0,1)
chainloader +1
title Solution: Put the USB key
root (hd0,1)
chainloader +1
title Solution: Configure BIOS -- boot from USB key
root (hd0,1)
chainloader +1
title Solution: Configure BIOS -- USB key as first device
root (hd0,1)
chainloader +1
""")
new_map_path = tempfile.mkstemp()[1]
new_map = open(new_map_path, 'w')
disk = os.path.realpath(os.path.join(os.path.dirname(slapos_label_file),
os.readlink(slapos_label_file)))
# this represents /dev/sdXN, so simply let's remove all possible numbers
# from right
# Note: This method's perfectioness is same as rest in this script, high
# dependency on system configuration
disk = disk.rstrip('0123456789')
new_map.write(open('/boot/grub/device.map').read() + '\n(hd1) %s'% disk)
new_map.close()
grub_install = subprocess.Popen(['grub', '--batch', '--device-map=%s' %
new_map], stdin=subprocess.PIPE)
grub_install.communicate("""root (hd1,0)
setup (hd1)
quit
""")
os.unlink(new_map_path)
if grub_install.returncode is None or grub_install.returncode != 0:
raise ValueError('Issue during grub installation')
def run():
"""Prepares machine to run SlapOS"""
print "Running SUSE Studio first boot script..."
partprobe()
slapos_label_file='/dev/disk/by-label/' + LABEL
if not os.path.exists(slapos_label_file):
empty_disk = findEmptyDisk()
if empty_disk is not None:
print "Found empty disk %r, configuring it" % empty_disk
prepareDisk(empty_disk)
else:
print "No empty disk found, trying to find the biggest possible free space"
findAndPrepareFreeSpace()
deactivateSwap()
mount_point = '/mnt/' + LABEL
if not os.path.exists(mount_point):
os.mkdir(mount_point)
os.chmod(mount_point, 0755)
print 'Reconfiguring fstab'
prepareSlapOSPartition(mount_point)
print "Configuring fallback grub information"
configureGrub(mount_point, slapos_label_file)
configureNtp()
if __name__ == '__main__':
try:
run()
except:
import traceback
sleep = 120
print "There was uncaught issue with SlapOS configuration"
print "System will be restarted in %ss" % sleep
print "Below traceback might be useful:"
traceback.print_exc()
time.sleep(sleep)
callWithIgnore(['init', '6'])
#
# hosts This file describes a number of hostname-to-address
# mappings for the TCP/IP subsystem. It is mostly
# used at boot time, when no name servers are running.
# On small systems, this file can be used instead of a
# "named" name server.
# Syntax:
#
# IP-Address Full-Qualified-Hostname Short-Hostname
#
127.0.0.1 %(computer_id)s localhost
# special IPv6 addresses
::1 %(computer_id)s localhost ipv6-localhost ipv6-loopback
fe00::0 ipv6-localnet
ff00::0 ipv6-mcastprefix
ff02::1 ipv6-allnodes
ff02::2 ipv6-allrouters
ff02::3 ipv6-allhosts
BOOTPROTO='dhcp'
BRIDGE='yes'
BRIDGE_FORWARDDELAY='0'
BRIDGE_PORTS='eth0'
BRIDGE_STP='off'
BROADCAST=''
ETHTOOL_OPTIONS=''
IPADDR=''
MTU=''
NAME=''
NETMASK=''
NETWORK=''
REMOTE_IPADDR=''
STARTMODE='auto'
USERCONTROL='no'
PermitRootLogin yes
AllowUsers root
AddressFamily any
RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile %h/.ssh/authorized_keys
# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no
PasswordAuthentication no
X11Forwarding yes
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL
Subsystem sftp /usr/lib64/ssh/sftp-server
UsePAM yes
#!/usr/bin/make -f
# -*- makefile -*-
VERSION = %VERSION%
RECIPE_VERSION = %RECIPE_VERSION%
INSTALL_DIRECTORY = $(DESTDIR)/opt/slapos
TARGET_DIRECTORY = /opt/slapos
BUILD_ROOT_DIRECTORY := $(shell pwd)/build
BUILD_DIRECTORY := $(BUILD_ROOT_DIRECTORY)$(TARGET_DIRECTORY)
PATCHES_DIRECTORY := $(shell pwd)/patches
#Use to get path of buildout correct
ORIGINAL_DIRECTORY := $(shell cat ./original_directory)
BOOTSTRAP_URL := 'http://svn.zope.org/*checkout*/zc.buildout/trunk/bootstrap/bootstrap.py?rev=127518'
build: build-stamp
build-stamp:
@echo "Fixing buildout path to $(BUILD_ROOT_DIRECTORY) rather than $(ORIGINAL_DIRECTORY) for buildout"
grep -rIl '$(ORIGINAL_DIRECTORY)' $(BUILD_ROOT_DIRECTORY) 2> /dev/null | \
xargs sed -i 's#$(ORIGINAL_DIRECTORY)#$(BUILD_ROOT_DIRECTORY)#g' || \
echo "No path to fix."
@echo 'Preparing source tarball (recipe version: $(RECIPE_VERSION))'
cd $(BUILD_DIRECTORY) && \
./bin/buildout -v
@touch build-stamp
cleanup-build: cleanup-build-stamp
cleanup-build-stamp: build
@echo "Deleting unecessary files to reduce source tarball size"
# TODO: Figure out why there is no write permission even for
# the owner
chmod -R u+w $(BUILD_DIRECTORY)
# Buildout files
rm -rfv $(BUILD_DIRECTORY)/downloads
rm -fv $(BUILD_DIRECTORY)/bootstrap.py $(BUILD_DIRECTORY)/buildout.cfg \
$(BUILD_DIRECTORY)/bin/buildout $(BUILD_DIRECTORY)/.installed.cfg \
$(BUILD_DIRECTORY)/environment.*
rm -rfv $(BUILD_DIRECTORY)/parts/*-patch-download/ \
$(BUILD_DIRECTORY)/parts/*-hooks-download/
rm -rfv $(BUILD_DIRECTORY)/extends-cache/ \
$(BUILD_DIRECTORY)/download-cache/
# Removing locales, terminfo and base_completion.d directories
find $(BUILD_DIRECTORY) -type d \
\( -name locale -o -name terminfo -o -name bash_completion.d \) \
-prune -exec rm -rfv '{}' ';'
rm -rf $(BUILD_DIRECTORY)/parts/glib/share/glib-2.0/gdb/ \
$(BUILD_DIRECTORY)/parts/glib/share/gdb
rm -rf $(BUILD_DIRECTORY)/parts/ncurses/lib/terminfo
# Removing gettext archive tarball containing all versions
rm -fv $(BUILD_DIRECTORY)/parts/gettext/share/gettext/archive.dir.tar.gz
# Removing documentations
find $(BUILD_DIRECTORY)/parts -regextype posix-extended -type d \
-iregex '.*/(gtk-)?(doc[s]?|man|info|test[s]?)$$' \
-prune -exec rm -rfv '{}' ';'
find $(BUILD_DIRECTORY) -regextype posix-extended -type f \
-iregex '.*(COPYING|LICENSE).*' -exec rm -f '{}' ';'
# Removing include directories
find $(BUILD_DIRECTORY) -type d \( -name include -o -name pkgconfig \) | \
grep -v python | xargs rm -rfv
find $(BUILD_DIRECTORY) -type f -executable -name '*-config' | \
grep -v python | xargs rm -fv
# Removing Python byte-compiled files (as it will be done upon
# package installation) and static libraries
find $(BUILD_DIRECTORY) -regextype posix-extended -type f \
-iregex '.*/*\.(py[co]|[l]?a|exe|bat)$$' -exec rm -fv '{}' ';'
# Removing empty directories
find $(BUILD_DIRECTORY) -type d -empty -prune -exec rmdir '{}' ';'
@touch cleanup-build-stamp
strip-binaries: strip-binaries-stamp
strip-binaries-stamp: build
set -e; \
for f in `find $(BUILD_DIRECTORY) -type f -executable ! -name '*.so*'`; do \
if file $$f | grep -Eq '.*ELF.*(executable|shared).*'; then \
echo "Stripping executable $$f"; \
strip --remove-section=.comment --remove-section=.note $$f; \
fi; \
done
set -e; \
for f in `find $(BUILD_DIRECTORY) -type f -name '*.so*'`; do \
if file $$f | grep -Eq '.*ELF.*shared.*'; then \
echo "Stripping shared library $$f"; \
strip --remove-section=.comment --strip-unneeded \
--remove-section=.note $$f; \
fi; \
done
@touch strip-binaries-stamp
all: all-stamp
all-stamp: build cleanup-build strip-binaries
@touch all-stamp
install: all
mkdir -p $(INSTALL_DIRECTORY)
cp -r $(BUILD_DIRECTORY)/* $(INSTALL_DIRECTORY)
set -e; \
for l in `find $(INSTALL_DIRECTORY) -type l -lname '$(BUILD_DIRECTORY)/*'`; do \
echo "Fixing symlink $$l"; \
base_directory=`echo $$l|sed 's#^$(INSTALL_DIRECTORY)/\(.*/\).*#\1#'|sed -r 's#[^/]+#..#g'`; \
cd `dirname $$l` && \
ln -sf `readlink $$l | sed "s#$(BUILD_DIRECTORY)#$$base_directory#"` \
`basename $$l`; \
done
@echo "Removing shebang from Python files not in bin/"
for f in `grep --exclude-dir='bin' --include='*.py' -rIl '^#!' $(INSTALL_DIRECTORY) 2> /dev/null`; do \
chmod -x $$f && sed -i '1d' $$f; \
done
@echo "Fixing path to $(TARGET_DIRECTORY) rather than $(BUILD_DIRECTORY)"
grep -rIl '$(BUILD_DIRECTORY)' $(INSTALL_DIRECTORY) 2> /dev/null | \
xargs sed -i 's#$(BUILD_DIRECTORY)#$(TARGET_DIRECTORY)#g' || \
echo "No path to fix."
set -e; \
for f in `find $(INSTALL_DIRECTORY) \( -type f -o -type l \) \( -executable -o -name "*.so" \)`; do \
if file -L $$f | grep -Eq '.*ELF.*(executable|shared).*'; then \
OLD_RPATH="`chrpath $$f|awk -F'RPATH=' '{print $$2}'|sed 's#$(BUILD_DIRECTORY)#$(TARGET_DIRECTORY)#g' 2> /dev/null`"; \
if [ -n "$$OLD_RPATH" ]; then \
chrpath -r "$$OLD_RPATH" $$f; \
fi; \
fi; \
done
clean:
rm -rf $(BUILD_ROOT_DIRECTORY)
rm -f *-stamp
.PHONY: build cleanup-build strip-binaries all install clean
Bridge configuration
====================
Before using slapformat commands, you must set up a bridge network interface
named ``slapbr0''. On that bridge, you must set up at least an IPv6 global
address, even if it is only a localhost one.
On Debian systems, this is commonly done in ``/etc/network/interfaces'' file.
Note that if you declare any interface as part of the bridge (when you want
your instances to be available not only on localhost), you should remove them
from the configuration file.
Here is an example of the bridge on eth0 device with static IPv4 address and
private IPv6 address:
auto slapbr0
iface slapbr0 inet static
address ADDRESS
netmask NETMASK
gateway GATEWAY
bridge_ports eth0
iface slapbr0 inet6 static
address fd00::1
netmask 64
You can have a look at bridge-utils-interfaces(5) and interfaces(5) manpages
for further details.
-- Arnaud Fontaine <arnaud.fontaine@nexedi.com>, Fri, 16 Nov 2011 10:24:51 +0900
slapos-node (0.27+0.97+0) unstable; urgency=low
* Removed slapprepare from package
-- Cedric Le Ninivin <cedric.leninivin@tiolive.com> Thu, 16 Aug 2012 15:13:52 +0200
slapos-node (0.25+0.88+0) unstable; urgency=low
* New Version of SlapOS (0.88)
* New Makefile for slapprepare
-- Cedric Le Ninivin <cedric.leninivin@tiolive.com> Tue, 22 May 2012 16:02:45 +0200
slapos-node (0.20+0.61+0) unstable; urgency=low
* New upstream release.
* debian/config:
+ Use Vifib master URL by default.
+ Remove now useless software root as it will always be /opt/slapgrid.
* Rename Computer SSL filenames from slapos to computer prefix.
+ Update debian/templates.
+ debian/postinst: automatically rename slapos.{crt,key} files.
* Move ./debian/conf/slapos.cfg to ./slapos.cfg.
* Add slapconsole missing configuration:
+ slapos.cfg: add section.
+ debian/templates: add account key and certificate.
* Makefile:
+ Improve errors handling of shell loops.
+ Clean up empty directories as well.
* debian/prerm: delete /opt/slapos/ before upgrade.
* buildout.cfg.in: update netifaces URL as it was unavailable.
* Handle update of /etc/opt/slapos/slapos.cfg with ucf:
+ debian/postinst: register and check file on update.
+ debian/postrm: remove the configuration from the hash file on purge.
-- Arnaud Fontaine <arnaud.fontaine@nexedi.com> Thu, 02 Dec 2011 10:48:33 +0900
slapos-node (0.14+0.56+0) unstable; urgency=low
* Initial release.
-- Arnaud Fontaine <arnaud.fontaine@nexedi.com> Wed, 16 Nov 2011 11:32:17 +0900
#!/bin/sh
set -e
#DEBHELPER#
. /usr/share/debconf/confmodule
CONFIG_FILE=/etc/opt/slapos/slapos.cfg
MASTER_URL=
COMPUTER_ID=
SOFTWARE_ROOT=
PARTITION_AMOUNT=
IPV4_LOCAL_NETWORK=
if [ -f "$CONFIG_FILE" ]; then
MASTER_URL="`sed -ne 's#^\s*master_url[^=]*=\s*\(.*\)$#\1#p' \"$CONFIG_FILE\"`"
COMPUTER_ID="`sed -ne 's#^\s*computer_id[^=]*=\s*\(.*\)$#\1#p' \"$CONFIG_FILE\"`"
PARTITION_AMOUNT="`sed -ne 's#^\s*partition_amount[^=]*=\s*\(.*\)$#\1#p' \"$CONFIG_FILE\"`"
IPV4_LOCAL_NETWORK="`sed -ne 's#^\s*ipv4_local_network[^=]*=\s*\(.*\)$#\1#p' \"$CONFIG_FILE\"`"
fi
if [ -n "$MASTER_URL" ]; then
db_set slapos-node/master_url "$MASTER_URL"
db_input medium slapos-node/master_url || true
else
db_set slapos-node/master_url "https://slap.vifib.com"
db_input high slapos-node/master_url || true
fi
db_go || true
db_get slapos-node/master_url
( echo "$RET" | grep -q "^https://" ) && db_input high slapos-node/master_url_with_ssl_note || true
if [ -n "$COMPUTER_ID" ]; then
db_set slapos-node/computer_id "$COMPUTER_ID"
db_input medium slapos-node/computer_id || true
else
db_input high slapos-node/computer_id || true
fi
if [ -n "$PARTITION_AMOUNT" ]; then
db_set slapos-node/partition_amount "$PARTITION_AMOUNT"
db_input medium slapos-node/partition_amount || true
else
db_input high slapos-node/partition_amount || true
fi
if [ -n "$IPV4_LOCAL_NETWORK" ]; then
db_set slapos-node/ipv4_local_network "$IPV4_LOCAL_NETWORK"
db_input medium slapos-node/ipv4_local_network || true
else
db_input high slapos-node/ipv4_local_network || true
fi
db_go || true
exit 0
Source: slapos-node
Maintainer: Arnaud Fontaine <arnaud.fontaine@nexedi.com>
Section: net
Priority: optional
Build-Depends: debhelper (>= 4.1.16),
chrpath,
po-debconf,
wget,
python,
python-setuptools
Homepage: http://www.slapos.org
Package: slapos-node
Architecture: any
Depends: ${misc:Depends},
${shlibs:Depends},
ucf,
# slapformat
bridge-utils,
uml-utilities,
# slapgrid-sr
Recommends: libc6-dev | libc-dev,
gcc | c-compiler,
g++ | c++-compiler,
make,
patch,
Description: Client-side to deploy applications with SlapOS
SlapOS allows one to turn any application into SaaS (Service as a System),
PaaS (Platform as a Service) or IaaS (Infrastructure as a Service) without
loosing your freedom. SlapOS defines two types of servers: SlapOS server and
SlapOS node.
.
This package contains libraries and tools to deploy a node.
.
Slapformat prepares a SlapOS node before running slapgrid. It then generates
a report and sends the information to the configured SlapOS master.
.
Slapgrid allows you to easily deploy instances of software based on buildout
profiles.
Format: http://anonscm.debian.org/viewvc/dep/web/deps/dep5.mdwn?revision=174
Upstream-Name: slapos.core
Upstream-Contact: Vifib SARL <info@slapos.org>
Source: http://git.erp5.org/repos/slapos.core.git
Files: *
Copyright: 2011, Arnaud Fontaine <arnaud.fontaine@nexedi.com>
License: GPL-3
On Debian systems the complete text of the GNU General Public License v3 can
be found in the file `/usr/share/common-licenses/GPL-3'.
SHELL=/bin/sh
PATH=/usr/bin:/usr/sbin:/sbin:/bin
MAILTO=root
*/5 * * * * root /opt/slapos/bin/slapgrid-cp /etc/opt/slapos.cfg
*/15 * * * * root /opt/slapos/bin/slapgrid-sr /etc/opt/slapos.cfg
0 0 * * * root /opt/slapos/bin/slapgrid-ur /etc/opt/slapos.cfg
0 0 * * * root /opt/slapos/bin/slapformat /etc/opt/slapos.cfg
/opt/slapos
/srv/slapgrid
/opt/slapgrid
/etc/opt/slapos
/etc/opt/slapos/ssl
/var/opt/slapos
/var/opt/slapos/lib
/var/opt/slapos/log
/var/opt/slapos/run
/usr/bin
/usr/share/
\ No newline at end of file
debian/README.Debian
[type: gettext/rfc822deb] templates
# Czech PO debconf template translation of slapos-client.
# Copyright (C) 2010 Michal Simunek <michal.simunek@gmail.com>
# This file is distributed under the same license as the slapos-client package.
# Michal Simunek <michal.simunek@gmail.com>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: slapos-client\n"
"Report-Msgid-Bugs-To: slapos.node@packages.debian.org\n"
"POT-Creation-Date: 2011-12-01 18:16+0900\n"
"PO-Revision-Date: 2011-06-13 17:31+0200\n"
"Last-Translator: Michal Simunek <michal.simunek@gmail.com>\n"
"Language-Team: Czech <debian-l10n-czech@lists.debian.org>\n"
"Language: cs\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Type: string
#. Description
#: ../templates:2001
msgid "SlapOS master node URL:"
msgstr "URL hlavního uzlu SlapOS:"
#. Type: note
#. Description
#: ../templates:3001
msgid "Master node key and certificate mandatory"
msgstr "Klíč hlavního uzlu a certifikát je povinný"
#. Type: note
#. Description
#: ../templates:3001
#, fuzzy
#| msgid ""
#| "You used an HTTPS URL for the SlapOS master node, so the corresponding "
#| "certificate must be placed in /etc/opt/slapos/ssl/slapos.crt, and the key "
#| "in /etc/opt/slapos/ssl/slapos.key, readable only to root."
msgid ""
"You used an HTTPS URL for the SlapOS master node, so the Computer "
"certificate must be placed in /etc/opt/slapos/ssl/computer.crt, and the key "
"in /etc/opt/slapos/ssl/computer.key, readable only to root. Also, your "
"account certificate and key must be placed respectively in /etc/opt/slapos/"
"ssl/account.crt and /etc/opt/slapos/ssl/account.key."
msgstr ""
"Pro hlavní uzel SlapOS jste použili URL s HTTPS, takže v /etc/opt/slapos/ssl/"
"slapos.crt musí být umístěn příslušný certifikát a v /etc/opt/slapos/ssl/"
"slapos.key klíč, čitelný pouze uživatelem root."
#. Type: string
#. Description
#: ../templates:4001
msgid "SlapOS computer ID:"
msgstr "ID počítače SlapOS:"
#. Type: string
#. Description
#: ../templates:4001
msgid "Please specify a unique identifier for this SlapOS node."
msgstr "Zadejte prosím unikátní identifikátor pro tento uzel SlapOS."
#. Type: string
#. Description
#: ../templates:5001
msgid "Number of Computer Partitions on this computer:"
msgstr "Počet oddílů počítače na tomto počítači:"
#. Type: string
#. Description
#: ../templates:5001
msgid ""
"A Computer Partition (CP) is an instance of a Software Release (SR). You can "
"now define how many instances will be available on this computer."
msgstr ""
"Oddíl počítače (CP) je instancí verze softwaru (SR). Nyní můžete určit, "
"kolik instancí bude na tomto počítači dostupných."
#. Type: string
#. Description
#: ../templates:5001
msgid ""
"Note that the Software Releases will be stored in /opt/slapgrid/, whereas "
"the Computer Partition will be stored in /srv/slapgrid/."
msgstr ""
"Vezměte na vědomí, že se verze softwaru budou ukládat do /opt/slapgrid/,"
"zatímco oddíly počítače do /srv/slapgrid/."
#. Type: string
#. Description
#: ../templates:6001
msgid "Local IPv4 network to be used for Computer Partitions:"
msgstr "Místní IPv4 síť, která se má použít pro oddíly počítače:"
#. Type: string
#. Description
#: ../templates:6001
msgid ""
"Every Computer Partition must have an address on the same IPv4 network. "
"Please specify a network in CIDR notation (e.g.: 192.0.2.0/24)."
msgstr ""
# Danish translation slapos-client.
# Copyright (C) slapos-client & nedenstående oversættere.
# This file is distributed under the same license as the slapos-client package.
# Joe Hansen (joedalton2@yahoo.dk), 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: slapos-client\n"
"Report-Msgid-Bugs-To: slapos.node@packages.debian.org\n"
"POT-Creation-Date: 2011-12-01 18:16+0900\n"
"PO-Revision-Date: 2011-06-12 18:30+01:00\n"
"Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n"
"Language-Team: Danish <debian-l10n-danish@lists.debian.org>\n"
"Language: da\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Type: string
#. Description
#: ../templates:2001
msgid "SlapOS master node URL:"
msgstr "SlapOS' adresse for overknude:"
#. Type: note
#. Description
#: ../templates:3001
msgid "Master node key and certificate mandatory"
msgstr "Nøgle for overknude og certifikat er krævet"
#. Type: note
#. Description
#: ../templates:3001
#, fuzzy
#| msgid ""
#| "You used an HTTPS URL for the SlapOS master node, so the corresponding "
#| "certificate must be placed in /etc/opt/slapos/ssl/slapos.crt, and the key "
#| "in /etc/opt/slapos/ssl/slapos.key, readable only to root."
msgid ""
"You used an HTTPS URL for the SlapOS master node, so the Computer "
"certificate must be placed in /etc/opt/slapos/ssl/computer.crt, and the key "
"in /etc/opt/slapos/ssl/computer.key, readable only to root. Also, your "
"account certificate and key must be placed respectively in /etc/opt/slapos/"
"ssl/account.crt and /etc/opt/slapos/ssl/account.key."
msgstr ""
"Du brugte en HTTPS URL for SlapOS' overknude, så det tilsvarende certifikat "
"skal placeres i /etc/opt/slapos/ssl/slapos.crt, og nøglen i /etc/opt/slapos/"
"ssl/slapos.key, kun læsbart for administrator (root)."
#. Type: string
#. Description
#: ../templates:4001
msgid "SlapOS computer ID:"
msgstr "Computer-id for SlapOS:"
#. Type: string
#. Description
#: ../templates:4001
msgid "Please specify a unique identifier for this SlapOS node."
msgstr "Angiv venligst en unik identifikator for denne SlapOS-knude."
#. Type: string
#. Description
#: ../templates:5001
msgid "Number of Computer Partitions on this computer:"
msgstr "Antal computerpartitioner på denne computer:"
#. Type: string
#. Description
#: ../templates:5001
msgid ""
"A Computer Partition (CP) is an instance of a Software Release (SR). You can "
"now define how many instances will be available on this computer."
msgstr ""
"En computerpartition (CP) er en instans af en programudgivelse (SR). Du kan "
"nu definere hvor mange instanser, som vil være tilgængelige på denne "
"computer."
#. Type: string
#. Description
#: ../templates:5001
msgid ""
"Note that the Software Releases will be stored in /opt/slapgrid/, whereas "
"the Computer Partition will be stored in /srv/slapgrid/."
msgstr ""
"Bemærk at programudgivelser vil blive gemt i /opt/slapgrid/, hvorimod "
"computerpartitionen vil blive gemt i /srv/slapgrid/."
#. Type: string
#. Description
#: ../templates:6001
msgid "Local IPv4 network to be used for Computer Partitions:"
msgstr "Lokalt IPv4-netværk som skal bruges for computerpartitioner:"
#. Type: string
#. Description
#: ../templates:6001
msgid ""
"Every Computer Partition must have an address on the same IPv4 network. "
"Please specify a network in CIDR notation (e.g.: 192.0.2.0/24)."
msgstr ""
"Alle computerpartitioner skal have en adresse på det samme IPv4-netværk. "
"Angiv venligst et netværk i CIDR-notation (det vil sige: 192.0.2.0/24)."
# German translation of slapos.tool.format.
# Copyright 2010-2011, Vifib SARL and Contributors.
# This file is distributed under the same license as the slapos.core-unofficial package.
# Copyright of this file 2011 Chris Leick.
#
msgid ""
msgstr ""
"Project-Id-Version: slapos.core-unofficial 0.12-1\n"
"Report-Msgid-Bugs-To: slapos.node@packages.debian.org\n"
"POT-Creation-Date: 2011-12-01 18:16+0900\n"
"PO-Revision-Date: 2011-09-13 21:12+0200\n"
"Last-Translator: Chris Leick <c.leick@vollbio.de>\n"
"Language-Team: German <debian-l10n-german@lists.debian.org>\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#. Type: string
#. Description
#: ../templates:2001
msgid "SlapOS master node URL:"
msgstr "URL des SlapOS-Masterknotens:"
#. Type: note
#. Description
#: ../templates:3001
msgid "Master node key and certificate mandatory"
msgstr "Pflichtschlüssel und -zertifikat des Masterknotens"
#. Type: note
#. Description
#: ../templates:3001
#, fuzzy
#| msgid ""
#| "You used an HTTPS URL for the SlapOS master node, so the corresponding "
#| "certificate must be placed in /etc/opt/slapos/ssl/slapos.crt, and the key "
#| "in /etc/opt/slapos/ssl/slapos.key, readable only to root."
msgid ""
"You used an HTTPS URL for the SlapOS master node, so the Computer "
"certificate must be placed in /etc/opt/slapos/ssl/computer.crt, and the key "
"in /etc/opt/slapos/ssl/computer.key, readable only to root. Also, your "
"account certificate and key must be placed respectively in /etc/opt/slapos/"
"ssl/account.crt and /etc/opt/slapos/ssl/account.key."
msgstr ""
"Sie haben eine HTTPS-URL für den SlapOS-Masterknoten verwandt, daher muss "
"das zugehörige Zertifikat in /etc/opt/slapos/ssl/slapos.crt und der "
"Schlüssel nur für Root lesbar in /etc/opt/slapos/ssl/slapos.key platziert "
"werden."
#. Type: string
#. Description
#: ../templates:4001
msgid "SlapOS computer ID:"
msgstr "SlapOS-Rechnerkennzahl:"
#. Type: string
#. Description
#: ../templates:4001
msgid "Please specify a unique identifier for this SlapOS node."
msgstr ""
"Bitte geben Sie einen eindeutigen Bezeichner für diesen SlapOS-Knoten an."
#. Type: string
#. Description
#: ../templates:5001
msgid "Number of Computer Partitions on this computer:"
msgstr "Anzahl der »Computer Partitionen« auf diesem Rechner:"
#. Type: string
#. Description
#: ../templates:5001
msgid ""
"A Computer Partition (CP) is an instance of a Software Release (SR). You can "
"now define how many instances will be available on this computer."
msgstr ""
"Eine »Computer Partition« (CP) ist eine Instanz eines »Software-"
"Releases« (SR). Sie können nun festlegen, wie viele Instanzen auf diesem "
"Rechner verfügbar sein werden."
#. Type: string
#. Description
#: ../templates:5001
msgid ""
"Note that the Software Releases will be stored in /opt/slapgrid/, whereas "
"the Computer Partition will be stored in /srv/slapgrid/."
msgstr ""
"Beachten Sie, dass das »Software Release« in /opt/slapgrid/ gespeichert "
"wird, während die »Computer-Partition« in /srv/slapgrid/ gespeichert wird."
#. Type: string
#. Description
#: ../templates:6001
msgid "Local IPv4 network to be used for Computer Partitions:"
msgstr "Lokales IPv4-Netzwerk, das für »Computer Partitionen« benutzt wird:"
#. Type: string
#. Description
#: ../templates:6001
msgid ""
"Every Computer Partition must have an address on the same IPv4 network. "
"Please specify a network in CIDR notation (e.g.: 192.0.2.0/24)."
msgstr ""
"Jede »Computer Partition« muss eine Adresse im gleichen IPv4-Netzwerk haben. "
"Bitte geben Sie ein Netzwerk in CIDR-Notation an (z.B 192.0.2.0/24)."
# slapos.tool.format po-debconf translation to Spanish
# Copyright (C) 2011 Software in the Public Interest
# This file is distributed under the same license as the slapos.tool.format package.
#
# Changes:
# - Initial translation
# Francisco Javier Cuadrado <fcocuadrado@gmail.com>, 2011
#
# Traductores, si no conocen el formato PO, merece la pena leer la
# documentación de gettext, especialmente las secciones dedicadas a este
# formato, por ejemplo ejecutando:
# info -n '(gettext)PO Files'
# info -n '(gettext)Header Entry'
#
# Equipo de traducción al español, por favor, lean antes de traducir
# los siguientes documentos:
#
# - El proyecto de traducción de Debian al español
# http://www.debian.org/intl/spanish/
# especialmente las notas de traducción en
# http://www.debian.org/intl/spanish/notas
#
# - La guía de traducción de po's de debconf:
# /usr/share/doc/po-debconf/README-trans
# o http://www.debian.org/intl/l10n/po-debconf/README-trans
#
msgid ""
msgstr ""
"Project-Id-Version: slapos.tool.format 1.0~20110420+1.git67c5b39-2\n"
"Report-Msgid-Bugs-To: slapos.node@packages.debian.org\n"
"POT-Creation-Date: 2011-12-01 18:16+0900\n"
"PO-Revision-Date: 2011-06-14 09:30+0100\n"
"Last-Translator: Francisco Javier Cuadrado <fcocuadrado@gmail.com>\n"
"Language-Team: Debian l10n Spanish <debian-l10n-spanish@lists.debian.org >\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Type: string
#. Description
#: ../templates:2001
msgid "SlapOS master node URL:"
msgstr "URL del nodo maestro de SlapOS:"
#. Type: note
#. Description
#: ../templates:3001
msgid "Master node key and certificate mandatory"
msgstr "La clave y el certificado del nodo maestro son obligatorios"
#. Type: note
#. Description
#: ../templates:3001
#, fuzzy
#| msgid ""
#| "You used an HTTPS URL for the SlapOS master node, so the corresponding "
#| "certificate must be placed in /etc/opt/slapos/ssl/slapos.crt, and the key "
#| "in /etc/opt/slapos/ssl/slapos.key, readable only to root."
msgid ""
"You used an HTTPS URL for the SlapOS master node, so the Computer "
"certificate must be placed in /etc/opt/slapos/ssl/computer.crt, and the key "
"in /etc/opt/slapos/ssl/computer.key, readable only to root. Also, your "
"account certificate and key must be placed respectively in /etc/opt/slapos/"
"ssl/account.crt and /etc/opt/slapos/ssl/account.key."
msgstr ""
"Ha utilizado una URL con HTTPS para el nodo maestro de SlapOS, de modo que "
"se debe ubicar el certificado correspondiente en «/etc/opt/slapos/ssl/slapos."
"crt», y la clave en «/etc/opt/slapos/ssl/slapos.key», con acceso de lectura "
"sólo para el administrador."
#. Type: string
#. Description
#: ../templates:4001
msgid "SlapOS computer ID:"
msgstr "Identificador de la máquina de SlapOS:"
#. Type: string
#. Description
#: ../templates:4001
msgid "Please specify a unique identifier for this SlapOS node."
msgstr "Indique el identificador único para este nodo de SlapOS."
#. Type: string
#. Description
#: ../templates:5001
msgid "Number of Computer Partitions on this computer:"
msgstr "Número de «particiones de equipo» en este equipo:"
#. Type: string
#. Description
#: ../templates:5001
msgid ""
"A Computer Partition (CP) is an instance of a Software Release (SR). You can "
"now define how many instances will be available on this computer."
msgstr ""
"Una «partición de equipo» («Computer Partition», CP) es una instancia de una "
"«versión del software» («Software Release», SR). Puede definir cuántas "
"instancias estarán disponibles en este equipo."
#. Type: string
#. Description
#: ../templates:5001
msgid ""
"Note that the Software Releases will be stored in /opt/slapgrid/, whereas "
"the Computer Partition will be stored in /srv/slapgrid/."
msgstr ""
"Tenga en cuenta que las «versiones del software» se almacenan en «/opt/"
"slapgrid/», mientras que las «particiones de equipo» se almacenarán en «/srv/"
"slapgrid/»."
#. Type: string
#. Description
#: ../templates:6001
msgid "Local IPv4 network to be used for Computer Partitions:"
msgstr "Red local IPv4 que se utilizará para las «particiones de equipo»:"
#. Type: string
#. Description
#: ../templates:6001
msgid ""
"Every Computer Partition must have an address on the same IPv4 network. "
"Please specify a network in CIDR notation (e.g.: 192.0.2.0/24)."
msgstr ""
"Cada «partición de equipo» debe tener una dirección en la misma red IPv4. "
"Por favor, introduzca la red utilizando la notación CIDR (por ejemplo: "
"192.0.2.0/24)."
# Translation of slapos.tool debconf templates to French.
# Copyright (C) 2011 Debian French l10n team <debian-l10n-french@lists.debian.org>
# This file is distributed under the same license as the slapos.tool package.
#
# Julien Patriarca <patriarcaj@gmail.com>, 2011.
# Christian Perrier <bubulle@debian.org>, 2011.
msgid ""
msgstr ""
"Project-Id-Version: slapos.tool\n"
"Report-Msgid-Bugs-To: slapos.node@packages.debian.org\n"
"POT-Creation-Date: 2011-12-01 18:16+0900\n"
"PO-Revision-Date: 2011-07-16 21:24+0200\n"
"Last-Translator: Christian Perrier <bubulle@debian.org>\n"
"Language-Team: French <debian-l10n-french@lists.debian.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 1.2\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. Type: string
#. Description
#: ../templates:2001
msgid "SlapOS master node URL:"
msgstr "Adresse du nœud maître SlapOS :"
#. Type: note
#. Description
#: ../templates:3001
msgid "Master node key and certificate mandatory"
msgstr "Clé et certificat obligatoires pour le nœud maître"
#. Type: note
#. Description
#: ../templates:3001
#, fuzzy
#| msgid ""
#| "You used an HTTPS URL for the SlapOS master node, so the corresponding "
#| "certificate must be placed in /etc/opt/slapos/ssl/slapos.crt, and the key "
#| "in /etc/opt/slapos/ssl/slapos.key, readable only to root."
msgid ""
"You used an HTTPS URL for the SlapOS master node, so the Computer "
"certificate must be placed in /etc/opt/slapos/ssl/computer.crt, and the key "
"in /etc/opt/slapos/ssl/computer.key, readable only to root. Also, your "
"account certificate and key must be placed respectively in /etc/opt/slapos/"
"ssl/account.crt and /etc/opt/slapos/ssl/account.key."
msgstr ""
"Une adresse HTTPS a été choisie pour le nœud maître de SlapOS. Dans ce cas, "
"le certificat correspondant doit être mis dans /etc/opt/slapos/ssl/slapos."
"crt, et la clé dans /etc/opt/slapos/ssl/slapos.key uniquement lisible par le "
"superutilisateur."
#. Type: string
#. Description
#: ../templates:4001
msgid "SlapOS computer ID:"
msgstr "Identifiant de la machine SlapOS :"
#. Type: string
#. Description
#: ../templates:4001
msgid "Please specify a unique identifier for this SlapOS node."
msgstr "Veuillez indiquer un identifiant unique pour ce nœud SlapOS."
#. Type: string
#. Description
#: ../templates:5001
msgid "Number of Computer Partitions on this computer:"
msgstr "Nombre de « Partitions Ordinateur » présentes sur cette machine :"
#. Type: string
#. Description
#: ../templates:5001
msgid ""
"A Computer Partition (CP) is an instance of a Software Release (SR). You can "
"now define how many instances will be available on this computer."
msgstr ""
"Une « Partition Ordinateur » (PO) est une instance correspondant à une "
"« Version de Logiciel » (VL). Vous pouvez désormais définir combien "
"d'instances seront disponibles sur cet ordinateur."
#. Type: string
#. Description
#: ../templates:5001
msgid ""
"Note that the Software Releases will be stored in /opt/slapgrid/, whereas "
"the Computer Partition will be stored in /srv/slapgrid/."
msgstr ""
"Veuillez noter que les « Versions de Logiciels » seront stockées dans /opt/"
"slapgrid/, tandis que les « Partitions d'Ordinateur » seront stockées dans /"
"srv/slapgrid/."
#. Type: string
#. Description
#: ../templates:6001
msgid "Local IPv4 network to be used for Computer Partitions:"
msgstr "Réseau IPV4 à utiliser pour les « Partitions d'Ordinateur » :"
#. Type: string
#. Description
#: ../templates:6001
msgid ""
"Every Computer Partition must have an address on the same IPv4 network. "
"Please specify a network in CIDR notation (e.g.: 192.0.2.0/24)."
msgstr ""
"Chaque « Partition d'Ordinateur » doit avoir une adresse sur le même réseau "
"IPV4. Veuillez indiquer un réseau avec la notation CIDR (ex: 192.168.2.0/24)."
# Copyright (C) 2011 Arnaud Fontaine <arnau@debian.org>
# This file is distributed under the same license as the slapos.tool.format package.
# Hideki Yamane <henrich@debian.org>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: slapos.tool.format 1.0~20110420+1.git67c5b39-2\n"
"Report-Msgid-Bugs-To: slapos.node@packages.debian.org\n"
"POT-Creation-Date: 2011-12-01 18:16+0900\n"
"PO-Revision-Date: 2011-06-14 23:07+0900\n"
"Last-Translator: Hideki Yamane <henrich@debian.org>\n"
"Language-Team: Japanese <debian-japanese@lists.debian.org>\n"
"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Type: string
#. Description
#: ../templates:2001
msgid "SlapOS master node URL:"
msgstr "SlapOS のマスターノード URL:"
#. Type: note
#. Description
#: ../templates:3001
msgid "Master node key and certificate mandatory"
msgstr "マスターノード鍵と証明書が必須です"
#. Type: note
#. Description
#: ../templates:3001
#, fuzzy
#| msgid ""
#| "You used an HTTPS URL for the SlapOS master node, so the corresponding "
#| "certificate must be placed in /etc/opt/slapos/ssl/slapos.crt, and the key "
#| "in /etc/opt/slapos/ssl/slapos.key, readable only to root."
msgid ""
"You used an HTTPS URL for the SlapOS master node, so the Computer "
"certificate must be placed in /etc/opt/slapos/ssl/computer.crt, and the key "
"in /etc/opt/slapos/ssl/computer.key, readable only to root. Also, your "
"account certificate and key must be placed respectively in /etc/opt/slapos/"
"ssl/account.crt and /etc/opt/slapos/ssl/account.key."
msgstr ""
"HTTPS URL をマスターノードとして入力したので、対応する鍵と証明書を /etc/"
"slapos/ssl/slapos.key と /etc/opt/slapos/ssl/slapos.crt に置いて、root のみが"
"読み取れるようにしておく必要があります。"
#. Type: string
#. Description
#: ../templates:4001
msgid "SlapOS computer ID:"
msgstr "SlapOS コンピュータ ID:"
#. Type: string
#. Description
#: ../templates:4001
msgid "Please specify a unique identifier for this SlapOS node."
msgstr "この SlapOS ノード用の一意の識別子を指定してください。"
#. Type: string
#. Description
#: ../templates:5001
msgid "Number of Computer Partitions on this computer:"
msgstr "このコンピューター上のコンピューターパーティション数:"
#. Type: string
#. Description
#: ../templates:5001
msgid ""
"A Computer Partition (CP) is an instance of a Software Release (SR). You can "
"now define how many instances will be available on this computer."
msgstr ""
"コンピューターパーティション (CP) は、ソフトウェアリリース (SR) のインスタン"
"スです。このコンピューター上でいくつのインスタンスが利用可能かをここで定義で"
"きます。"
#. Type: string
#. Description
#: ../templates:5001
msgid ""
"Note that the Software Releases will be stored in /opt/slapgrid/, whereas "
"the Computer Partition will be stored in /srv/slapgrid/."
msgstr ""
"ソフトウェアリリースは /opt/slapgrid/ に、そしてコンピューターパーティション"
"は /srv/slapgrid/ に保存されます。"
#. Type: string
#. Description
#: ../templates:6001
msgid "Local IPv4 network to be used for Computer Partitions:"
msgstr "コンピューターパーティションに使うローカル IPv4 ネットワーク:"
#. Type: string
#. Description
#: ../templates:6001
msgid ""
"Every Computer Partition must have an address on the same IPv4 network. "
"Please specify a network in CIDR notation (e.g.: 192.0.2.0/24)."
msgstr ""
"すべてのコンピューターパーティションは同じ IPv4 ネットワーク上のアドレスを持"
"つ必要があります。ネットワークを CIDR 記法で指定してください (例: "
"192.0.2.0/24)"
# Dutch translation of slapos.core-unofficial debconf templates.
# Copyright (C) 2011 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the slapos.core-unofficial package.
# Jeroen Schot <schot@a-eskwadraat.nl>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: slapos.core-unofficial-0.12-1\n"
"Report-Msgid-Bugs-To: slapos.node@packages.debian.org\n"
"POT-Creation-Date: 2011-12-01 18:16+0900\n"
"PO-Revision-Date: 2011-08-23 15:29+0200\n"
"Last-Translator: Jeroen Schot <schot@a-eskwadraat.nl>\n"
"Language-Team: Debian l10n Dutch <debian-l10n-dutch@lists.debian.org>\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Type: string
#. Description
#: ../templates:2001
msgid "SlapOS master node URL:"
msgstr "SlapOS hoofdknoop-URL:"
#. Type: note
#. Description
#: ../templates:3001
msgid "Master node key and certificate mandatory"
msgstr "Sleutel en certificaat van de hoofdknoop verplicht"
#. Type: note
#. Description
#: ../templates:3001
#, fuzzy
#| msgid ""
#| "You used an HTTPS URL for the SlapOS master node, so the corresponding "
#| "certificate must be placed in /etc/opt/slapos/ssl/slapos.crt, and the key "
#| "in /etc/opt/slapos/ssl/slapos.key, readable only to root."
msgid ""
"You used an HTTPS URL for the SlapOS master node, so the Computer "
"certificate must be placed in /etc/opt/slapos/ssl/computer.crt, and the key "
"in /etc/opt/slapos/ssl/computer.key, readable only to root. Also, your "
"account certificate and key must be placed respectively in /etc/opt/slapos/"
"ssl/account.crt and /etc/opt/slapos/ssl/account.key."
msgstr ""
"U heeft een HTTPS-URL opgegeven voor de SlapOS hoofdknoop; het bijbehorende "
"certificaat moet in /etc/opt/slapos/ssl/slapos.crt worden gezet en de "
"sleutel in /etc/opt/slapos/ssl/slapos.key. De sleutel mag alleen leesbaar "
"zijn voor de beheerder."
#. Type: string
#. Description
#: ../templates:4001
msgid "SlapOS computer ID:"
msgstr "SlapOS computer-ID:"
#. Type: string
#. Description
#: ../templates:4001
msgid "Please specify a unique identifier for this SlapOS node."
msgstr "Geeft een unieke naam op voor deze SlapOS knoop."
#. Type: string
#. Description
#: ../templates:5001
msgid "Number of Computer Partitions on this computer:"
msgstr "Het aantal computerpartities op deze computer:"
#. Type: string
#. Description
#: ../templates:5001
msgid ""
"A Computer Partition (CP) is an instance of a Software Release (SR). You can "
"now define how many instances will be available on this computer."
msgstr ""
"Een computerpartitie (Computer Partition, CP) is een instantie van een "
"software-uitgave (Software Release, SR). U kunt nu aangeven hoeveel "
"instanties beschikbaar zullen zijn op deze computer."
#. Type: string
#. Description
#: ../templates:5001
msgid ""
"Note that the Software Releases will be stored in /opt/slapgrid/, whereas "
"the Computer Partition will be stored in /srv/slapgrid/."
msgstr ""
"De software-uitgaves worden opgeslagen in /opt/slapgrid/ en de "
"computerpartities in /srv/slapgrid/."
#. Type: string
#. Description
#: ../templates:6001
msgid "Local IPv4 network to be used for Computer Partitions:"
msgstr "Lokaal IPv4-netwerk voor de computerpartities:"
#. Type: string
#. Description
#: ../templates:6001
msgid ""
"Every Computer Partition must have an address on the same IPv4 network. "
"Please specify a network in CIDR notation (e.g.: 192.0.2.0/24)."
msgstr ""
"Elke computerpartitie moet een IP-adres in hetzelfde IPv4-netwerk hebben. "
"Geef een netwerk in CIDR-notatie op (bv. 192.0.2.0/24)."
# Portuguese translation of slapos-client debconf messages.
# Copyright (C) 2011
# This file is distributed under the same license as the slapos-client package.
# Rui Branco <ruipb@debianpt.org>, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: slapos-client\n"
"Report-Msgid-Bugs-To: slapos.node@packages.debian.org\n"
"POT-Creation-Date: 2011-12-01 18:16+0900\n"
"PO-Revision-Date: 2011-06-13 13:23+0100\n"
"Last-Translator: Rui Branco <ruipb@debianpt.org>\n"
"Language-Team: Portuguese <traduz@debianpt.org>\n"
"Language: pt\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#. Type: string
#. Description
#: ../templates:2001
msgid "SlapOS master node URL:"
msgstr "URL do nó principal do SlapOS:"
#. Type: note
#. Description
#: ../templates:3001
msgid "Master node key and certificate mandatory"
msgstr "Chave e certificado obrigatório do nó principal"
#. Type: note
#. Description
#: ../templates:3001
#, fuzzy
#| msgid ""
#| "You used an HTTPS URL for the SlapOS master node, so the corresponding "
#| "certificate must be placed in /etc/opt/slapos/ssl/slapos.crt, and the key "
#| "in /etc/opt/slapos/ssl/slapos.key, readable only to root."
msgid ""
"You used an HTTPS URL for the SlapOS master node, so the Computer "
"certificate must be placed in /etc/opt/slapos/ssl/computer.crt, and the key "
"in /etc/opt/slapos/ssl/computer.key, readable only to root. Also, your "
"account certificate and key must be placed respectively in /etc/opt/slapos/"
"ssl/account.crt and /etc/opt/slapos/ssl/account.key."
msgstr ""
"Usou um URL HTTPS para o nó principal do SlapOS, deste modo o certificado "
"correspondente deverá ser colocado em /etc/opt/slapos/ssl/slapos.crt, e a "
"chave em /etc/opt/slapos/ssl/slapos.key, com acesso de leitura apenas ao "
"root."
#. Type: string
#. Description
#: ../templates:4001
msgid "SlapOS computer ID:"
msgstr "ID do computador SlapOS:"
#. Type: string
#. Description
#: ../templates:4001
msgid "Please specify a unique identifier for this SlapOS node."
msgstr "Por favor especifique um identificador único para este nó SlapOS."
#. Type: string
#. Description
#: ../templates:5001
msgid "Number of Computer Partitions on this computer:"
msgstr "Número de Partições de Computador neste computador:"
#. Type: string
#. Description
#: ../templates:5001
msgid ""
"A Computer Partition (CP) is an instance of a Software Release (SR). You can "
"now define how many instances will be available on this computer."
msgstr ""
"Uma 'Computer Partition' (CP) é uma instância de uma 'Software "
"Release' (SR). Pode definir o número de instâncias que estarão disponíveis "
"neste computador."
#. Type: string
#. Description
#: ../templates:5001
msgid ""
"Note that the Software Releases will be stored in /opt/slapgrid/, whereas "
"the Computer Partition will be stored in /srv/slapgrid/."
msgstr ""
"Note que as Software Releases serão armazenadas em /opt/slapgrid/,enquanto "
"que a Computer Partition será armazenada em /srv/slapgrid/."
#. Type: string
#. Description
#: ../templates:6001
msgid "Local IPv4 network to be used for Computer Partitions:"
msgstr "Rede IPv4 local a ser usada pelas 'Computer Partitions':"
#. Type: string
#. Description
#: ../templates:6001
msgid ""
"Every Computer Partition must have an address on the same IPv4 network. "
"Please specify a network in CIDR notation (e.g.: 192.0.2.0/24)."
msgstr ""
"Todas as 'Computer Partition' necessitam de ter um endereço na mesma rede "
"IPv4. Por favor especifique uma rede com notação CIDR (p.e.: 192.0.2.0/24)."
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the slapos.core-unofficial package.
#
# Yuri Kozlov <yuray@komyakino.ru>, 2011.
msgid ""
msgstr ""
"Project-Id-Version: slapos.core-unofficial 0.8+20110708+1.git5c55e0e-1\n"
"Report-Msgid-Bugs-To: slapos.node@packages.debian.org\n"
"POT-Creation-Date: 2011-12-01 18:16+0900\n"
"PO-Revision-Date: 2011-07-23 07:33+0400\n"
"Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
"Language-Team: Russian <debian-l10n-russian@lists.debian.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Lokalize 1.0\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#. Type: string
#. Description
#: ../templates:2001
msgid "SlapOS master node URL:"
msgstr "URL главного узла SlapOS:"
#. Type: note
#. Description
#: ../templates:3001
msgid "Master node key and certificate mandatory"
msgstr "Сертификат и ключ главного узла"
#. Type: note
#. Description
#: ../templates:3001
#, fuzzy
#| msgid ""
#| "You used an HTTPS URL for the SlapOS master node, so the corresponding "
#| "certificate must be placed in /etc/opt/slapos/ssl/slapos.crt, and the key "
#| "in /etc/opt/slapos/ssl/slapos.key, readable only to root."
msgid ""
"You used an HTTPS URL for the SlapOS master node, so the Computer "
"certificate must be placed in /etc/opt/slapos/ssl/computer.crt, and the key "
"in /etc/opt/slapos/ssl/computer.key, readable only to root. Also, your "
"account certificate and key must be placed respectively in /etc/opt/slapos/"
"ssl/account.crt and /etc/opt/slapos/ssl/account.key."
msgstr ""
"Для доступа к главному узлу SlapOS используется HTTPS URL, поэтому в /etc/"
"slapos/ssl/slapos.crt должен быть соответствующий сертификат, а в /etc/"
"slapos/ssl/slapos.key — ключ (доступны только root)."
#. Type: string
#. Description
#: ../templates:4001
msgid "SlapOS computer ID:"
msgstr "Идентификатор компьютера SlapOS:"
#. Type: string
#. Description
#: ../templates:4001
msgid "Please specify a unique identifier for this SlapOS node."
msgstr "Введите уникальный идентификатор этого узла SlapOS."
#. Type: string
#. Description
#: ../templates:5001
msgid "Number of Computer Partitions on this computer:"
msgstr "Количество Computer Partition на этом компьютере:"
#. Type: string
#. Description
#: ../templates:5001
msgid ""
"A Computer Partition (CP) is an instance of a Software Release (SR). You can "
"now define how many instances will be available on this computer."
msgstr ""
"Computer Partition (CP) — это экземпляр Software Release (SR). Сейчас вы "
"можете указать сколько экземпляров будет доступно на этом компьютере."
#. Type: string
#. Description
#: ../templates:5001
msgid ""
"Note that the Software Releases will be stored in /opt/slapgrid/, whereas "
"the Computer Partition will be stored in /srv/slapgrid/."
msgstr ""
"Заметим, что Software Release будут храниться в /opt/slapgrid/, а Computer "
"Partition будет храниться в /srv/slapgrid/."
#. Type: string
#. Description
#: ../templates:6001
msgid "Local IPv4 network to be used for Computer Partitions:"
msgstr "Локальная сеть IPv4, которая будет использована на Computer Partition:"
#. Type: string
#. Description
#: ../templates:6001
msgid ""
"Every Computer Partition must have an address on the same IPv4 network. "
"Please specify a network in CIDR notation (e.g.: 192.0.2.0/24)."
msgstr ""
"Все Computer Partition должны иметь адреса из одной сети IPv4. Укажите адрес "
"сети в формате CIDR (например: 192.0.2.0/24)."
# Translation of slapos.core-unofficial debconf template to Swedish
# Copyright (C) 2011 Martin Bagge <brother@bsnet.se>
# This file is distributed under the same license as the slapos.core-unofficial package.
#
# Martin Bagge <brother@bsnet.se>, 2011
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: slapos.node@packages.debian.org\n"
"POT-Creation-Date: 2011-12-01 18:16+0900\n"
"PO-Revision-Date: 2011-09-01 20:48+0100\n"
"Last-Translator: Martin Bagge / brother <brother@bsnet.se>\n"
"Language-Team: Swedish <debian-l10n-swedish@lists.debian.org>\n"
"Language: Swedish\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Language: Swedish\n"
"X-Poedit-Country: Sweden\n"
#. Type: string
#. Description
#: ../templates:2001
msgid "SlapOS master node URL:"
msgstr "URL till SlapOS huvudnod:"
#. Type: note
#. Description
#: ../templates:3001
msgid "Master node key and certificate mandatory"
msgstr "Huvudnod-nyckel och certifikat behövs"
#. Type: note
#. Description
#: ../templates:3001
#, fuzzy
#| msgid ""
#| "You used an HTTPS URL for the SlapOS master node, so the corresponding "
#| "certificate must be placed in /etc/opt/slapos/ssl/slapos.crt, and the key "
#| "in /etc/opt/slapos/ssl/slapos.key, readable only to root."
msgid ""
"You used an HTTPS URL for the SlapOS master node, so the Computer "
"certificate must be placed in /etc/opt/slapos/ssl/computer.crt, and the key "
"in /etc/opt/slapos/ssl/computer.key, readable only to root. Also, your "
"account certificate and key must be placed respectively in /etc/opt/slapos/"
"ssl/account.crt and /etc/opt/slapos/ssl/account.key."
msgstr ""
"Du använde en HTTPS URL för SlapOS huvudnod, motsvarande certifikat måste "
"placeras i /etc/opt/slapos/ssl/slapos.crt och nyckeln i /etc/opt/slapos/ssl/"
"slapos.key, dessa ska endast vara läsbara av root."
#. Type: string
#. Description
#: ../templates:4001
msgid "SlapOS computer ID:"
msgstr "SlapOS dator-ID:"
#. Type: string
#. Description
#: ../templates:4001
msgid "Please specify a unique identifier for this SlapOS node."
msgstr "Ange en unik identifiering för denna SlapOS-nod."
#. Type: string
#. Description
#: ../templates:5001
msgid "Number of Computer Partitions on this computer:"
msgstr "Antal datorpartitioner på denna dator:"
#. Type: string
#. Description
#: ../templates:5001
msgid ""
"A Computer Partition (CP) is an instance of a Software Release (SR). You can "
"now define how many instances will be available on this computer."
msgstr ""
"En datorpartition (CP) är en instans av en mjukvaruutgåva (SR). Du kan nu "
"ange hur många instanser du vill ska vara tillgängliga på denna dator."
#. Type: string
#. Description
#: ../templates:5001
msgid ""
"Note that the Software Releases will be stored in /opt/slapgrid/, whereas "
"the Computer Partition will be stored in /srv/slapgrid/."
msgstr ""
"Kom ihåg att mjukvaruutgåvor kommer att lagras i /opt/slapgrid/, "
"datorpartitioner lagras i /srv/slapgrid/."
#. Type: string
#. Description
#: ../templates:6001
msgid "Local IPv4 network to be used for Computer Partitions:"
msgstr "Lokalt IPv4-nätverk som ska användas för datorpartitioner:"
#. Type: string
#. Description
#: ../templates:6001
msgid ""
"Every Computer Partition must have an address on the same IPv4 network. "
"Please specify a network in CIDR notation (e.g.: 192.0.2.0/24)."
msgstr ""
"Varje datorpartition måste ha en adress på samma IPv4-nätverk. Ange ett "
"nätverk med CIDR-notation (ex. 192.0.2.0/24)."
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: slapos.node@packages.debian.org\n"
"POT-Creation-Date: 2011-12-01 18:16+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#. Type: string
#. Description
#: ../templates:2001
msgid "SlapOS master node URL:"
msgstr ""
#. Type: note
#. Description
#: ../templates:3001
msgid "Master node key and certificate mandatory"
msgstr ""
#. Type: note
#. Description
#: ../templates:3001
msgid ""
"You used an HTTPS URL for the SlapOS master node, so the Computer "
"certificate must be placed in /etc/opt/slapos/ssl/computer.crt, and the key "
"in /etc/opt/slapos/ssl/computer.key, readable only to root. Also, your "
"account certificate and key must be placed respectively in /etc/opt/slapos/"
"ssl/account.crt and /etc/opt/slapos/ssl/account.key."
msgstr ""
#. Type: string
#. Description
#: ../templates:4001
msgid "SlapOS computer ID:"
msgstr ""
#. Type: string
#. Description
#: ../templates:4001
msgid "Please specify a unique identifier for this SlapOS node."
msgstr ""
#. Type: string
#. Description
#: ../templates:5001
msgid "Number of Computer Partitions on this computer:"
msgstr ""
#. Type: string
#. Description
#: ../templates:5001
msgid ""
"A Computer Partition (CP) is an instance of a Software Release (SR). You can "
"now define how many instances will be available on this computer."
msgstr ""
#. Type: string
#. Description
#: ../templates:5001
msgid ""
"Note that the Software Releases will be stored in /opt/slapgrid/, whereas "
"the Computer Partition will be stored in /srv/slapgrid/."
msgstr ""
#. Type: string
#. Description
#: ../templates:6001
msgid "Local IPv4 network to be used for Computer Partitions:"
msgstr ""
#. Type: string
#. Description
#: ../templates:6001
msgid ""
"Every Computer Partition must have an address on the same IPv4 network. "
"Please specify a network in CIDR notation (e.g.: 192.0.2.0/24)."
msgstr ""
#!/bin/sh
set -e
mkdir /opt/slapos/pki
##DEBHELPER#
#. /usr/share/debconf/confmodule
#
#
#
## If user don't want to, it will go throw normal setup
#if [ -f /etc/opt/slapos/shell_conf ]; then
#
# rm -f /etc/opt/slapos/shell_conf
# CONFIG_FILE=/etc/opt/slapos/slapos.cfg
#
# if [ ! -f "$CONFIG_FILE" ]; then
# NEW_CONFIG_FILE=$CONFIG_FILE
# else
# NEW_CONFIG_FILE=/etc/opt/slapos/slapos.cfg.dpkg-new
# fi
#
# echo "# Never edit this file by hand as it has been automatically generated by
## debconf. You can change the settings at any time by running:
## ``dpkg-reconfigure -pmedium slapos-node''" > $NEW_CONFIG_FILE
#
# cat < /usr/share/doc/slapos-node/examples/slapos.cfg >> $NEW_CONFIG_FILE
#
# db_get slapos-node/master_url
# MASTER_URL="$RET"
# WITH_HTTPS=$(echo "$MASTER_URL" | grep -q "^https://" && echo true || echo false)
#
# db_get slapos-node/computer_id
# COMPUTER_ID="$RET"
#
# sed -e "s#^\s*master_url\s*=.*#master_url = $MASTER_URL#" \
# -e "s#^\s*computer_id\s*=.*#computer_id = $COMPUTER_ID#" \
# -i $NEW_CONFIG_FILE
#
## Handle HTTPS URLs by just commenting/uncommenting the relevant lines
# if $WITH_HTTPS; then
# sed -i 's/^\s*#\+\s*\(key_file\|cert_file\|certificate_repository_path\)/\1/' \
# $NEW_CONFIG_FILE
#
# # Renamed files
# test -f /etc/opt/slapos/ssl/slapos.crt && \
# mv /etc/opt/slapos/ssl/slapos.crt /etc/opt/slapos/ssl/computer.crt
# test -f /etc/opt/slapos/ssl/slapos.key && \
# mv /etc/opt/slapos/ssl/slapos.key /etc/opt/slapos/ssl/computer.key
# else
# sed -i 's/^\s*[^#]*\s*\(key_file\|cert_file\|certificate_repository_path\)/#\1/' \
# $NEW_CONFIG_FILE
# fi
#
# db_get slapos-node/partition_amount
# PARTITION_AMOUNT="$RET"
#
# db_get slapos-node/ipv4_local_network
# IPV4_LOCAL_NETWORK="$RET"
#
# sed -e "s#^\s*partition_amount\s*=.*#partition_amount = $PARTITION_AMOUNT#" \
# -e "s#^\s*ipv4_local_network\s*=.*#ipv4_local_network = $IPV4_LOCAL_NETWORK#" \
# -i $NEW_CONFIG_FILE
#
# if [ "$CONFIG_FILE" != "$NEW_CONFIG_FILE" ]; then
# ucfr slapos-node $CONFIG_FILE
# ucf --debconf-ok --three-way $NEW_CONFIG_FILE $CONFIG_FILE
# rm -f $NEW_CONFIG_FILE
# fi
#
#fi
exit 0
#!/bin/sh
set -e
. /usr/share/debconf/confmodule
case "$1" in
purge)
ucf --purge /etc/opt/slapos/slapos.cfg
rm -rf /var/opt/slapos/ /srv/slapgrid/ /opt/slapgrid/ \
/etc/opt/slapos/ /opt/slapos/
;;
esac
#DEBHELPER#
exit 0
#!/bin/sh
set -e
. /usr/share/debconf/confmodule
case "$1" in
# Delete completely /opt/slapos directory as Python egg directory names
# include their versions (failed-upgrade is just there for old-prerm)
upgrade|failed-upgrade)
rm -rf /opt/slapos
;;
esac
#DEBHELPER#
exit 0
#!/usr/bin/make -f
# Sample debian/rules that uses debhelper.
# GNU copyright 1997 to 1999 by Joey Hess.
# Uncomment this to turn on verbose mode.
export DH_VERBOSE=1
# This is the debhelper compatibility version to use.
export DH_COMPAT=4
CFLAGS = -g
ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
CFLAGS += -O0
else
CFLAGS += -O2
endif
build: build-stamp
build-stamp:
dh_testdir
# Add here commands to compile the package.
make
# --- end custom part for compiling
touch build-stamp
clean:
dh_testdir
dh_testroot
rm -f build-stamp
# Add here commands to clean up after the build process
# --- end custom part for cleaning up
dh_clean
install: build
dh_testdir
dh_testroot
dh_clean -k
dh_installdirs
# Add here commands to install the package
# The DESTDIR Has To Be Exactly /usr/src/packages/BUILD/debian/<nameOfPackage>
dh_auto_install --TARGET_DIRECTORY=/opt/slapos
# --- end custom part for installing
# Build architecture-independent files here.
binary-indep: build install
# We have nothing to do by default.
# Build architecture-dependent files here.
binary-arch: build install
dh_testdir
dh_testroot
# dh_installdebconf
dh_installdocs
dh_installexamples
dh_installmenu
# dh_installlogrotate
# dh_installemacsen
# dh_installpam
# dh_installmime
dh_installinit
dh_installcron
dh_installman
dh_installinfo
# dh_undocumented
dh_installchangelogs
dh_link
dh_strip
dh_compress
dh_fixperms
dh_makeshlibs -n
dh_installdeb
# dh_perl
dh_shlibdeps
dh_gencontrol
dh_md5sums
dh_builddeb -- -Zlzma -z9
binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install
\ No newline at end of file
#! /bin/sh
### BEGIN INIT INFO
# Provides: slapos-node
# Required-Start: $remote_fs $network
# Required-Stop: $remote_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Initiate SlapOs
# Description: Check connectivity and run slapformat
### END INIT INFO
##############################################################################
#
# Copyright (c) 2010 Vifib SARL and Contributors. All Rights Reserved.
#
# WARNING: This program as such is intended to be used by professional
# programmers who take the whole responsibility of assessing all potential
# consequences resulting from its eventual inadequacies and bugs
# End users who are looking for a ready-to-use solution with commercial
# guarantees and support are strongly advised to contract a Free Software
# Service Company
#
# This program is Free Software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 3
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
##############################################################################
# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="Launching slapformat on start"
NAME=slapos-start
DAEMON=/usr/sbin/$NAME
DAEMON_ARGS=""
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0
# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
# and status_of_proc is working.
. /lib/lsb/init-functions
#
# Function that starts the daemon/service
#
do_start()
{
# Return
# 0 if daemon has been started
# 1 if daemon was already running
# 2 if daemon could not be started
start-stop-daemon --start --background --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
|| return 1
start-stop-daemon --start --background --quiet --pidfile $PIDFILE --exec $DAEMON -- \
$DAEMON_ARGS \
|| return 2
# Add code here, if necessary, that waits for the process to be ready
# to handle requests from services started subsequently which depend
# on this one. As a last resort, sleep for some time.
}
#
# Function that stops the daemon/service
#
do_stop()
{
# Return
# 0 if daemon has been stopped
# 1 if daemon was already stopped
# 2 if daemon could not be stopped
# other if a failure occurred
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
RETVAL="$?"
[ "$RETVAL" = 2 ] && return 2
# Wait for children to finish too if this is a daemon that forks
# and if the daemon is only ever run from this initscript.
# If the above conditions are not satisfied then add some other code
# that waits for the process to drop all resources that could be
# needed by services started subsequently. A last resort is to
# sleep for some time.
start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
[ "$?" = 2 ] && return 2
# Many daemons don't delete their pidfiles when they exit.
rm -f $PIDFILE
return "$RETVAL"
}
#
# Function that sends a SIGHUP to the daemon/service
#
do_reload() {
#
# If the daemon can reload its configuration without
# restarting (for example, when it is sent a SIGHUP),
# then implement that here.
#
start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
return 0
}
case "$1" in
start)
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
do_start
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
stop)
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
do_stop
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
status)
status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
;;
#reload|force-reload)
#
# If do_reload() is not implemented then leave this commented out
# and leave 'force-reload' as an alias for 'restart'.
#
#log_daemon_msg "Reloading $DESC" "$NAME"
#do_reload
#log_end_msg $?
#;;
restart|force-reload)
#
# If the "reload" option is implemented then remove the
# 'force-reload' alias
#
log_daemon_msg "Restarting $DESC" "$NAME"
do_stop
case "$?" in
0|1)
do_start
case "$?" in
0) log_end_msg 0 ;;
1) log_end_msg 1 ;; # Old process is still running
*) log_end_msg 1 ;; # Failed to start
esac
;;
*)
# Failed to stop
log_end_msg 1
;;
esac
;;
*)
#echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
exit 3
;;
esac
:
[slapos]
software_root = /opt/slapgrid
instance_root = /srv/slapgrid
master_url = https://slap.vifib.com/
# Replace computer_id by the unique identifier of your computer on vifib.net,
# starting by COMP-
computer_id = COMP-12345
key_file = /etc/opt/slapos/ssl/computer.key
cert_file = /etc/opt/slapos/ssl/computer.crt
certificate_repository_path = /etc/opt/slapos/ssl/partition_pki
[slapformat]
# Replace by your network interface like eth0, eth1, slapbr0...
interface_name = interfacename
create_tap = false
partition_amount = 10
computer_xml = /opt/slapos/slapos.xml
log_file = /opt/slapos/slapformat.log
partition_base_name = slappart
user_base_name = slapuser
tap_base_name = slaptap
# You can choose any other local network which does not conflict with your
# current machine configuration
ipv4_local_network = 10.0.0.0/16
# Uncomment and change this if you are using an IPv6 tunnel (like VPN, gogoc,
# tunnelbroker.net)
# ipv6_interface = tapVPN
[networkcache]
# Define options for binary cache, used to download already compiled software.
download-binary-cache-url = http://www.shacache.org/shacache
download-cache-url = https://www.shacache.org/shacache
download-binary-dir-url = http://www.shacache.org/shadir
# List of signatures of uploaders we trust:
# Romain Courteaud
# Sebastien Robin
# Kazuhiko Shiozaki
# Cedric de Saint Martin
# Yingjie Xu
# Gabriel Monnerat
# Łukasz Nowak
signature-certificate-list =
-----BEGIN CERTIFICATE-----
MIIB4DCCAUkCADANBgkqhkiG9w0BAQsFADA5MQswCQYDVQQGEwJGUjEZMBcGA1UE
CBMQRGVmYXVsdCBQcm92aW5jZTEPMA0GA1UEChMGTmV4ZWRpMB4XDTExMDkxNTA5
MDAwMloXDTEyMDkxNTA5MDAwMlowOTELMAkGA1UEBhMCRlIxGTAXBgNVBAgTEERl
ZmF1bHQgUHJvdmluY2UxDzANBgNVBAoTBk5leGVkaTCBnzANBgkqhkiG9w0BAQEF
AAOBjQAwgYkCgYEApYZv6OstoqNzxG1KI6iE5U4Ts2Xx9lgLeUGAMyfJLyMmRLhw
boKOyJ9Xke4dncoBAyNPokUR6iWOcnPHtMvNOsBFZ2f7VA28em3+E1JRYdeNUEtX
Z0s3HjcouaNAnPfjFTXHYj4um1wOw2cURSPuU5dpzKBbV+/QCb5DLheynisCAwEA
ATANBgkqhkiG9w0BAQsFAAOBgQBCZLbTVdrw3RZlVVMFezSHrhBYKAukTwZrNmJX
mHqi2tN8tNo6FX+wmxUUAf3e8R2Ymbdbn2bfbPpcKQ2fG7PuKGvhwMG3BlF9paEC
q7jdfWO18Zp/BG7tagz0jmmC4y/8akzHsVlruo2+2du2freE8dK746uoMlXlP93g
QUUGLQ==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIB8jCCAVugAwIBAgIJAPu2zchZ2BxoMA0GCSqGSIb3DQEBBQUAMBIxEDAOBgNV
BAMMB3RzeGRldjMwHhcNMTExMDE0MTIxNjIzWhcNMTIxMDEzMTIxNjIzWjASMRAw
DgYDVQQDDAd0c3hkZXYzMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrPbh+
YGmo6mWmhVb1vTqX0BbeU0jCTB8TK3i6ep3tzSw2rkUGSx3niXn9LNTFNcIn3MZN
XHqbb4AS2Zxyk/2tr3939qqOrS4YRCtXBwTCuFY6r+a7pZsjiTNddPsEhuj4lEnR
L8Ax5mmzoi9nE+hiPSwqjRwWRU1+182rzXmN4QIDAQABo1AwTjAdBgNVHQ4EFgQU
/4XXREzqBbBNJvX5gU8tLWxZaeQwHwYDVR0jBBgwFoAU/4XXREzqBbBNJvX5gU8t
LWxZaeQwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQA07q/rKoE7fAda
FED57/SR00OvY9wLlFEF2QJ5OLu+O33YUXDDbGpfUSF9R8l0g9dix1JbWK9nQ6Yd
R/KCo6D0sw0ZgeQv1aUXbl/xJ9k4jlTxmWbPeiiPZEqU1W9wN5lkGuLxV4CEGTKU
hJA/yXa1wbwIPGvX3tVKdOEWPRXZLg==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIB7jCCAVegAwIBAgIJAJWA0jQ4o9DGMA0GCSqGSIb3DQEBBQUAMA8xDTALBgNV
BAMMBHg2MXMwIBcNMTExMTI0MTAyNDQzWhgPMjExMTEwMzExMDI0NDNaMA8xDTAL
BgNVBAMMBHg2MXMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANdJNiFsRlkH
vq2kHP2zdxEyzPAWZH3CQ3Myb3F8hERXTIFSUqntPXDKXDb7Y/laqjMXdj+vptKk
3Q36J+8VnJbSwjGwmEG6tym9qMSGIPPNw1JXY1R29eF3o4aj21o7DHAkhuNc5Tso
67fUSKgvyVnyH4G6ShQUAtghPaAwS0KvAgMBAAGjUDBOMB0GA1UdDgQWBBSjxFUE
RfnTvABRLAa34Ytkhz5vPzAfBgNVHSMEGDAWgBSjxFUERfnTvABRLAa34Ytkhz5v
PzAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBAFLDS7zNhlrQYSQO5KIj
z2RJe3fj4rLPklo3TmP5KLvendG+LErE2cbKPqnhQ2oVoj6u9tWVwo/g03PMrrnL
KrDm39slYD/1KoE5kB4l/p6KVOdeJ4I6xcgu9rnkqqHzDwI4v7e8/D3WZbpiFUsY
vaZhjNYKWQf79l6zXfOvphzJ
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIB9jCCAV+gAwIBAgIJAO4V/jiMoICoMA0GCSqGSIb3DQEBBQUAMBMxETAPBgNV
BAMMCENPTVAtMjMyMCAXDTEyMDIxNjExMTAyM1oYDzIxMTIwMTIzMTExMDIzWjAT
MREwDwYDVQQDDAhDT01QLTIzMjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
wi/3Z8W9pUiegUXIk/AiFDQ0UJ4JFAwjqr+HSRUirlUsHHT+8DzH/hfcTDX1I5BB
D1ADk+ydXjMm3OZrQcXjn29OUfM5C+g+oqeMnYQImN0DDQIOcUyr7AJc4xhvuXQ1
P2pJ5NOd3tbd0kexETa1LVhR6EgBC25LyRBRae76qosCAwEAAaNQME4wHQYDVR0O
BBYEFMDmW9aFy1sKTfCpcRkYnP6zUd1cMB8GA1UdIwQYMBaAFMDmW9aFy1sKTfCp
cRkYnP6zUd1cMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAskbFizHr
b6d3iIyN+wffxz/V9epbKIZVEGJd/6LrTdLiUfJPec7FaxVCWNyKBlCpINBM7cEV
Gn9t8mdVQflNqOlAMkOlUv1ZugCt9rXYQOV7rrEYJBWirn43BOMn9Flp2nibblby
If1a2ZoqHRxoNo2yTmm7TSYRORWVS+vvfjY=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIB9jCCAV+gAwIBAgIJAIlBksrZVkK8MA0GCSqGSIb3DQEBBQUAMBMxETAPBgNV
BAMMCENPTVAtMzU3MCAXDTEyMDEyNjEwNTUyOFoYDzIxMTIwMTAyMTA1NTI4WjAT
MREwDwYDVQQDDAhDT01QLTM1NzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
ts+iGUwi44vtIfwXR8DCnLtHV4ydl0YTK2joJflj0/Ws7mz5BYkxIU4fea/6+VF3
i11nwBgYgxQyjNztgc9u9O71k1W5tU95yO7U7bFdYd5uxYA9/22fjObaTQoC4Nc9
mTu6r/VHyJ1yRsunBZXvnk/XaKp7gGE9vNEyJvPn2bkCAwEAAaNQME4wHQYDVR0O
BBYEFKuGIYu8+6aEkTVg62BRYaD11PILMB8GA1UdIwQYMBaAFKuGIYu8+6aEkTVg
62BRYaD11PILMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAMoTRpBxK
YLEZJbofF7gSrRIcrlUJYXfTfw1QUBOKkGFFDsiJpEg4y5pUk1s5Jq9K3SDzNq/W
it1oYjOhuGg3al8OOeKFrU6nvNTF1BAvJCl0tr3POai5yXyN5jlK/zPfypmQYxE+
TaqQSGBJPVXYt6lrq/PRD9ciZgKLOwEqK8w=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIB9jCCAV+gAwIBAgIJAPHoWu90gbsgMA0GCSqGSIb3DQEBBQUAMBQxEjAQBgNV
BAMMCXZpZmlibm9kZTAeFw0xMjAzMTkyMzIwNTVaFw0xMzAzMTkyMzIwNTVaMBQx
EjAQBgNVBAMMCXZpZmlibm9kZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
ozBijpO8PS5RTeKTzA90vi9ezvv4vVjNaguqT4UwP9+O1+i6yq1Y2W5zZxw/Klbn
oudyNzie3/wqs9VfPmcyU9ajFzBv/Tobm3obmOqBN0GSYs5fyGw+O9G3//6ZEhf0
NinwdKmrRX+d0P5bHewadZWIvlmOupcnVJmkks852BECAwEAAaNQME4wHQYDVR0O
BBYEFF9EtgfZZs8L2ZxBJxSiY6eTsTEwMB8GA1UdIwQYMBaAFF9EtgfZZs8L2ZxB
JxSiY6eTsTEwMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAc43YTfc6
baSemaMAc/jz8LNLhRE5dLfLOcRSoHda8y0lOrfe4lHT6yP5l8uyWAzLW+g6s3DA
Yme/bhX0g51BmI6gjKJo5DoPtiXk/Y9lxwD3p7PWi+RhN+AZQ5rpo8UfwnnN059n
yDuimQfvJjBFMVrdn9iP6SfMjxKaGk6gVmI=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIB9jCCAV+gAwIBAgIJAMNZBmoIOXPBMA0GCSqGSIb3DQEBBQUAMBMxETAPBgNV
BAMMCENPTVAtMTMyMCAXDTEyMDUwMjEyMDQyNloYDzIxMTIwNDA4MTIwNDI2WjAT
MREwDwYDVQQDDAhDT01QLTEzMjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
6peZQt1sAmMAmSG9BVxxcXm8x15kE9iAplmANYNQ7z2YO57c10jDtlYlwVfi/rct
xNUOKQtc8UQtV/fJWP0QT0GITdRz5X/TkWiojiFgkopza9/b1hXs5rltYByUGLhg
7JZ9dZGBihzPfn6U8ESAKiJzQP8Hyz/o81FPfuHCftsCAwEAAaNQME4wHQYDVR0O
BBYEFNuxsc77Z6/JSKPoyloHNm9zF9yqMB8GA1UdIwQYMBaAFNuxsc77Z6/JSKPo
yloHNm9zF9yqMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAl4hBaJy1
cgiNV2+Z5oNTrHgmzWvSY4duECOTBxeuIOnhql3vLlaQmo0p8Z4c13kTZq2s3nhd
Loe5mIHsjRVKvzB6SvIaFUYq/EzmHnqNdpIGkT/Mj7r/iUs61btTcGUCLsUiUeci
Vd0Ozh79JSRpkrdI8R/NRQ2XPHAo+29TT70=
-----END CERTIFICATE-----
# List of URL(s) which shouldn't be installed from binary cache, separated by
# commas. Any URL beginning by a blacklisted URL will be blacklisted as well.
binary-cache-url-blacklist =
http://git.erp5.org/gitweb/slapos.git/blob_plain/HEAD
http://git.erp5.org/gitweb/slapos.core.git/blob_plain/refs/heads
# These templates have been reviewed by the debian-l10n-english
# team
#
# If modifications/additions/rewording are needed, please ask
# debian-l10n-english@lists.debian.org for advice.
#
# Even minor modifications require translation updates and such
# changes should be coordinated with translators and reviewers.
Template: slapos-node/master_url
Type: string
_Description: SlapOS master node URL:
Template: slapos-node/master_url_with_ssl_note
Type: note
_Description: Master node key and certificate mandatory
You used an HTTPS URL for the SlapOS master node, so the Computer certificate
must be placed in /etc/opt/slapos/ssl/computer.crt, and the key in
/etc/opt/slapos/ssl/computer.key, readable only to root. Also, your account
certificate and key must be placed respectively in
/etc/opt/slapos/ssl/account.crt and /etc/opt/slapos/ssl/account.key.
Template: slapos-node/computer_id
Type: string
_Description: SlapOS computer ID:
Please specify a unique identifier for this SlapOS node.
Template: slapos-node/partition_amount
Type: string
_Description: Number of Computer Partitions on this computer:
A Computer Partition (CP) is an instance of a Software Release
(SR). You can now define how many instances will be available on this
computer.
.
Note that the Software Releases will be stored in
/opt/slapgrid/, whereas the Computer Partition will be
stored in /srv/slapgrid/.
Template: slapos-node/ipv4_local_network
Type: string
Default: 10.0.0.0/16
_Description: Local IPv4 network to be used for Computer Partitions:
Every Computer Partition must have an address on the same IPv4 network.
Please specify a network in CIDR notation (e.g.: 192.0.2.0/24).
#!/bin/bash
VERSION=%VERSION%
RECIPE_VERSION=%RECIPE_VERSION%
TARGET_DIRECTORY=/opt/slapos
BUILD_ROOT_DIRECTORY="$(pwd)/build"
BUILD_DIRECTORY=$BUILD_ROOT_DIRECTORY$TARGET_DIRECTORY
BOOTSTRAP_URL='http://svn.zope.org/*checkout*/zc.buildout/trunk/bootstrap/bootstrap.py?rev=127518'
#./configure --prefix=/opt/slapos/parts/<NAME>
echo "Preparing source tarball (recipe version: $RECIPE_VERSION)"
echo " Build Directory: $BUILD_DIRECTORY "
echo " Buildroot Directory: $BUILD_ROOT_DIRECTORY "
mkdir -p $BUILD_DIRECTORY
mkdir $BUILD_DIRECTORY/extends-cache
mkdir $BUILD_DIRECTORY/download-cache
set -e
echo "$BUILD_ROOT_DIRECTORY" > ./original_directory
sed "s/\%RECIPE_VERSION\%/$RECIPE_VERSION/g;s|\%PATCHES_DIRECTORY\%|$PATCHES_DIRECTORY|g;s|\%TARGET_DIRECTORY\%|$TARGET_DIRECTORY|g;s|\%BUILD_ROOT_DIRECTORY\%|$BUILD_ROOT_DIRECTORY|g;s|\%BUILD_DIRECTORY\%|$BUILD_DIRECTORY|g" buildout.cfg.in > $BUILD_DIRECTORY/buildout.cfg
# Build first time to get download-cache and extends-cache ready
cd $BUILD_DIRECTORY
wget $BOOTSTRAP_URL -O bootstrap.py
python -S bootstrap.py #&& \
./bin/buildout
cd $BUILD_ROOT_DIRECTORY/..
# remove all files from build keeping only caches
echo "Deleting unecessary files to reduce source tarball size"
# TODO: Figure out why there is no write permission even for
# the owner
chmod -R u+w $BUILD_DIRECTORY
# Buildout files
rm -rfv $BUILD_DIRECTORY/downloads
rm -fv $BUILD_DIRECTORY/bootstrap.py $BUILD_DIRECTORY/buildout.cfg \
$BUILD_DIRECTORY/.installed.cfg \
$BUILD_DIRECTORY/environment.*
rm -rfv $BUILD_DIRECTORY/parts/
rm -rfv $BUILD_DIRECTORY/eggs/
rm -rfv $BUILD_DIRECTORY/develop-eggs/
rm -rfv $BUILD_DIRECTORY/bin
# Removing empty directories
find $BUILD_DIRECTORY -type d -empty -prune -exec rmdir '{}' ';'
# Prepare buildout
sed "s/\%RECIPE_VERSION\%/$RECIPE_VERSION/g;s|\%PATCHES_DIRECTORY\%|$PATCHES_DIRECTORY|g;s|\%TARGET_DIRECTORY\%|$TARGET_DIRECTORY|g;s|\%BUILD_ROOT_DIRECTORY\%|$BUILD_ROOT_DIRECTORY|g;s|\%BUILD_DIRECTORY\%|$BUILD_DIRECTORY|g" $BUILD_ROOT_DIRECTORY/../buildout.cfg.in > $BUILD_DIRECTORY/buildout.cfg
cd $BUILD_DIRECTORY && \
wget $BOOTSTRAP_URL -O bootstrap.py && \
python -S bootstrap.py
# Removing Python byte-compiled files (as it will be done upon
# package installation) and static libraries
find $BUILD_DIRECTORY -regextype posix-extended -type f \
-iregex '.*/*\.(py[co]|[l]?a|exe|bat)$$' -exec rm -fv '{}' ';'
Format: 1.0
Source: slapos-node
Binary: slapos-node
Architecture: any
Version: %VERSION%+%RECIPE_VERSION%+0-1
Maintainer: Arnaud Fontaine <arnaud.fontaine@nexedi.com>
Homepage: http://www.slapos.org
Standards-Version: 3.9.2
Build-Depends: debhelper (>= 4.1.16), chrpath, po-debconf, wget, python, python-setuptools
Files:
1c2803e4693c74042985d753c9c3ba53 73736102 slapos-node_%VERSION%+%RECIPE_VERSION%+0.orig.tar.gz
1c2803e4693c74042985d753c9c3ba53 6102 slapos-node_%VERSION%+%RECIPE_VERSION%+0-1.diff.tar.gz
\ No newline at end of file
##############################################################################
#
# Copyright (c) 2010 Vifib SARL and Contributors. All Rights Reserved.
#
# WARNING: This program as such is intended to be used by professional
# programmers who take the whole responsibility of assessing all potential
# consequences resulting from its eventual inadequacies and bugs
# End users who are looking for a ready-to-use solution with commercial
# guarantees and support are strongly adviced to contract a Free Software
# Service Company
#
# This program is Free Software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 3
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
##############################################################################
%define slapversion %RECIPE_VERSION%
%define version %VERSION%
%define unmangled_version %VERSION%
%define unmangled_version %VERSION%
%define release 1
Summary:Client-side to deploy applications with SlapOS
Name: slapos.node
Version:%{slapversion}
Release:1
License:GPL
Group: Application/Network
Source0: slapos-node_%{unmangled_version}+%{slapversion}+0.tar.gz
URL: http://www.slapos.org/
Vendor: Vifib
Packager: Arnaud Fontaine <arnaud.fontaine@nexedi.com>, Cédric Le Ninivin <cedric.leninivin@tiolive.com>
%if 0%{?suse_version} == 1210
BuildRequires: gcc-c++, make, patch, wget, python, chrpath, python-distribute, systemd
Requires: bridge-utils, python, gcc-c++, make, patch, wget, python-distribute, systemd
%else
BuildRequires: gcc-c++, make, patch, wget, python, chrpath, python-setuptools
Requires: bridge-utils, python, gcc-c++, make, patch, wget, python-setuptools
%endif
AutoReqProv: no
%description
Client-side to deploy applications with SlapOS
SlapOS allows one to turn any application into SaaS (Service as a System),
PaaS (Platform as a Service) or IaaS (Infrastructure as a Service) without
loosing your freedom. SlapOS defines two types of servers: SlapOS server and
SlapOS node.
.
This package contains libraries and tools to deploy a node.
.
Slapformat prepares a SlapOS node before running slapgrid. It then generates
a report and sends the information to the configured SlapOS master.
.
Slapgrid allows you to easily deploy instances of software based on buildout
profiles.
%prep
rm -rf $RPM_BUILD_DIR/slapos-node_%{unmangled_version}+%{slapversion}+0
zcat $RPM_SOURCE_DIR/slapos-node_%{unmangled_version}+%{slapversion}+0.tar.gz | tar -xvf -
%build
cd $RPM_BUILD_DIR/slapos-node_%{unmangled_version}+%{slapversion}+0
make
%install
cd $RPM_BUILD_DIR/slapos-node_%{unmangled_version}+%{slapversion}+0/slapos/
make DESTDIR=$RPM_BUILD_ROOT install
mkdir -p $RPM_BUILD_ROOT/etc/cron.d/
cp $RPM_BUILD_DIR/slapos-node_%{unmangled_version}+%{slapversion}+0/template/slapos-node.cron.d $RPM_BUILD_ROOT/etc/cron.d/slapos-node
mkdir -p $RPM_BUILD_ROOT/etc/systemd/system/
cp $RPM_BUILD_DIR/slapos-node_%{unmangled_version}+%{slapversion}+0/template/slapos-node.service %{buildroot}/etc/systemd/system/
%files
/
%defattr(-,root,root)
%post
echo """To generate slapos configuration run '#slapos node register'"""
if [ "$(id -u)" = "0" ]; then
systemctl enable slapos-node.service
fi
%preun
if [ "$(id -u)" = "0" ]; then
systemctl stop slapos-node.service
fi
%postun
if [ "$(id -u)" = "0" ]; then
systemctl restart slapos-node.service
fi
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment