You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
159 lines
3.9 KiB
159 lines
3.9 KiB
10 years ago
|
$ar_databases = ['activerecord_unittest', 'activerecord_unittest2']
|
||
|
$as_vagrant = 'sudo -u vagrant -H bash -l -c'
|
||
|
$home = '/home/vagrant'
|
||
|
|
||
|
# Pick a Ruby version modern enough, that works in the currently supported Rails
|
||
|
# versions, and for which RVM provides binaries.
|
||
|
$ruby_version = '2.1.1'
|
||
|
|
||
|
Exec {
|
||
|
path => ['/usr/sbin', '/usr/bin', '/sbin', '/bin']
|
||
|
}
|
||
|
|
||
|
# --- Preinstall Stage ---------------------------------------------------------
|
||
|
|
||
|
stage { 'preinstall':
|
||
|
before => Stage['main']
|
||
|
}
|
||
|
|
||
|
class apt_get_update {
|
||
|
exec { 'apt-get -y update':
|
||
|
unless => "test -e ${home}/.rvm"
|
||
|
}
|
||
|
}
|
||
|
class { 'apt_get_update':
|
||
|
stage => preinstall
|
||
|
}
|
||
|
|
||
|
# --- SQLite -------------------------------------------------------------------
|
||
|
|
||
|
package { ['sqlite3', 'libsqlite3-dev']:
|
||
|
ensure => installed;
|
||
|
}
|
||
|
|
||
|
# --- MySQL --------------------------------------------------------------------
|
||
|
|
||
|
class install_mysql {
|
||
|
class { 'mysql': }
|
||
|
|
||
|
class { 'mysql::server':
|
||
|
config_hash => { 'root_password' => '' }
|
||
|
}
|
||
|
|
||
|
database { $ar_databases:
|
||
|
ensure => present,
|
||
|
charset => 'utf8',
|
||
|
require => Class['mysql::server']
|
||
|
}
|
||
|
|
||
|
database_user { 'rails@localhost':
|
||
|
ensure => present,
|
||
|
require => Class['mysql::server']
|
||
|
}
|
||
|
|
||
|
database_grant { ['rails@localhost/activerecord_unittest', 'rails@localhost/activerecord_unittest2', 'rails@localhost/inexistent_activerecord_unittest']:
|
||
|
privileges => ['all'],
|
||
|
require => Database_user['rails@localhost']
|
||
|
}
|
||
|
|
||
|
package { 'libmysqlclient15-dev':
|
||
|
ensure => installed
|
||
|
}
|
||
|
}
|
||
|
class { 'install_mysql': }
|
||
|
|
||
|
# --- PostgreSQL ---------------------------------------------------------------
|
||
|
|
||
|
class install_postgres {
|
||
|
class { 'postgresql': }
|
||
|
|
||
|
class { 'postgresql::server': }
|
||
|
|
||
|
pg_database { $ar_databases:
|
||
|
ensure => present,
|
||
|
encoding => 'UTF8',
|
||
|
require => Class['postgresql::server']
|
||
|
}
|
||
|
|
||
|
pg_user { 'rails':
|
||
|
ensure => present,
|
||
|
require => Class['postgresql::server']
|
||
|
}
|
||
|
|
||
|
pg_user { 'vagrant':
|
||
|
ensure => present,
|
||
|
superuser => true,
|
||
|
require => Class['postgresql::server']
|
||
|
}
|
||
|
|
||
|
package { 'libpq-dev':
|
||
|
ensure => installed
|
||
|
}
|
||
|
|
||
|
package { 'postgresql-contrib':
|
||
|
ensure => installed,
|
||
|
require => Class['postgresql::server'],
|
||
|
}
|
||
|
}
|
||
|
class { 'install_postgres': }
|
||
|
|
||
|
# --- Memcached ----------------------------------------------------------------
|
||
|
|
||
|
class { 'memcached': }
|
||
|
|
||
|
# --- Packages -----------------------------------------------------------------
|
||
|
|
||
|
package { 'curl':
|
||
|
ensure => installed
|
||
|
}
|
||
|
|
||
|
package { 'build-essential':
|
||
|
ensure => installed
|
||
|
}
|
||
|
|
||
|
package { 'git-core':
|
||
|
ensure => installed
|
||
|
}
|
||
|
|
||
|
# Nokogiri dependencies.
|
||
|
package { ['libxml2', 'libxml2-dev', 'libxslt1-dev']:
|
||
|
ensure => installed
|
||
|
}
|
||
|
|
||
|
# ExecJS runtime.
|
||
|
package { 'nodejs':
|
||
|
ensure => installed
|
||
|
}
|
||
|
|
||
|
# --- Ruby ---------------------------------------------------------------------
|
||
|
|
||
|
exec { 'install_rvm':
|
||
|
command => "${as_vagrant} 'curl -L https://get.rvm.io | bash -s stable'",
|
||
|
creates => "${home}/.rvm/bin/rvm",
|
||
|
require => Package['curl']
|
||
|
}
|
||
|
|
||
|
exec { 'install_ruby':
|
||
|
# We run the rvm executable directly because the shell function assumes an
|
||
|
# interactive environment, in particular to display messages or ask questions.
|
||
|
# The rvm executable is more suitable for automated installs.
|
||
|
#
|
||
|
# use a ruby patch level known to have a binary
|
||
|
command => "${as_vagrant} '${home}/.rvm/bin/rvm install ruby-${ruby_version} --binary --autolibs=enabled && rvm alias create default ${ruby_version}'",
|
||
|
creates => "${home}/.rvm/bin/ruby",
|
||
|
require => Exec['install_rvm']
|
||
|
}
|
||
|
|
||
|
# RVM installs a version of bundler, but for edge Rails we want the most recent one.
|
||
|
exec { "${as_vagrant} 'gem install bundler --no-rdoc --no-ri'":
|
||
|
creates => "${home}/.rvm/bin/bundle",
|
||
|
require => Exec['install_ruby']
|
||
|
}
|
||
|
|
||
|
# --- Locale -------------------------------------------------------------------
|
||
|
|
||
|
# Needed for docs generation.
|
||
|
exec { 'update-locale':
|
||
|
command => 'update-locale LANG=en_US.UTF-8 LANGUAGE=en_US.UTF-8 LC_ALL=en_US.UTF-8'
|
||
|
}
|