Added Vagrant VM for development purposes.
This patch will make development quite a bit easier, by allowing a new developer to just "spin up" a vm that contains all of storyboard's service dependencies. Change-Id: Iabd2043b21721966cb86d076488317d815315827
This commit is contained in:
parent
0fb9502678
commit
4e1bcdce18
1
.gitignore
vendored
1
.gitignore
vendored
@ -57,6 +57,7 @@ ChangeLog
|
|||||||
|
|
||||||
# Local settings
|
# Local settings
|
||||||
etc/storyboard.conf
|
etc/storyboard.conf
|
||||||
|
.vagrant
|
||||||
|
|
||||||
# IDE settings
|
# IDE settings
|
||||||
.idea
|
.idea
|
||||||
|
22
Vagrantfile
vendored
Normal file
22
Vagrantfile
vendored
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
VAGRANTFILE_API_VERSION = "2"
|
||||||
|
|
||||||
|
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
||||||
|
config.vm.box = "trusty64"
|
||||||
|
config.vm.box_url = "http://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box"
|
||||||
|
|
||||||
|
config.vm.network :forwarded_port, host_ip: '127.0.0.1', guest: 3306, host: 3306
|
||||||
|
config.vm.network :forwarded_port, host_ip: '127.0.0.1', guest: 15672, host: 15672
|
||||||
|
config.vm.network :forwarded_port, host_ip: '127.0.0.1', guest: 5672, host: 5672
|
||||||
|
|
||||||
|
config.vm.provider "virtualbox" do |v|
|
||||||
|
v.name = "storyboard_dev"
|
||||||
|
end
|
||||||
|
|
||||||
|
config.vm.provision "shell", path: "vagrant/bootstrap.sh"
|
||||||
|
|
||||||
|
config.vm.provision :puppet do |puppet|
|
||||||
|
puppet.manifests_path = "vagrant/puppet/manifests"
|
||||||
|
puppet.manifest_file = "site.pp"
|
||||||
|
puppet.options="--verbose --debug"
|
||||||
|
end
|
||||||
|
end
|
@ -5,6 +5,42 @@
|
|||||||
Storyboard has two components: this API server, and the
|
Storyboard has two components: this API server, and the
|
||||||
Javascript-based web client.
|
Javascript-based web client.
|
||||||
|
|
||||||
|
Launching the development VM
|
||||||
|
============================
|
||||||
|
|
||||||
|
StoryBoard has certain server dependencies which are often complicated to
|
||||||
|
install on any development environment. To simplify this,
|
||||||
|
we've provided a vagrantfile which includes all required services.
|
||||||
|
|
||||||
|
1. Install [vagrant](https://www.vagrantup.com/)
|
||||||
|
2. Install [VirtualBox](https://www.virtualbox.org/)
|
||||||
|
3. Run `vagrant up` in the storyboard root directory.
|
||||||
|
|
||||||
|
If you choose to go this route, the appropriate configuration values in
|
||||||
|
`storyboard.conf` will be as follows::
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
[notifications]
|
||||||
|
rabbit_host=127.0.0.1
|
||||||
|
rabbit_login_method = AMQPLAIN
|
||||||
|
rabbit_userid = storyboard
|
||||||
|
rabbit_password = storyboard
|
||||||
|
rabbit_port = 5672
|
||||||
|
rabbit_virtual_host = /
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
[database]
|
||||||
|
connection = mysql://storyboard:storyboard@127.0.0.1:3306/storyboard
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
Note that the VM will attempt to bind to local ports 3306, 5672,
|
||||||
|
and 15672. If those ports are already in use, you will have to modify the
|
||||||
|
vagrant file and your configuration to accommodate.
|
||||||
|
|
||||||
|
This VM has also been set up for unit tests.
|
||||||
|
|
||||||
Installing the API server
|
Installing the API server
|
||||||
=========================
|
=========================
|
||||||
@ -22,7 +58,7 @@ Installing the API server
|
|||||||
cd storyboard
|
cd storyboard
|
||||||
|
|
||||||
|
|
||||||
3. Add MySQL user and create database::
|
3. Add MySQL user and create database (not necessary if using VM)::
|
||||||
|
|
||||||
mysql -u $DB_USER -p$DB_PASSWORD -e 'DROP DATABASE IF EXISTS storyboard;'
|
mysql -u $DB_USER -p$DB_PASSWORD -e 'DROP DATABASE IF EXISTS storyboard;'
|
||||||
mysql -u $DB_USER -p$DB_PASSWORD -e 'CREATE DATABASE storyboard;'
|
mysql -u $DB_USER -p$DB_PASSWORD -e 'CREATE DATABASE storyboard;'
|
||||||
|
17
vagrant/bootstrap.sh
Normal file
17
vagrant/bootstrap.sh
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
apt-get update
|
||||||
|
apt-get install puppet
|
||||||
|
|
||||||
|
if [ ! -d "/etc/puppet/modules/mysql" ]; then
|
||||||
|
puppet module install puppetlabs-mysql --version 0.6.1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d "/etc/puppet/modules/rabbitmq" ]; then
|
||||||
|
puppet module install puppetlabs-rabbitmq --version 4.1.0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d "/etc/puppet/modules/erlang" ]; then
|
||||||
|
puppet module install garethr-erlang --version 0.3.0
|
||||||
|
fi
|
||||||
|
|
63
vagrant/puppet/manifests/site.pp
Normal file
63
vagrant/puppet/manifests/site.pp
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
node default {
|
||||||
|
$dev_user = 'storyboard'
|
||||||
|
$dev_password = 'storyboard'
|
||||||
|
|
||||||
|
include 'erlang'
|
||||||
|
package { 'erlang-base':
|
||||||
|
ensure => 'latest',
|
||||||
|
before => Class['rabbitmq']
|
||||||
|
}
|
||||||
|
|
||||||
|
##########################################################
|
||||||
|
##
|
||||||
|
## RabbitMQ
|
||||||
|
##
|
||||||
|
class { 'rabbitmq':
|
||||||
|
service_manage => true,
|
||||||
|
manage_repos => false,
|
||||||
|
delete_guest_user => true,
|
||||||
|
default_user => $dev_user,
|
||||||
|
default_pass => $dev_password,
|
||||||
|
}
|
||||||
|
|
||||||
|
rabbitmq_user { $dev_user:
|
||||||
|
ensure => present,
|
||||||
|
admin => true,
|
||||||
|
password => $dev_password,
|
||||||
|
require => Class['rabbitmq']
|
||||||
|
}
|
||||||
|
|
||||||
|
rabbitmq_user_permissions { "${dev_user}@/":
|
||||||
|
configure_permission => '.*',
|
||||||
|
read_permission => '.*',
|
||||||
|
write_permission => '.*',
|
||||||
|
require => Rabbitmq_user[$dev_user],
|
||||||
|
}
|
||||||
|
|
||||||
|
##########################################################
|
||||||
|
##
|
||||||
|
## MySQL
|
||||||
|
##
|
||||||
|
class {'mysql::server':
|
||||||
|
config_hash => {
|
||||||
|
bind_address => '0.0.0.0'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mysql::db { 'storyboard':
|
||||||
|
user => $dev_user,
|
||||||
|
password => $dev_password,
|
||||||
|
host => '%',
|
||||||
|
}
|
||||||
|
|
||||||
|
database_user{ 'openstack_citest@%':
|
||||||
|
ensure => present,
|
||||||
|
password_hash => mysql_password('openstack_citest'),
|
||||||
|
require => Class['mysql::server'],
|
||||||
|
}
|
||||||
|
|
||||||
|
database_grant{ 'openstack_citest@%/storyboard\_test\_db\_%':
|
||||||
|
privileges => ['ALL'],
|
||||||
|
require => Database_user['openstack_citest@%']
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user