[puppet] Added nailgun module
This commit is contained in:
committed by
default
parent
4afc4e4bbe
commit
58858c7f0f
3
.gitmodules
vendored
3
.gitmodules
vendored
@@ -4,9 +4,6 @@
|
||||
[submodule "puppet/mysql"]
|
||||
path = puppet/mysql
|
||||
url = git@github.com:kozhukalov/puppetlabs-mysql.git
|
||||
[submodule "puppet/mcollective"]
|
||||
path = puppet/mcollective
|
||||
url = gitolite@gitolite.mirantis.com:fuel/deployment/puppet/mcollective
|
||||
[submodule "puppet/cobbler"]
|
||||
path = puppet/cobbler
|
||||
url = gitolite@gitolite.mirantis.com:fuel/deployment/puppet/cobbler.git
|
||||
|
||||
55
iso/ks.cfg
55
iso/ks.cfg
@@ -17,14 +17,19 @@ autopart
|
||||
#logvol swap --fstype swap --name=swap --vgname=Nailgun --size=512 --grow --maxsize=4096
|
||||
|
||||
%packages --nobase --excludedocs
|
||||
mcollective
|
||||
@Core
|
||||
wget
|
||||
curl
|
||||
crontabs
|
||||
cronie
|
||||
puppet
|
||||
man
|
||||
yum
|
||||
|
||||
%post --log=/root/post-log
|
||||
function setconf {
|
||||
echo
|
||||
echo -n "Enter hostname: "; read hostname
|
||||
echo -n "Enter hostname (FQDN): "; read hostname
|
||||
echo -n "Enter device name: "; read device
|
||||
echo -n "Enter ip: "; read ip
|
||||
echo -n "Enter netmask: "; read netmask
|
||||
@@ -82,7 +87,7 @@ function save_cfg {
|
||||
|
||||
set -- `cat /proc/cmdline`
|
||||
for I in $*; do case "$I" in *=*) eval $I;; esac ; done
|
||||
hostname="nailgun"
|
||||
hostname="nailgun.mirantis.com"
|
||||
ip=$ip
|
||||
netmask=$netmask
|
||||
gw=$gw
|
||||
@@ -118,27 +123,51 @@ mkdir /tmp/cdrom
|
||||
mount /dev/cdrom /tmp/cdrom
|
||||
|
||||
# Copying Repo to the nailgun /var/www directory
|
||||
repodir="/var/www"
|
||||
mkdir -p ${repodir}/centos
|
||||
cp -r /tmp/cdrom/images ${repodir}/centos
|
||||
cp -r /tmp/cdrom/isolinux ${repodir}/centos
|
||||
cp -r /tmp/cdrom/repodata ${repodir}/centos
|
||||
cp -r /tmp/cdrom/Packages ${repodir}/centos
|
||||
repodir="/var/www/nailgun"
|
||||
mkdir -p ${repodir}/centos/6.3/nailgun/x86_64
|
||||
cp -r /tmp/cdrom/images ${repodir}/centos/6.3/nailgun/x86_64
|
||||
cp -r /tmp/cdrom/isolinux ${repodir}/centos/6.3/nailgun/x86_64
|
||||
cp -r /tmp/cdrom/repodata ${repodir}/centos/6.3/nailgun/x86_64
|
||||
cp -r /tmp/cdrom/Packages ${repodir}/centos/6.3/nailgun/x86_64
|
||||
|
||||
# Copying centos .ISO to the nailgun directory
|
||||
cp /tmp/cdrom/netinstall/*.iso ${repodir}/nailgun
|
||||
cp -r /tmp/cdrom/iso ${repodir}
|
||||
|
||||
# Copying eggs/gems to the nailgun directory
|
||||
cp -r /tmp/cdrom/eggs ${repodir}/nailgun
|
||||
cp -r /tmp/cdrom/gems ${repodir}/nailgun
|
||||
cp -r /tmp/cdrom/eggs ${repodir}
|
||||
cp -r /tmp/cdrom/gems ${repodir}
|
||||
|
||||
# Copying rabbitmq plugins
|
||||
cp -r /tmp/rabbitmq-plugins ${repodir}
|
||||
|
||||
# Copying bootstrap image
|
||||
mkdir -p ${repodir}/bootstrap
|
||||
cp -r /tmp/cdrom/bootstrap/initramfs.img ${repodir}/bootstrap
|
||||
cp -r /tmp/cdrom/bootstrap/linux ${repodir}/bootstrap
|
||||
|
||||
mkdir -p /root/.ssh
|
||||
chmod 700 /root/.ssh
|
||||
cp /tmp/cdrom/bootstrap/bootstrap.rsa /root/.ssh
|
||||
|
||||
# Copying puppet manifests
|
||||
cp -r /tmp/cdrom/puppet/* /etc/puppet/modules/
|
||||
|
||||
# Prepare local repository specification
|
||||
rm /etc/yum.repos.d/CentOS*.repo
|
||||
cat > /etc/yum.repos.d/nailgun.repo << EOF
|
||||
[nailgun]
|
||||
name=Nailgun Local Repo
|
||||
baseurl=file:/var/www/nailgun/centos/6.3/nailgun/x86_64
|
||||
gpgcheck=0
|
||||
EOF
|
||||
|
||||
# Disable GSSAPI in ssh server config
|
||||
sed -i -e "/^\s*GSSAPICleanupCredentials yes/d" -e "/^\s*GSSAPIAuthentication yes/d" /etc/ssh/sshd_config
|
||||
|
||||
# Copying bootstrap_admin_node.sh , chmod it and adding to the rc.local to run it once
|
||||
cp /tmp/cdrom/bootstrap_admin_node.sh /tmp
|
||||
chmod 0777 /tmp/bootstrap_admin_node.sh
|
||||
echo "/tmp/bootstrap_admin_node.sh" >> /etc/rc.local
|
||||
#echo "/tmp/bootstrap_admin_node.sh" >> /etc/rc.local
|
||||
|
||||
# Unmounting cd to succesfull eject
|
||||
umount -f /dev/cdrom
|
||||
|
||||
@@ -35,7 +35,7 @@ $(addprefix $(ISOROOT)/isolinux/,$(ISOLINUX_FILES)):
|
||||
|
||||
$(ISOROOT)/isolinux/isolinux.cfg: iso/isolinux/isolinux.cfg ; $(ACTION.COPY)
|
||||
|
||||
$(ISOROOT)/netinstall/$(NETINSTALL_ISO): $(CENTOS_ISO_DIR)/$(NETINSTALL_ISO)
|
||||
$(ISOROOT)/iso/$(NETINSTALL_ISO): $(CENTOS_ISO_DIR)/$(NETINSTALL_ISO)
|
||||
@mkdir -p $(@D)
|
||||
cp $(CENTOS_ISO_DIR)/$(@F) $(@D)
|
||||
|
||||
@@ -52,21 +52,17 @@ $(addprefix $(ISOROOT)/EFI/BOOT/,$(EFI_FILES)):
|
||||
@mkdir -p $(@D)
|
||||
cp $(CENTOS_REPO_DIR)EFI/BOOT/$(@F) $(@D)
|
||||
|
||||
$(addprefix $(ISOROOT)/rabbitmq-plugins/,$(RABBITMQ_PLUGINS)):
|
||||
$(addprefix $(ISOROOT)/rabbitmq-plugins/v$(RABBITMQ_VERSION)/,$(RABBITMQ_PLUGINS)):
|
||||
@mkdir -p $(@D)
|
||||
wget -O $@ $(RABBITMQ_PLUGINS_URL)/$(@F)
|
||||
|
||||
$/isoroot-prepare.done:\
|
||||
$(ISOROOT)/netinstall/$(NETINSTALL_ISO) \
|
||||
$(ISOROOT)/iso/$(NETINSTALL_ISO) \
|
||||
$(addprefix $(ISOROOT)/images/,$(IMAGES_FILES)) \
|
||||
$(addprefix $(ISOROOT)/EFI/BOOT/,$(EFI_FILES)) \
|
||||
$(addprefix $(ISOROOT)/,$(GPGFILES)) \
|
||||
$(addprefix $(ISOROOT)/rabbitmq-plugins/,$(RABBITMQ_PLUGINS)) \
|
||||
$(addprefix $(ISOROOT)/rabbitmq-plugins/v$(RABBITMQ_VERSION)/,$(RABBITMQ_PLUGINS)) \
|
||||
$(ACTION.TOUCH)
|
||||
|
||||
$(addprefix $(ISOROOT)/,$(GPGFILES)):
|
||||
wget -O $@ $(CENTOS_GPG)/$(@F)
|
||||
|
||||
$/isoroot-bootstrap.done: \
|
||||
$(ISOROOT)/bootstrap/bootstrap.rsa \
|
||||
$(addprefix $(ISOROOT)/bootstrap/, $(BOOTSTRAP_FILES))
|
||||
@@ -115,12 +111,9 @@ $/isoroot.done: \
|
||||
$(ISOROOT)/bootstrap_admin_node.sh \
|
||||
$/isoroot-eggs.done \
|
||||
$/isoroot-gems.done \
|
||||
$(addprefix $(ISOROOT)/sync/,$(call find-files,iso/sync)) \
|
||||
$(addprefix $(ISOROOT)/puppet/,$(call find-files,puppet))
|
||||
$(ACTION.TOUCH)
|
||||
|
||||
$(ISOROOT)/sync/%: iso/sync/% ; $(ACTION.COPY)
|
||||
|
||||
$(ISOROOT)/ks.cfg: iso/ks.cfg ; $(ACTION.COPY)
|
||||
$(ISOROOT)/bootstrap_admin_node.sh: iso/bootstrap_admin_node.sh ; $(ACTION.COPY)
|
||||
$(ISOROOT)/.discinfo: iso/.discinfo ; $(ACTION.COPY)
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
*/5 * * * * root flock -w 0 -o /var/lock/chef-solo.lock -c "apt-get update; /usr/bin/chef-solo -l debug -c /opt/nailgun/solo/solo.rb -j /opt/nailgun/solo/solo.json"
|
||||
@@ -1,22 +0,0 @@
|
||||
#!/bin/sh -e
|
||||
|
||||
nodeip=`/sbin/ifconfig eth0 | perl -wne 's/^\s*inet addr:((\d{1,3}\.){3}\d{1,3}).*$/$1/ && print;'`
|
||||
|
||||
cat > /etc/issue <<EOF
|
||||
Welcome to Nailgun Admin Node (based on Ubuntu 12.04 LTS)
|
||||
|
||||
DEFAULT USERNAME: ubuntu
|
||||
DEFAULT PASSWORD: r00tme
|
||||
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
DO NOT FORGET TO CHANGE DEFAULTS IN ORDER TO PROTECT YOUR SYSTEM
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
||||
TO GET ACCESS TO NAILGUN WEBAPPLICATION GO TO http://${nodeip}:8000
|
||||
EOF
|
||||
|
||||
apt-get update
|
||||
|
||||
flock -w 0 -o /var/lock/chef-solo.lock -c "/usr/bin/chef-solo -l debug -c /opt/nailgun/solo/solo.rb -j /opt/nailgun/solo/solo.json" || true
|
||||
|
||||
exit 0
|
||||
@@ -1,2 +0,0 @@
|
||||
:programname, contains, "chef-solo" /var/log/chef/solo.log
|
||||
:programname, contains, "chef-solo" ~
|
||||
@@ -4,33 +4,20 @@
|
||||
import os
|
||||
import sys
|
||||
import argparse
|
||||
import logging
|
||||
import code
|
||||
import logging
|
||||
|
||||
logging.basicConfig(level="DEBUG")
|
||||
|
||||
import web
|
||||
from sqlalchemy.orm import scoped_session, sessionmaker
|
||||
|
||||
from nailgun.settings import settings
|
||||
here = os.path.abspath(os.path.dirname(__file__))
|
||||
|
||||
settings.update({
|
||||
'STATIC_DIR': os.path.join(here, 'static'),
|
||||
'TEMPLATE_DIR': os.path.join(here, 'static'),
|
||||
'LOGFILE': os.path.join(here, 'nailgun.log'),
|
||||
'DATABASE_ENGINE': 'sqlite:///%s' %
|
||||
os.path.join(here, 'nailgun.sqlite')})
|
||||
|
||||
|
||||
from nailgun.api.handlers import check_client_content_type
|
||||
from nailgun.api.models import engine
|
||||
from nailgun.db import load_db_driver, syncdb
|
||||
from nailgun.db import syncdb
|
||||
from nailgun.unit_test import TestRunner
|
||||
from nailgun.urls import urls
|
||||
from nailgun.logger import Log
|
||||
from nailgun.wsgi import app
|
||||
|
||||
logging.basicConfig(level="DEBUG")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser()
|
||||
@@ -44,12 +31,9 @@ if __name__ == "__main__":
|
||||
'-p', '--port', dest='port', action='store', type=str,
|
||||
help='application port', default='8000'
|
||||
)
|
||||
runwsgi_parser = subparsers.add_parser(
|
||||
'runwsgi', help='run WSGI application'
|
||||
)
|
||||
runwsgi_parser.add_argument(
|
||||
'-p', '--port', dest='port', action='store', type=str,
|
||||
help='application port', default='8000'
|
||||
run_parser.add_argument(
|
||||
'-a', '--address', dest='address', action='store', type=str,
|
||||
help='application address', default='0.0.0.0'
|
||||
)
|
||||
test_parser = subparsers.add_parser(
|
||||
'test', help='run unit tests'
|
||||
@@ -86,32 +70,14 @@ if __name__ == "__main__":
|
||||
logging.info("Done")
|
||||
else:
|
||||
parser.print_help()
|
||||
elif params.action in ("run", "runwsgi"):
|
||||
from nailgun.rpc import threaded
|
||||
import eventlet
|
||||
eventlet.monkey_patch()
|
||||
q = threaded.rpc_queue
|
||||
rpc_thread = threaded.RPCThread()
|
||||
|
||||
if params.action == "run":
|
||||
sys.argv.insert(1, params.port)
|
||||
app.run()
|
||||
else:
|
||||
logging.info("Running WSGI app...")
|
||||
server = web.httpserver.WSGIServer(
|
||||
("0.0.0.0", int(params.port)),
|
||||
app.wsgifunc(Log)
|
||||
)
|
||||
try:
|
||||
rpc_thread.start()
|
||||
server.start()
|
||||
except KeyboardInterrupt:
|
||||
logging.info("Stopping RPC thread...")
|
||||
rpc_thread.running = False
|
||||
logging.info("Stopping WSGI app...")
|
||||
server.stop()
|
||||
logging.info("Done")
|
||||
elif params.action in ("run",):
|
||||
from nailgun.wsgi import appstart
|
||||
settings.update({
|
||||
'LISTEN_PORT': int(params.port),
|
||||
'LISTEN_ADDRESS': params.address})
|
||||
appstart()
|
||||
elif params.action == "shell":
|
||||
from nailgun.api.models import engine
|
||||
orm = scoped_session(sessionmaker(bind=engine))
|
||||
code.interact(local={'orm': orm})
|
||||
orm.commit()
|
||||
|
||||
@@ -10,26 +10,11 @@ class NailgunSettings:
|
||||
self.logger = logging.getLogger(__name__)
|
||||
|
||||
settings_files = []
|
||||
try:
|
||||
self.logger.debug("Looking for settings.yaml package config "
|
||||
self.logger.debug("Looking for settings.yaml package config "
|
||||
"using old style __file__")
|
||||
project_path = os.path.dirname(__file__)
|
||||
project_settings_file = os.path.join(project_path, 'settings.yaml')
|
||||
except:
|
||||
self.logger.error("Error while reading old style settings.yaml "
|
||||
"package config")
|
||||
else:
|
||||
settings_files.append(project_settings_file)
|
||||
|
||||
try:
|
||||
self.logger.debug("Looking for settings.yaml package config "
|
||||
"using setuptools")
|
||||
local_settings_file = resource_filename(__name__, 'settings.yaml')
|
||||
except:
|
||||
self.logger.error("Error while finding old style settings.yaml "
|
||||
"package config")
|
||||
else:
|
||||
settings_files.append(local_settings_file)
|
||||
project_path = os.path.dirname(__file__)
|
||||
project_settings_file = os.path.join(project_path, 'settings.yaml')
|
||||
settings_files.append(project_settings_file)
|
||||
|
||||
settings_files.append('/etc/nailgun/settings.yaml')
|
||||
self.config = {}
|
||||
@@ -40,7 +25,7 @@ class NailgunSettings:
|
||||
with open(sf, 'r') as f:
|
||||
self.config.update(yaml.load(f.read()))
|
||||
except Exception as e:
|
||||
self.logger.error("Error while reading config file %s: %s" %
|
||||
self.logger.debug("Error while reading config file %s: %s" %
|
||||
(sf, str(e)))
|
||||
|
||||
def update(self, dct):
|
||||
@@ -51,3 +36,13 @@ class NailgunSettings:
|
||||
|
||||
|
||||
settings = NailgunSettings()
|
||||
|
||||
if int(settings.DEVELOPMENT):
|
||||
here = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
|
||||
settings.update({
|
||||
'STATIC_DIR': os.path.join(here, 'static'),
|
||||
'TEMPLATE_DIR': os.path.join(here, 'static'),
|
||||
'LOGFILE': os.path.join(here, 'nailgun.log'),
|
||||
'DATABASE_ENGINE': 'sqlite:///%s' %
|
||||
os.path.join(here, 'nailgun.sqlite')})
|
||||
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
LISTEN_ADDRESS: "0.0.0.0"
|
||||
LISTEN_PORT: "8000"
|
||||
DEVELOPMENT: "1"
|
||||
DATABASE_ENGINE: "sqlite:////var/tmp/nailgun.sqlite"
|
||||
STATIC_DIR: "/var/tmp/nailgun_static"
|
||||
TEMPLATE_DIR: "/var/tmp/nailgun_static"
|
||||
|
||||
@@ -9,11 +9,39 @@ sys.path.insert(0, curdir)
|
||||
|
||||
logging.basicConfig(stream=sys.stderr, level=logging.DEBUG)
|
||||
|
||||
from nailgun.settings import settings
|
||||
|
||||
from nailgun.api.handlers import check_client_content_type
|
||||
from nailgun.db import load_db_driver
|
||||
from nailgun.urls import urls
|
||||
from nailgun.logger import Log
|
||||
|
||||
app = web.application(urls, locals())
|
||||
app.add_processor(load_db_driver)
|
||||
app.add_processor(check_client_content_type)
|
||||
|
||||
|
||||
def appstart():
|
||||
from nailgun.rpc import threaded
|
||||
import eventlet
|
||||
eventlet.monkey_patch()
|
||||
q = threaded.rpc_queue
|
||||
rpc_thread = threaded.RPCThread()
|
||||
|
||||
server = web.httpserver.WSGIServer(
|
||||
(settings.LISTEN_ADDRESS, int(settings.LISTEN_PORT)),
|
||||
app.wsgifunc(Log)
|
||||
)
|
||||
|
||||
try:
|
||||
rpc_thread.start()
|
||||
server.start()
|
||||
except KeyboardInterrupt:
|
||||
logging.info("Stopping RPC thread...")
|
||||
rpc_thread.running = False
|
||||
logging.info("Stopping WSGI app...")
|
||||
server.stop()
|
||||
logging.info("Done")
|
||||
|
||||
|
||||
application = app.wsgifunc()
|
||||
|
||||
@@ -10,21 +10,23 @@ from setuptools import find_packages
|
||||
# README = open(os.path.join(here, 'README.txt')).read()
|
||||
|
||||
requires = [
|
||||
'SQLAlchemy==0.7.9',
|
||||
'web.py==0.37',
|
||||
'uWSGI==1.3',
|
||||
'greenlet==0.4.0',
|
||||
'eventlet==0.9.17',
|
||||
'kombu==2.4.7',
|
||||
'netaddr==0.7.10',
|
||||
'simplejson==2.6.2',
|
||||
'amqplib==1.0.2',
|
||||
'anyjson==0.3.1',
|
||||
'argparse==1.2.1',
|
||||
'Paste==1.7.5.1',
|
||||
'eventlet==0.9.17',
|
||||
'greenlet==0.4.0',
|
||||
'kombu==2.1.8',
|
||||
'nose==1.1.2',
|
||||
'nose2==0.4.1',
|
||||
'netaddr==0.7.10',
|
||||
'pycrypto==2.6',
|
||||
'PyYAML==3.10',
|
||||
'SQLAlchemy==0.7.8',
|
||||
'simplejson==2.6.2',
|
||||
'web.py==0.37',
|
||||
'wsgilog==0.3',
|
||||
'wsgiref==0.1.2',
|
||||
'argparse==1.2.1',
|
||||
'nose==1.2.1',
|
||||
'nose2==0.4.1',
|
||||
# 'cobbler',
|
||||
]
|
||||
|
||||
@@ -68,6 +70,7 @@ if __name__ == "__main__":
|
||||
entry_points={
|
||||
'console_scripts': [
|
||||
'nailgun_syncdb = nailgun.db:syncdb',
|
||||
'nailgund = nailgun.wsgi:appstart',
|
||||
],
|
||||
},
|
||||
data_files=recursive_data_files([('usr/share/nailgun', 'static')])
|
||||
|
||||
Submodule puppet/cobbler updated: 0f54a28661...9c31b80188
101
puppet/nailgun/examples/site.pp
Normal file
101
puppet/nailgun/examples/site.pp
Normal file
@@ -0,0 +1,101 @@
|
||||
node default {
|
||||
|
||||
Exec {path => '/usr/bin:/bin:/usr/sbin:/sbin'}
|
||||
|
||||
$centos_repos =
|
||||
[
|
||||
{
|
||||
"name" => "Nailgun",
|
||||
"url" => "http://${ipaddress}/centos/6.3/x86_64"
|
||||
},
|
||||
]
|
||||
|
||||
$centos_iso = "file:///var/www/nailgun/iso/CentOS-6.3-x86_64-netinstall-EFI.iso"
|
||||
$cobbler_user = "cobbler"
|
||||
$cobbler_password = "cobbler"
|
||||
|
||||
$mco_pskey = "un0aez2ei9eiGaequaey4loocohjuch4Ievu3shaeweeg5Uthi"
|
||||
$mco_stompuser = "mcollective"
|
||||
$mso_stomppassword = "AeN5mi5thahz2Aiveexo"
|
||||
|
||||
$pip_repo = "/var/www/nailgun/eggs"
|
||||
$gem_repo = "/var/www/nailgun/gems"
|
||||
|
||||
class { "cobbler::server":
|
||||
server => $ipaddress,
|
||||
|
||||
domain_name => $domain,
|
||||
name_server => $ipaddress,
|
||||
next_server => $ipaddress,
|
||||
|
||||
dhcp_start_address => ipcalc_network_nth_address($ipaddress, $netmask, "first"),
|
||||
dhcp_end_address => ipcalc_network_nth_address($ipaddress, $netmask, "last"),
|
||||
dhcp_netmask => $netmask,
|
||||
dhcp_gateway => $ipaddress,
|
||||
dhcp_interface => 'eth0',
|
||||
|
||||
cobbler_user => $cobbler_user,
|
||||
cobbler_password => $cobbler_password,
|
||||
|
||||
pxetimeout => '0'
|
||||
} ->
|
||||
|
||||
|
||||
class { "cobbler::distro::centos63-x86_64":
|
||||
http_iso => $centos_iso,
|
||||
ks_url => "cobbler",
|
||||
} ->
|
||||
|
||||
class { "cobbler::profile::centos63-x86_64":
|
||||
ks_repo => $centos_repos,
|
||||
}
|
||||
|
||||
class { "mcollective::rabbitmq":
|
||||
stompuser => "mcollective",
|
||||
stomppassword => "AeN5mi5thahz2Aiveexo",
|
||||
rabbitmq_plugins_repo => "file:///var/www/rabbitmq-plugins",
|
||||
}
|
||||
|
||||
class { "mcollective::client":
|
||||
pskey => $mco_pskey,
|
||||
stompuser => $mco_stompuser,
|
||||
stomppassword => $mco_stomppassword,
|
||||
stomphost => $ipaddress,
|
||||
stompport => "61613"
|
||||
}
|
||||
|
||||
class { "puppetmaster" :
|
||||
puppet_master_hostname => "${hostname}.${domain}"
|
||||
}
|
||||
|
||||
class { "nailgun":
|
||||
package => "Nailgun",
|
||||
version => "0.1.0",
|
||||
nailgun_group => "nailgun",
|
||||
nailgun_user => "nailgun",
|
||||
venv => "/opt/nailgun",
|
||||
|
||||
pip_index => "--no-index",
|
||||
pip_find_links => "-f file://${pip_repo}",
|
||||
gem_repo => $gem_repo,
|
||||
|
||||
databasefile => "/var/tmp/nailgun.sqlite",
|
||||
staticdir => "/opt/nailgun/usr/share/nailgun/static",
|
||||
templatedir => "/opt/nailgun/usr/share/nailgun/static",
|
||||
logfile => "/var/tmp/nailgun.log",
|
||||
|
||||
cobbler_url => "http://localhost/cobbler_api",
|
||||
cobbler_user => $cobbler_user,
|
||||
cobbler_password => $cobbler_password,
|
||||
|
||||
mco_pskey => $mco_pskey,
|
||||
mco_stompuser => $mco_stompuser,
|
||||
mco_stomppassword => $mco_stomppassword,
|
||||
|
||||
naily_user => "naily",
|
||||
naily_password => "Pheilohv6iso",
|
||||
|
||||
puppet_master_host => "${hostname}.${domain}"
|
||||
}
|
||||
|
||||
}
|
||||
111
puppet/nailgun/examples/site2.pp
Normal file
111
puppet/nailgun/examples/site2.pp
Normal file
@@ -0,0 +1,111 @@
|
||||
node default {
|
||||
|
||||
Exec {path => '/usr/bin:/bin:/usr/sbin:/sbin'}
|
||||
|
||||
# $centos_repos =
|
||||
# [
|
||||
# {
|
||||
# "name" => "Puppet",
|
||||
# "url" => "http://yum.puppetlabs.com/el/6/products/x86_64"
|
||||
# },
|
||||
# {
|
||||
# "name" => "Stanford",
|
||||
# "url" => "http://mirror.stanford.edu/yum/pub/centos/6.3/os/x86_64"
|
||||
# },
|
||||
# ]
|
||||
|
||||
$centos_iso = "file:///var/www/nailgun/iso/CentOS-6.3-x86_64-minimal.iso"
|
||||
$cobbler_user = "cobbler"
|
||||
$cobbler_password = "cobbler"
|
||||
|
||||
$mco_pskey = "un0aez2ei9eiGaequaey4loocohjuch4Ievu3shaeweeg5Uthi"
|
||||
$mco_stompuser = "mcollective"
|
||||
$mso_stomppassword = "AeN5mi5thahz2Aiveexo"
|
||||
|
||||
$pip_repo = "/root/eggs"
|
||||
|
||||
$gem_repo = "/root/gems"
|
||||
|
||||
$nailgun_package = "Nailgun"
|
||||
$nailgun_version = "0.1.0"
|
||||
|
||||
$nailgun_group = "nailgun"
|
||||
$nailgun_user = "nailgun"
|
||||
|
||||
class { "cobbler::server":
|
||||
server => $ipaddress,
|
||||
|
||||
domain_name => $domain,
|
||||
name_server => $ipaddress,
|
||||
next_server => $ipaddress,
|
||||
|
||||
dhcp_start_address => ipcalc_network_nth_address($ipaddress, $netmask, "first"),
|
||||
dhcp_end_address => ipcalc_network_nth_address($ipaddress, $netmask, "last"),
|
||||
dhcp_netmask => $netmask,
|
||||
dhcp_gateway => $ipaddress,
|
||||
dhcp_interface => 'eth0',
|
||||
|
||||
cobbler_user => $cobbler_user,
|
||||
cobbler_password => $cobbler_password,
|
||||
|
||||
pxetimeout => '0'
|
||||
} ->
|
||||
|
||||
|
||||
class { "cobbler::distro::centos63-x86_64":
|
||||
http_iso => $centos_iso,
|
||||
ks_url => "cobbler",
|
||||
} ->
|
||||
|
||||
class { "cobbler::profile::centos63-x86_64":
|
||||
ks_repo => $centos_repos,
|
||||
}
|
||||
|
||||
class { "mcollective::rabbitmq":
|
||||
stompuser => "mcollective",
|
||||
stomppassword => "AeN5mi5thahz2Aiveexo",
|
||||
}
|
||||
|
||||
class { "mcollective::client":
|
||||
pskey => $mco_pskey,
|
||||
stompuser => $mco_stompuser,
|
||||
stomppassword => $mco_stomppassword,
|
||||
stomphost => $ipaddress,
|
||||
stompport => "61613"
|
||||
}
|
||||
|
||||
class { "puppetmaster" :
|
||||
puppet_master_hostname => "${hostname}.${domain}"
|
||||
}
|
||||
|
||||
class { "nailgun":
|
||||
package => $nailgun_package,
|
||||
version => $nailgun_version,
|
||||
nailgun_group => $nailgun_group,
|
||||
nailgun_user => $nailgun_user,
|
||||
venv => "/opt/nailgun",
|
||||
|
||||
# pip_index => "--no-index",
|
||||
pip_find_links => "-f file://${pip_repo}",
|
||||
gem_repo => $gem_repo,
|
||||
|
||||
databasefile => "/var/tmp/nailgun.sqlite",
|
||||
staticdir => "/opt/nailgun/usr/share/nailgun/static",
|
||||
templatedir => "/opt/nailgun/usr/share/nailgun/static",
|
||||
logfile => "/var/tmp/nailgun.log",
|
||||
|
||||
cobbler_url => "http://localhost/cobbler_api",
|
||||
cobbler_user => $cobbler_user,
|
||||
cobbler_password => $cobbler_password,
|
||||
|
||||
mco_pskey => $mco_pskey,
|
||||
mco_stompuser => $mco_stompuser,
|
||||
mco_stomppassword => $mco_stomppassword,
|
||||
|
||||
naily_user => "naily",
|
||||
naily_password => "Pheilohv6iso",
|
||||
|
||||
puppet_master_host => "${hostname}.${domain}"
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
module Puppet::Parser::Functions
|
||||
newfunction(:ipcalc_network_by_address_netmask, :type => :rvalue, :doc => <<-EOS
|
||||
Returns network address by host ip address and netmask.
|
||||
EOS
|
||||
) do |arguments|
|
||||
|
||||
require 'ipaddr'
|
||||
|
||||
if (arguments.size != 2) then
|
||||
raise(Puppet::ParseError, "ipcalc_network_by_address_netmask(): Wrong number of arguments "+
|
||||
"given #{arguments.size} for 2")
|
||||
end
|
||||
|
||||
begin
|
||||
ip = IPAddr.new("#{arguments[0]}/#{arguments[1]}")
|
||||
rescue ArgumentError
|
||||
raise(Puppet::ParseError, "ipcalc_network_nth_address(): bad arguments #{arguments[0]} #{arguments[1]}")
|
||||
end
|
||||
|
||||
return ip.to_s
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,28 @@
|
||||
module Puppet::Parser::Functions
|
||||
newfunction(:ipcalc_network_nth_address, :type => :rvalue, :doc => <<-EOS
|
||||
Returns N-th address of network.
|
||||
EOS
|
||||
) do |arguments|
|
||||
|
||||
require 'ipaddr'
|
||||
|
||||
if (arguments.size != 3) then
|
||||
raise(Puppet::ParseError, "ipcalc_network_nth_address(): Wrong number of arguments "+
|
||||
"given #{arguments.size} for 3")
|
||||
end
|
||||
|
||||
begin
|
||||
ip = IPAddr.new("#{arguments[0]}/#{arguments[1]}")
|
||||
rescue ArgumentError
|
||||
raise(Puppet::ParseError, "ipcalc_network_nth_address(): bad arguments #{arguments[0]} #{arguments[1]} #{arguments[2]}")
|
||||
end
|
||||
|
||||
if arguments[2] =~ /^last$/
|
||||
return ip.to_range.to_a[-2].to_s
|
||||
elsif arguments[2] =~ /^first$/
|
||||
return ip.to_range.to_a[1].to_s
|
||||
else
|
||||
return ip.to_range.to_a[arguments[2]].to_s
|
||||
end
|
||||
end
|
||||
end
|
||||
136
puppet/nailgun/manifests/init.pp
Normal file
136
puppet/nailgun/manifests/init.pp
Normal file
@@ -0,0 +1,136 @@
|
||||
class nailgun(
|
||||
$package,
|
||||
$version,
|
||||
$nailgun_group = "nailgun",
|
||||
$nailgun_user = "nailgun",
|
||||
$venv = "/opt/nailgun",
|
||||
|
||||
$pip_index = "",
|
||||
$pip_find_links = "",
|
||||
$gem_repo = "/var/www/gems",
|
||||
|
||||
$databasefile = "/var/tmp/nailgun.sqlite",
|
||||
$staticdir = "/opt/nailgun/usr/share/nailgun/static",
|
||||
$templatedir = "/opt/nailgun/usr/share/nailgun/static",
|
||||
$logfile = "/var/log/nailgun/nailgun.log",
|
||||
$rundir = "/var/run/nailgun",
|
||||
|
||||
$cobbler_url = "http://localhost/cobbler_api",
|
||||
$cobbler_user = "cobbler",
|
||||
$cobbler_password = "cobbler",
|
||||
|
||||
$mco_pskey = "123456",
|
||||
$mco_stompuser = "mcollective",
|
||||
$mco_stomppassword = "mcollective",
|
||||
|
||||
$naily_user = "naily",
|
||||
$naily_password = "naily",
|
||||
|
||||
$puppet_master_host = "${hostname}.${domain}",
|
||||
|
||||
) {
|
||||
|
||||
$logparentdir = inline_template("<%= logfile.match(%r!(.+)/.+!)[1] %>")
|
||||
$database_engine = "sqlite:///${databasefile}"
|
||||
|
||||
anchor { "nailgun-begin": }
|
||||
anchor { "nailgun-end": }
|
||||
|
||||
Anchor<| title == "nailgun-begin" |> ->
|
||||
Class["nailgun::packages"] ->
|
||||
Class["nailgun::iptables"] ->
|
||||
Class["nailgun::user"] ->
|
||||
Class["nailgun::venv"] ->
|
||||
Class["nailgun::nginx"] ->
|
||||
Class["nailgun::supervisor"] ->
|
||||
Anchor<| title == "nailgun-end" |>
|
||||
|
||||
class { "nailgun::packages": }
|
||||
|
||||
class { "nailgun::iptables": }
|
||||
|
||||
class { "nailgun::user":
|
||||
nailgun_group => $nailgun_group,
|
||||
nailgun_user => $nailgun_user,
|
||||
}
|
||||
|
||||
class { "nailgun::venv":
|
||||
venv => $venv,
|
||||
venv_opts => "--system-site-packages",
|
||||
package => $package,
|
||||
version => $version,
|
||||
pip_opts => "${pip_index} ${pip_find_links}"
|
||||
}
|
||||
|
||||
class { "nailgun::supervisor":
|
||||
venv => $venv,
|
||||
}
|
||||
|
||||
class { "nailgun::nginx":
|
||||
staticdir => $staticdir,
|
||||
rundir => $rundir,
|
||||
}
|
||||
|
||||
file { $logparentdir:
|
||||
ensure => directory,
|
||||
recurse => true,
|
||||
owner => 'root',
|
||||
group => 'root',
|
||||
mode => 0755,
|
||||
}
|
||||
|
||||
file { $rundir:
|
||||
ensure => directory,
|
||||
owner => $nailgun_user,
|
||||
group => $nailgun_group,
|
||||
mode => 0755,
|
||||
}
|
||||
|
||||
file { "/etc/nailgun":
|
||||
ensure => directory,
|
||||
owner => 'root',
|
||||
group => 'root',
|
||||
mode => 0755,
|
||||
}
|
||||
|
||||
file { "/etc/nailgun/uwsgi.ini":
|
||||
content => template("nailgun/uwsgi.ini.erb"),
|
||||
owner => 'root',
|
||||
group => 'root',
|
||||
mode => 0644,
|
||||
require => File["/etc/nailgun"],
|
||||
}
|
||||
|
||||
file { "/etc/nailgun/settings.yaml":
|
||||
content => template("nailgun/settings.yaml.erb"),
|
||||
owner => 'root',
|
||||
group => 'root',
|
||||
mode => 0644,
|
||||
require => File["/etc/nailgun"],
|
||||
}
|
||||
|
||||
exec {"nailgun_syncdb":
|
||||
command => "${venv}/bin/nailgun_syncdb",
|
||||
creates => $databasefile,
|
||||
require => [
|
||||
File["/etc/nailgun/settings.yaml"],
|
||||
Class["nailgun::venv"],
|
||||
]
|
||||
}
|
||||
|
||||
rabbitmq_user { $naily_user:
|
||||
admin => true,
|
||||
password => $naily_password,
|
||||
provider => 'rabbitmqctl',
|
||||
require => Class['rabbitmq::server'],
|
||||
}
|
||||
|
||||
rabbitmq_user_permissions { "${naily_user}@/":
|
||||
configure_permission => '.*',
|
||||
write_permission => '.*',
|
||||
read_permission => '.*',
|
||||
provider => 'rabbitmqctl',
|
||||
require => Class['rabbitmq::server'],
|
||||
}
|
||||
|
||||
}
|
||||
15
puppet/nailgun/manifests/iptables.pp
Normal file
15
puppet/nailgun/manifests/iptables.pp
Normal file
@@ -0,0 +1,15 @@
|
||||
class nailgun::iptables {
|
||||
|
||||
define access_to_nailgun_port($port, $protocol='tcp') {
|
||||
$rule = "-p $protocol -m state --state NEW -m $protocol --dport $port -j ACCEPT"
|
||||
exec { "access_to_cobbler_${protocol}_port: $port":
|
||||
command => "iptables -t filter -I INPUT 1 $rule; \
|
||||
/etc/init.d/iptables save",
|
||||
unless => "iptables -t filter -S INPUT | grep -q \"^-A INPUT $rule\""
|
||||
}
|
||||
}
|
||||
|
||||
access_to_nailgun_port { "nailgun_web": port => '8000' }
|
||||
access_to_nailgun_port { "nailgun_repo": port => '8080' }
|
||||
|
||||
}
|
||||
31
puppet/nailgun/manifests/nginx.pp
Normal file
31
puppet/nailgun/manifests/nginx.pp
Normal file
@@ -0,0 +1,31 @@
|
||||
class nailgun::nginx(
|
||||
$staticdir,
|
||||
$rundir,
|
||||
) {
|
||||
|
||||
file { "/etc/nginx/conf.d/nailgun.conf":
|
||||
content => template("nailgun/nginx_nailgun.conf.erb"),
|
||||
owner => 'root',
|
||||
group => 'root',
|
||||
mode => 0644,
|
||||
require => Package["nginx"],
|
||||
notify => Service["nginx"],
|
||||
}
|
||||
|
||||
file { "/etc/nginx/conf.d/repo.conf":
|
||||
content => template("nailgun/nginx_nailgun_repo.conf.erb"),
|
||||
owner => 'root',
|
||||
group => 'root',
|
||||
mode => 0644,
|
||||
require => Package["nginx"],
|
||||
notify => Service["nginx"],
|
||||
}
|
||||
|
||||
|
||||
# service { "nginx":
|
||||
# enable => true,
|
||||
# ensure => "running",
|
||||
# require => Package["nginx"]
|
||||
# }
|
||||
|
||||
}
|
||||
15
puppet/nailgun/manifests/packages.pp
Normal file
15
puppet/nailgun/manifests/packages.pp
Normal file
@@ -0,0 +1,15 @@
|
||||
class nailgun::packages {
|
||||
define nailgun_safe_package(){
|
||||
if ! defined(Package[$name]){
|
||||
@package { $name : }
|
||||
}
|
||||
}
|
||||
|
||||
nailgun_safe_package { "supervisor": }
|
||||
nailgun_safe_package { "nginx": }
|
||||
nailgun_safe_package { "python-virtualenv": }
|
||||
nailgun_safe_package { "python-devel": }
|
||||
nailgun_safe_package { "gcc": }
|
||||
nailgun_safe_package { "make": }
|
||||
|
||||
}
|
||||
20
puppet/nailgun/manifests/supervisor.pp
Normal file
20
puppet/nailgun/manifests/supervisor.pp
Normal file
@@ -0,0 +1,20 @@
|
||||
class nailgun::supervisor(
|
||||
$venv,
|
||||
) {
|
||||
|
||||
file { "/etc/supervisord.conf":
|
||||
content => template("nailgun/supervisord.conf.erb"),
|
||||
owner => 'root',
|
||||
group => 'root',
|
||||
mode => 0644,
|
||||
require => Package["supervisor"],
|
||||
notify => Service["supervisord"],
|
||||
}
|
||||
|
||||
service { "supervisord":
|
||||
ensure => "running",
|
||||
enable => true,
|
||||
require => Package["supervisor"],
|
||||
}
|
||||
|
||||
}
|
||||
22
puppet/nailgun/manifests/user.pp
Normal file
22
puppet/nailgun/manifests/user.pp
Normal file
@@ -0,0 +1,22 @@
|
||||
class nailgun::user(
|
||||
$nailgun_group = "nailgun",
|
||||
$nailgun_user = "nailgun",
|
||||
) {
|
||||
|
||||
group { $nailgun_group :
|
||||
provider => "groupadd",
|
||||
ensure => "present",
|
||||
}
|
||||
|
||||
user { $nailgun_user :
|
||||
ensure => "present",
|
||||
gid => $nailgun_group,
|
||||
home => "/",
|
||||
shell => "/bin/false",
|
||||
require => Group[$nailgun_group],
|
||||
}
|
||||
|
||||
user {"nginx":
|
||||
groups => [$nailgun_group],
|
||||
}
|
||||
}
|
||||
28
puppet/nailgun/manifests/venv.pp
Normal file
28
puppet/nailgun/manifests/venv.pp
Normal file
@@ -0,0 +1,28 @@
|
||||
class nailgun::venv(
|
||||
$venv,
|
||||
$venv_opts = "",
|
||||
$package,
|
||||
$version,
|
||||
$pip_opts = "",
|
||||
) {
|
||||
|
||||
nailgun::venv::venv { $venv:
|
||||
ensure => "present",
|
||||
venv => $venv,
|
||||
opts => $venv_opts,
|
||||
require => Package["python-virtualenv"],
|
||||
}
|
||||
|
||||
nailgun::venv::pip { "$venv_$package":
|
||||
package => "$package==$version",
|
||||
opts => $pip_opts,
|
||||
venv => $venv,
|
||||
require => [
|
||||
Nailgun::Venv::Venv[$venv],
|
||||
Package["python-devel"],
|
||||
Package["gcc"],
|
||||
Package["make"],
|
||||
]
|
||||
}
|
||||
|
||||
}
|
||||
38
puppet/nailgun/manifests/venv/pip.pp
Normal file
38
puppet/nailgun/manifests/venv/pip.pp
Normal file
@@ -0,0 +1,38 @@
|
||||
define nailgun::venv::pip(
|
||||
$package,
|
||||
$venv,
|
||||
$opts = "",
|
||||
$ensure = "present",
|
||||
$owner = undef,
|
||||
$group = undef,
|
||||
) {
|
||||
|
||||
$grep_regex = $package ? {
|
||||
/==/ => "^${package}\$",
|
||||
default => "^${package}==",
|
||||
}
|
||||
|
||||
Exec {
|
||||
user => $owner,
|
||||
group => $group,
|
||||
cwd => "/tmp",
|
||||
}
|
||||
|
||||
if $ensure == 'present' {
|
||||
exec { "$venv/bin/pip install $name":
|
||||
command => "$venv/bin/pip install $opts $package",
|
||||
unless => "$venv/bin/pip freeze | grep -e $grep_regex"
|
||||
}
|
||||
}
|
||||
elsif $ensure == 'latest' {
|
||||
exec { "pip install $name":
|
||||
command => "$venv/bin/pip install $opts -U $package",
|
||||
}
|
||||
}
|
||||
else {
|
||||
exec { "pip install $name":
|
||||
command => "$venv/bin/pip uninstall $package",
|
||||
onlyif => "$venv/bin/pip freeze | grep -e $grep_regex"
|
||||
}
|
||||
}
|
||||
}
|
||||
51
puppet/nailgun/manifests/venv/venv.pp
Normal file
51
puppet/nailgun/manifests/venv/venv.pp
Normal file
@@ -0,0 +1,51 @@
|
||||
define nailgun::venv::venv(
|
||||
$venv,
|
||||
$opts = "",
|
||||
$owner = undef,
|
||||
$group = undef,
|
||||
$ensure = "present",
|
||||
) {
|
||||
|
||||
|
||||
if $ensure == 'present' {
|
||||
$root_parent = inline_template("<%= venv.match(%r!(.+)/.+!)[1] %>")
|
||||
|
||||
if !defined(File[$root_parent]) {
|
||||
file { $root_parent:
|
||||
ensure => directory,
|
||||
recurse => true
|
||||
}
|
||||
}
|
||||
|
||||
Exec {
|
||||
user => $owner,
|
||||
group => $group,
|
||||
cwd => "/tmp",
|
||||
}
|
||||
|
||||
exec { "nailgun::venv $root":
|
||||
command => "virtualenv ${opts} ${venv}",
|
||||
creates => $venv,
|
||||
notify => Exec["update distribute and pip in $venv"],
|
||||
require => [File[$root_parent],
|
||||
Package["python-virtualenv"]],
|
||||
}
|
||||
|
||||
exec { "update distribute and pip in $venv":
|
||||
command => "$venv/bin/pip install -U distribute pip",
|
||||
refreshonly => true,
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
elsif $ensure == 'absent' {
|
||||
|
||||
file { $venv:
|
||||
ensure => $ensure,
|
||||
recurse => true,
|
||||
purge => true,
|
||||
force => true,
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
36
puppet/nailgun/templates/nginx_nailgun.conf.erb
Normal file
36
puppet/nailgun/templates/nginx_nailgun.conf.erb
Normal file
@@ -0,0 +1,36 @@
|
||||
upstream nailgun-application {
|
||||
server 127.0.0.1:8001;
|
||||
}
|
||||
|
||||
|
||||
|
||||
server {
|
||||
listen 8000;
|
||||
|
||||
server_name localhost;
|
||||
|
||||
access_log on;
|
||||
error_log /var/log/nginx/error.log debug;
|
||||
|
||||
charset utf-8;
|
||||
client_max_body_size 10M;
|
||||
|
||||
location = /favicon.ico {
|
||||
log_not_found off;
|
||||
access_log off;
|
||||
}
|
||||
|
||||
location /static {
|
||||
autoindex on;
|
||||
alias <%= staticdir %>;
|
||||
}
|
||||
|
||||
location / {
|
||||
proxy_pass http://nailgun-application;
|
||||
proxy_read_timeout 15;
|
||||
proxy_redirect off;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
}
|
||||
}
|
||||
21
puppet/nailgun/templates/nginx_nailgun_repo.conf.erb
Normal file
21
puppet/nailgun/templates/nginx_nailgun_repo.conf.erb
Normal file
@@ -0,0 +1,21 @@
|
||||
server {
|
||||
listen 8080;
|
||||
|
||||
server_name localhost;
|
||||
|
||||
access_log on;
|
||||
error_log /var/log/nginx/error.log debug;
|
||||
|
||||
charset utf-8;
|
||||
client_max_body_size 2M;
|
||||
|
||||
location / {
|
||||
autoindex on;
|
||||
root /var/www/nailgun;
|
||||
}
|
||||
|
||||
location ~ /\.ht {
|
||||
deny all;
|
||||
}
|
||||
|
||||
}
|
||||
52
puppet/nailgun/templates/settings.yaml.erb
Normal file
52
puppet/nailgun/templates/settings.yaml.erb
Normal file
@@ -0,0 +1,52 @@
|
||||
LISTEN_ADDRESS: "127.0.0.1"
|
||||
LISTEN_PORT: "8001"
|
||||
DEVELOPMENT: "1"
|
||||
DATABASE_ENGINE: "<%= database_engine %>"
|
||||
STATIC_DIR: "<%= staticdir %>"
|
||||
TEMPLATE_DIR: "<%= templatedir %>"
|
||||
NETWORK_POOLS:
|
||||
public:
|
||||
- "240.0.0.0/16"
|
||||
private10:
|
||||
- "10.0.0.0/8"
|
||||
private172:
|
||||
- "172.16.0.0/12"
|
||||
private192:
|
||||
- "192.168.0.0/16"
|
||||
|
||||
NET_EXCLUDE:
|
||||
- "10.20.0.0/24"
|
||||
|
||||
VLANS_RANGE_START: "100"
|
||||
VLANS_RANGE_END: "1000"
|
||||
|
||||
RABBITMQ:
|
||||
fake: "0"
|
||||
hostname: "127.0.0.1"
|
||||
port: 5672
|
||||
userid: "<%= naily_user %>"
|
||||
password: "<%= naily_password %>"
|
||||
virtual_host: "/"
|
||||
|
||||
LOGFILE: "<%= logfile %>"
|
||||
|
||||
PATH_TO_SSH_KEY: = "/root/.ssh/id_rsa"
|
||||
PATH_TO_BOOTSTRAP_SSH_KEY: "/root/.ssh/bootstrap.rsa"
|
||||
|
||||
COBBLER_URL: "<%= cobbler_url %>"
|
||||
COBBLER_USER: "<%= cobbler_user %>"
|
||||
COBBLER_PASSWORD: "<%= cobbler_password %>"
|
||||
COBBLER_PROFILE: "centos-6.3-x86_64"
|
||||
|
||||
MCO_PSKEY: "<%= mco_pskey %>"
|
||||
MCO_STOMPHOST: "localhost"
|
||||
MCO_STOMPPORT: "61613"
|
||||
MCO_STOMPUSER: "<%= mco_stompuser %>"
|
||||
MCO_STOMPPASSWORD: "<%= mco_stomppassword %>"
|
||||
|
||||
PUPPET_MASTER_HOST: "<%= puppet_master_host %>"
|
||||
PUPPET_VERSION: "2.7.19"
|
||||
|
||||
DNS_DOMAIN: "<%= domain %>"
|
||||
DNS_SERVERS: "127.0.0.1"
|
||||
DNS_SEARCH: "<%= domain %>"
|
||||
40
puppet/nailgun/templates/supervisord.conf.erb
Normal file
40
puppet/nailgun/templates/supervisord.conf.erb
Normal file
@@ -0,0 +1,40 @@
|
||||
[supervisord]
|
||||
http_port=/var/run/supervisor.sock
|
||||
logfile=/var/log/supervisor/supervisord.log
|
||||
logfile_maxbytes=50MB
|
||||
logfile_backups=10
|
||||
loglevel=debug
|
||||
pidfile=/var/run/supervisord.pid
|
||||
nodaemon=false
|
||||
minfds=1024
|
||||
minprocs=200
|
||||
childlogdir=/var/log/supervisor
|
||||
|
||||
[supervisorctl]
|
||||
serverurl=unix:///var/run/supervisor.sock
|
||||
|
||||
|
||||
[program:nailgun]
|
||||
command=<%= venv %>/bin/nailgund
|
||||
process_name=%(program_name)s
|
||||
numprocs=1
|
||||
numprocs_start=0
|
||||
autostart=true
|
||||
autorestart=true
|
||||
startsecs=1
|
||||
startretries=3
|
||||
exitcodes=0,2
|
||||
stopsignal=INT
|
||||
stopwaitsecs=60
|
||||
redirect_stderr=true
|
||||
stdout_logfile=/var/log/nailgun/app.log
|
||||
stdout_logfile_maxbytes=50MB
|
||||
stdout_logfile_backups=10
|
||||
stdout_capture_maxbytes=0
|
||||
stdout_events_enabled=false
|
||||
stderr_logfile=/var/log/nailgun/err.log
|
||||
stderr_logfile_maxbytes=50MB
|
||||
stderr_logfile_backups=10
|
||||
stderr_capture_maxbytes=0
|
||||
stderr_events_enabled=false
|
||||
serverurl=AUTO
|
||||
17
puppet/nailgun/templates/uwsgi.ini.erb
Normal file
17
puppet/nailgun/templates/uwsgi.ini.erb
Normal file
@@ -0,0 +1,17 @@
|
||||
[uwsgi]
|
||||
autoload = true
|
||||
master = true
|
||||
no-orphans = true
|
||||
log-date = true
|
||||
log-maxsize = 50M
|
||||
vacuum = true
|
||||
pidfile = <%= rundir %>/nailgun.pid
|
||||
max-requests = 5000
|
||||
socket = <%= rundir %>/nailgun.sock
|
||||
chmod-socket = 660
|
||||
workers = 2
|
||||
|
||||
module = nailgun.wsgi
|
||||
|
||||
uid = <%= nailgun_user %>
|
||||
gid = <%= nailgun_group %>
|
||||
@@ -1,12 +1,17 @@
|
||||
amqplib 1.0.2
|
||||
anyjson 0.3.1
|
||||
Paste 1.7.5.1
|
||||
eventlet 0.9.17
|
||||
greenlet 0.4.0
|
||||
kombu 2.1.8
|
||||
nose 1.1.2
|
||||
netaddr 0.7.10
|
||||
pycrypto 2.6
|
||||
SQLAlchemy 0.7.8
|
||||
web.py 0.37
|
||||
wsgilog 0.3
|
||||
amqplib 1.0.2
|
||||
anyjson 0.3.1
|
||||
argparse 1.2.1
|
||||
Paste 1.7.5.1
|
||||
eventlet 0.9.17
|
||||
greenlet 0.4.0
|
||||
kombu 2.1.8
|
||||
nose 1.1.2
|
||||
nose2 0.4.1
|
||||
netaddr 0.7.10
|
||||
pycrypto 2.6
|
||||
PyYAML 3.10
|
||||
SQLAlchemy 0.7.8
|
||||
simplejson 2.6.2
|
||||
web.py 0.37
|
||||
wsgilog 0.3
|
||||
wsgiref 0.1.2
|
||||
|
||||
@@ -22,3 +22,6 @@ systemu 2.5.2
|
||||
treetop 1.4.10
|
||||
uuidtools 2.1.2
|
||||
yajl-ruby 1.1.0
|
||||
rails 3.0.10
|
||||
activerecord 3.0.10
|
||||
mysql 2.8.1
|
||||
|
||||
@@ -2,6 +2,7 @@ autoconf
|
||||
automake
|
||||
byacc
|
||||
cobbler
|
||||
cobbler-web
|
||||
cronie
|
||||
crontabs
|
||||
curl
|
||||
@@ -11,29 +12,42 @@ flex
|
||||
gcc
|
||||
gcc-c++
|
||||
make
|
||||
man
|
||||
mcollective
|
||||
mcollective-client
|
||||
mysql
|
||||
mysql-devel
|
||||
mysql-server
|
||||
nginx
|
||||
novnc
|
||||
ntp
|
||||
numpy
|
||||
openssh-clients
|
||||
openssh-server
|
||||
openstack-dashboard
|
||||
openstack-glance
|
||||
openstack-keystone
|
||||
openstack-nova
|
||||
openstack-nova-novncproxy
|
||||
policycoreutils
|
||||
puppet-2.7.19
|
||||
python-devel
|
||||
novnc
|
||||
python-virtualenv
|
||||
rabbitmq-server
|
||||
ruby
|
||||
ruby-augeas
|
||||
ruby-devel
|
||||
rubygems
|
||||
ruby-mysql
|
||||
ruby-rdoc
|
||||
ruby-ri
|
||||
ruby-shadow
|
||||
rubygems
|
||||
scapy
|
||||
supervisor
|
||||
syslinux
|
||||
tcpdump
|
||||
tftp-server
|
||||
vim-enhanced
|
||||
wget
|
||||
xinetd
|
||||
yum
|
||||
|
||||
Reference in New Issue
Block a user