mirror of
https://github.com/nikdoof/vapemap.git
synced 2025-12-23 22:59:23 +00:00
Vagrant Support
Brings in the basic config for Vagrant, missing elasticsearch but its enough to bring up a Vagrant instance of the main web app.
This commit is contained in:
34
puppet/manifests/classes/apt.pp
Normal file
34
puppet/manifests/classes/apt.pp
Normal file
@@ -0,0 +1,34 @@
|
||||
stage {'repo': before => Stage['pre']}
|
||||
|
||||
class apt {
|
||||
exec {'apt-get-update':
|
||||
path => '/usr/local/bin:/usr/bin:/bin',
|
||||
command => 'apt-get update',
|
||||
}
|
||||
}
|
||||
|
||||
class {'apt': stage => 'repo' }
|
||||
|
||||
define apt::repo ($source, $key) {
|
||||
|
||||
file {"/etc/apt/sources.list.d/${name}.list":
|
||||
source => "${source}",
|
||||
owner => root,
|
||||
group => root,
|
||||
mode => 0644,
|
||||
notify => Exec['apt-get-update'],
|
||||
}
|
||||
|
||||
apt::key{"${name}-key":
|
||||
key => "${key}",
|
||||
}
|
||||
}
|
||||
|
||||
define apt::key($key) {
|
||||
exec {"${name}-exec":
|
||||
command => "/usr/bin/env bash -c 'apt-key adv --recv-key --keyserver keyserver.ubuntu.com ${key}'",
|
||||
}
|
||||
}
|
||||
|
||||
Apt::Repo <| |> -> Exec['apt-get-update']
|
||||
Apt::Key <| |> -> Exec['apt-get-update']
|
||||
6
puppet/manifests/classes/django.pp
Normal file
6
puppet/manifests/classes/django.pp
Normal file
@@ -0,0 +1,6 @@
|
||||
|
||||
class django::uwsgi {
|
||||
include nginx
|
||||
include uwsgi
|
||||
}
|
||||
|
||||
0
puppet/manifests/classes/gunicorn.pp
Normal file
0
puppet/manifests/classes/gunicorn.pp
Normal file
34
puppet/manifests/classes/mysql.pp
Normal file
34
puppet/manifests/classes/mysql.pp
Normal file
@@ -0,0 +1,34 @@
|
||||
# Get mysql up and running
|
||||
class mysql {
|
||||
package { "mysql-server":
|
||||
ensure => installed,
|
||||
}
|
||||
|
||||
case $operatingsystem {
|
||||
ubuntu: {
|
||||
package { "libmysqld-dev":
|
||||
ensure => installed,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
service { "mysql":
|
||||
ensure => running,
|
||||
enable => true,
|
||||
require => Package['mysql-server'],
|
||||
}
|
||||
}
|
||||
|
||||
define mysql::database($user, $password) {
|
||||
exec { "create-${name}-db":
|
||||
unless => "/usr/bin/mysql -uroot ${name}",
|
||||
command => "/usr/bin/mysql -uroot -e \"create database ${name};\"",
|
||||
require => Service["mysql"],
|
||||
}
|
||||
|
||||
exec { "grant-${name}-db":
|
||||
unless => "/usr/bin/mysql -u${user} -p${password} ${name}",
|
||||
command => "/usr/bin/mysql -uroot -e \"grant all on ${name}.* to ${user}@localhost identified by '$password';\"",
|
||||
require => [Service["mysql"], Exec["create-${name}-db"]]
|
||||
}
|
||||
}
|
||||
75
puppet/manifests/classes/nginx.pp
Normal file
75
puppet/manifests/classes/nginx.pp
Normal file
@@ -0,0 +1,75 @@
|
||||
class nginx {
|
||||
|
||||
include nginx::apt
|
||||
|
||||
package {'nginx':
|
||||
ensure => latest,
|
||||
require => Apt::Repo['nginx'],
|
||||
}
|
||||
service {'nginx':
|
||||
ensure => running,
|
||||
enable => true,
|
||||
require => Package['nginx'],
|
||||
}
|
||||
|
||||
file{['/etc/nginx/sites-available', '/etc/nginx/sites-enabled']:
|
||||
ensure => directory,
|
||||
}
|
||||
|
||||
# Remove the default config
|
||||
file {['/etc/nginx/sites-enabled/default', '/etc/nginx/conf.d/default.conf']:
|
||||
ensure => absent,
|
||||
require => Package['nginx'],
|
||||
notify => Service['nginx'],
|
||||
}
|
||||
|
||||
file {'/etc/nginx/nginx.conf':
|
||||
owner => root,
|
||||
group => root,
|
||||
mode => 0644,
|
||||
ensure => present,
|
||||
source => '/vagrant/puppet/files/nginx/nginx.conf',
|
||||
require => Package['nginx'],
|
||||
notify => Service['nginx'],
|
||||
}
|
||||
}
|
||||
|
||||
class nginx::apt {
|
||||
apt::repo {'nginx':
|
||||
source => '/vagrant/puppet/files/nginx/nginx.list',
|
||||
key => 'ABF5BD827BD9BF62',
|
||||
}
|
||||
}
|
||||
|
||||
class {'nginx::apt': stage => 'repo' }
|
||||
|
||||
|
||||
# Setup a gunicorn instance in nginx
|
||||
define nginx::gunicorn($ensure, $host, $port, $root, $static='') {
|
||||
case $ensure {
|
||||
enabled: {
|
||||
file{"/etc/nginx/sites-available/${name}.conf":
|
||||
content => template('nginx/gunicorn.erb'),
|
||||
ensure => present,
|
||||
notify => Service['nginx'],
|
||||
require => [Package['nginx'], File['/etc/nginx/sites-available']],
|
||||
}
|
||||
file{"/etc/nginx/sites-enabled/${name}.conf":
|
||||
ensure => link,
|
||||
target => "/etc/nginx/sites-available/${name}.conf",
|
||||
notify => Service['nginx'],
|
||||
require => [File["/etc/nginx/sites-available/${name}.conf"], File['/etc/nginx/sites-enabled']],
|
||||
}
|
||||
}
|
||||
absent: {
|
||||
file{"/etc/nginx/sites-available/${name}.conf":
|
||||
ensure => absent,
|
||||
notify => Service['nginx'],
|
||||
}
|
||||
file{"/etc/nginx/sites-enabled/${name}.conf":
|
||||
ensure => absent,
|
||||
notify => Service['nginx'],
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
47
puppet/manifests/classes/python.pp
Normal file
47
puppet/manifests/classes/python.pp
Normal file
@@ -0,0 +1,47 @@
|
||||
stage { 'pre': before => Stage['main'] }
|
||||
|
||||
class python {
|
||||
|
||||
package {
|
||||
"build-essential": ensure => latest;
|
||||
"python": ensure => latest;
|
||||
"python-dev": ensure => latest;
|
||||
"python-setuptools": ensure => installed;
|
||||
"git-core": ensure => installed;
|
||||
"mercurial": ensure => installed;
|
||||
"libevent-dev": ensure => installed;
|
||||
"libgeos-dev": ensure => installed;
|
||||
}
|
||||
exec {'pip-package':
|
||||
command => 'easy_install pip',
|
||||
path => '/usr/local/bin:/usr/bin:/bin',
|
||||
require => Package['python-setuptools'],
|
||||
subscribe => Package['python-setuptools'],
|
||||
}
|
||||
package {['virtualenv', 'virtualenvwrapper', 'gunicorn', 'gevent']:
|
||||
ensure => latest,
|
||||
provider => pip,
|
||||
require => Exec['pip-package'],
|
||||
}
|
||||
}
|
||||
class { 'python': stage => 'pre' }
|
||||
|
||||
define python::venv($path, $requirements) {
|
||||
|
||||
file {"$requirements":
|
||||
ensure => present,
|
||||
}
|
||||
|
||||
exec{"${name}-venv":
|
||||
path => '/usr/local/bin:/usr/bin:/bin',
|
||||
command => "virtualenv --system-site-packages ${path}",
|
||||
creates => "${path}",
|
||||
require => Package['virtualenv'],
|
||||
}
|
||||
exec {"${name}-requirements":
|
||||
command => "/usr/bin/env bash -c 'source ${path}/bin/activate; pip install -i http://f.pypi.python.org/simple -r ${requirements}'",
|
||||
require => Exec["${name}-venv"],
|
||||
subscribe => File["$requirements"],
|
||||
}
|
||||
|
||||
}
|
||||
25
puppet/manifests/classes/redis.pp
Normal file
25
puppet/manifests/classes/redis.pp
Normal file
@@ -0,0 +1,25 @@
|
||||
class redis {
|
||||
|
||||
include redis::apt
|
||||
|
||||
package {'redis-server':
|
||||
ensure => latest,
|
||||
require => Apt::Repo['redis'],
|
||||
}
|
||||
|
||||
service { 'redis-server':
|
||||
ensure => running,
|
||||
enable => true,
|
||||
hasrestart => true,
|
||||
require => Package['redis-server'],
|
||||
}
|
||||
}
|
||||
|
||||
class redis::apt {
|
||||
apt::repo {'redis':
|
||||
source => '/vagrant/puppet/files/redis/redis.list',
|
||||
key => '5862E31D',
|
||||
}
|
||||
}
|
||||
|
||||
class {'redis::apt': stage => 'repo' }
|
||||
30
puppet/manifests/classes/supervisor.pp
Normal file
30
puppet/manifests/classes/supervisor.pp
Normal file
@@ -0,0 +1,30 @@
|
||||
class supervisor {
|
||||
package{'supervisor':
|
||||
ensure => latest,
|
||||
}
|
||||
|
||||
service{'supervisor':
|
||||
ensure => running,
|
||||
hasrestart => false,
|
||||
require => Package['supervisor'],
|
||||
}
|
||||
}
|
||||
|
||||
define supervisor::program(
|
||||
$command = $title,
|
||||
$directory = "/tmp/",
|
||||
$user = "nobody",
|
||||
$autostart = true,
|
||||
$autorestart = true,
|
||||
$redirect_stderr = true)
|
||||
{
|
||||
|
||||
file {"/etc/supervisor/conf.d/$title.conf":
|
||||
ensure => present,
|
||||
owner => "root",
|
||||
group => "root",
|
||||
content => template('supervisor/program.erb'),
|
||||
notify => Service['supervisor'],
|
||||
require => Package['supervisor'],
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user