ventriloquist 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -1
- data/.rspec +2 -0
- data/CHANGELOG.md +3 -0
- data/Gemfile +16 -0
- data/Gemfile.lock +118 -0
- data/Guardfile +5 -0
- data/LICENSE.txt +1 -1
- data/README.md +191 -9
- data/Rakefile +2 -0
- data/development/Vagrantfile +50 -0
- data/lib/ventriloquist/cap/debian/git_install.rb +18 -0
- data/lib/ventriloquist/cap/debian/go_install.rb +34 -0
- data/lib/ventriloquist/cap/debian/install_build_tools.rb +18 -0
- data/lib/ventriloquist/cap/debian/mercurial_install.rb +18 -0
- data/lib/ventriloquist/cap/debian/mysql_install_client.rb +18 -0
- data/lib/ventriloquist/cap/debian/mysql_install_headers.rb +18 -0
- data/lib/ventriloquist/cap/debian/nodejs_install.rb +21 -0
- data/lib/ventriloquist/cap/debian/pg_install_client.rb +18 -0
- data/lib/ventriloquist/cap/debian/pg_install_headers.rb +18 -0
- data/lib/ventriloquist/cap/debian/phantomjs_install.rb +24 -0
- data/lib/ventriloquist/cap/debian/ventriloquist_containers_upstart.rb +33 -0
- data/lib/ventriloquist/cap/linux/download.rb +26 -0
- data/lib/ventriloquist/cap/linux/make.rb +14 -0
- data/lib/ventriloquist/cap/linux/mysql_configure_client.rb +18 -0
- data/lib/ventriloquist/cap/linux/pg_export_pghost.rb +18 -0
- data/lib/ventriloquist/cap/linux/rvm_install.rb +17 -0
- data/lib/ventriloquist/cap/linux/rvm_install_ruby.rb +18 -0
- data/lib/ventriloquist/cap/linux/untar.rb +14 -0
- data/lib/ventriloquist/config.rb +12 -0
- data/lib/ventriloquist/errors.rb +8 -0
- data/lib/ventriloquist/platform.rb +11 -0
- data/lib/ventriloquist/platforms/go.rb +13 -0
- data/lib/ventriloquist/platforms/nodejs.rb +11 -0
- data/lib/ventriloquist/platforms/phantomjs.rb +12 -0
- data/lib/ventriloquist/platforms/ruby.rb +15 -0
- data/lib/ventriloquist/platforms_builder.rb +56 -0
- data/lib/ventriloquist/plugin.rb +119 -0
- data/lib/ventriloquist/provisioner.rb +59 -0
- data/lib/ventriloquist/service.rb +23 -0
- data/lib/ventriloquist/services/mysql.rb +39 -0
- data/lib/ventriloquist/services/postgresql.rb +39 -0
- data/lib/ventriloquist/services/redis.rb +31 -0
- data/lib/ventriloquist/services_builder.rb +66 -0
- data/lib/ventriloquist/version.rb +4 -2
- data/lib/ventriloquist.rb +1 -5
- data/locales/en.yml +1 -0
- data/services/base/Dockerfile +15 -0
- data/services/build-all.sh +20 -0
- data/services/elasticsearch/Dockerfile +12 -0
- data/services/memcached/Dockerfile +17 -0
- data/services/mysql/Dockerfile +20 -0
- data/services/mysql/config/bin/add-mysql-user +19 -0
- data/services/openjdk7/Dockerfile +9 -0
- data/services/postgresql/9.1/Dockerfile +20 -0
- data/services/postgresql/9.1/config/bin/prepare-postgres +27 -0
- data/services/postgresql/9.1/config/bin/start-postgres +6 -0
- data/services/postgresql/9.1/config/etc/postgresql/9.1/main/pg_hba.conf +3 -0
- data/services/postgresql/9.2/Dockerfile +15 -0
- data/services/postgresql/9.2/config/bin/prepare-postgres +25 -0
- data/services/postgresql/9.2/config/bin/start-postgres +6 -0
- data/services/postgresql/9.2/config/etc/postgresql/9.2/main/postgresql.conf +573 -0
- data/services/redis/Dockerfile +11 -0
- data/spec/spec_helper.rb +26 -0
- data/spec/unit/platforms_builder_spec.rb +50 -0
- data/spec/unit/service_spec.rb +38 -0
- data/spec/unit/services_builder_spec.rb +54 -0
- data/tasks/spec.rake +9 -0
- data/ventriloquist.gemspec +16 -13
- metadata +88 -9
@@ -0,0 +1,66 @@
|
|
1
|
+
require_relative 'service'
|
2
|
+
require_relative 'services/postgresql'
|
3
|
+
require_relative 'services/redis'
|
4
|
+
require_relative 'services/mysql'
|
5
|
+
|
6
|
+
module VagrantPlugins
|
7
|
+
module Ventriloquist
|
8
|
+
class ServicesBuilder
|
9
|
+
MAPPING = {
|
10
|
+
'pg' => Services::PostgreSQL,
|
11
|
+
'mysql' => Services::MySql,
|
12
|
+
'redis' => Services::Redis
|
13
|
+
}
|
14
|
+
|
15
|
+
def initialize(services, mapping = MAPPING)
|
16
|
+
@services = services.flatten
|
17
|
+
@mapping = mapping
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.build(services, docker_client)
|
21
|
+
new(services).build(docker_client)
|
22
|
+
end
|
23
|
+
|
24
|
+
def build(docker_client)
|
25
|
+
@services.each_with_object([]) do |cfg, built_services|
|
26
|
+
case cfg
|
27
|
+
when Hash
|
28
|
+
built_services.concat build_services(cfg, docker_client)
|
29
|
+
when String, Symbol
|
30
|
+
built_services << create_service_provisioner(cfg, {}, docker_client)
|
31
|
+
else
|
32
|
+
raise "Unknown cfg type: #{cfg.class}"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def build_services(cfg_hash, docker_client)
|
40
|
+
cfg_hash.map do |name, config|
|
41
|
+
create_service_provisioner(name, config, docker_client)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def create_service_provisioner(name, config, docker_client)
|
46
|
+
name, tag = name.to_s.split(':')
|
47
|
+
|
48
|
+
# REFACTOR: This is a bit confusing...
|
49
|
+
config[:tag] ||= (tag || 'latest')
|
50
|
+
config[:image] ||= extract_image_name(name)
|
51
|
+
config[:image] << ":#{config[:tag]}"
|
52
|
+
|
53
|
+
klass = @mapping.fetch(name, Service)
|
54
|
+
klass.new(name, config, docker_client)
|
55
|
+
end
|
56
|
+
|
57
|
+
def extract_image_name(name)
|
58
|
+
if name =~ /(\w+\/\w+)/
|
59
|
+
$1
|
60
|
+
else
|
61
|
+
"fgrehm/ventriloquist-#{name}"
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
data/lib/ventriloquist.rb
CHANGED
data/locales/en.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
vagrant:
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# Base image for creating Ventriloquist services
|
2
|
+
#
|
3
|
+
# VERSION 0.0.1
|
4
|
+
|
5
|
+
FROM ubuntu:quantal
|
6
|
+
MAINTAINER Fabio Rehm "fgrehm@gmail.com"
|
7
|
+
|
8
|
+
ENV LC_ALL C
|
9
|
+
ENV DEBIAN_FRONTEND noninteractive
|
10
|
+
|
11
|
+
RUN echo "deb http://archive.ubuntu.com/ubuntu quantal main universe" > /etc/apt/sources.list
|
12
|
+
RUN apt-get update && apt-get -y upgrade && apt-get clean
|
13
|
+
|
14
|
+
RUN apt-get install -y wget curl vim language-pack-en build-essential software-properties-common && apt-get autoremove && apt-get clean
|
15
|
+
RUN locale-gen en_US && echo 'LANG="en_US.UTF-8"' >> /etc/default/locale
|
@@ -0,0 +1,20 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
|
3
|
+
set -e
|
4
|
+
|
5
|
+
PREFIX='fgrehm/ventriloquist'
|
6
|
+
|
7
|
+
docker build -t ${PREFIX}-base base
|
8
|
+
|
9
|
+
docker build -t ${PREFIX}-pg:latest postgresql/9.2
|
10
|
+
docker tag ${PREFIX}-pg:latest ${PREFIX}-pg 9.2
|
11
|
+
docker build -t ${PREFIX}-pg:9.1 postgresql/9.1
|
12
|
+
|
13
|
+
docker build -t ${PREFIX}-mysql mysql
|
14
|
+
|
15
|
+
docker build -t ${PREFIX}-openjdk7 openjdk7
|
16
|
+
docker build -t ${PREFIX}-elasticsearch elasticsearch
|
17
|
+
|
18
|
+
docker build -t ${PREFIX}-memcached memcached
|
19
|
+
|
20
|
+
docker build -t ${PREFIX}-redis redis
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# Elasticsearch 0.90.3
|
2
|
+
#
|
3
|
+
# VERSION 0.0.1
|
4
|
+
|
5
|
+
FROM fgrehm/ventriloquist-openjdk7
|
6
|
+
MAINTAINER Fabio Rehm "fgrehm@gmail.com"
|
7
|
+
|
8
|
+
ADD . /
|
9
|
+
RUN /tmp/install-elasticsearch.sh && rm /tmp/install-elasticsearch.sh
|
10
|
+
|
11
|
+
EXPOSE 9200:9200
|
12
|
+
CMD ["/usr/share/elasticsearch/bin/elasticsearch", "-f"]
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# Memcached
|
2
|
+
#
|
3
|
+
# VERSION 0.0.1
|
4
|
+
|
5
|
+
FROM fgrehm/ventriloquist-base
|
6
|
+
MAINTAINER Fabio Rehm "fgrehm@gmail.com"
|
7
|
+
|
8
|
+
# prevent apt from starting postgres right after the installation
|
9
|
+
RUN echo "#!/bin/sh\nexit 101" > /usr/sbin/policy-rc.d; chmod +x /usr/sbin/policy-rc.d
|
10
|
+
|
11
|
+
RUN apt-get install -y -q memcached && apt-get clean
|
12
|
+
|
13
|
+
# allow autostart again
|
14
|
+
RUN rm /usr/sbin/policy-rc.d
|
15
|
+
|
16
|
+
EXPOSE 11211:11211
|
17
|
+
CMD ["/usr/bin/memcached", "-u", "daemon"]
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# MySQL 5.5
|
2
|
+
#
|
3
|
+
# VERSION 0.0.1
|
4
|
+
|
5
|
+
FROM fgrehm/ventriloquist-base
|
6
|
+
MAINTAINER Fabio Rehm "fgrehm@gmail.com"
|
7
|
+
|
8
|
+
# prevent apt from starting mysql right after the installation
|
9
|
+
RUN echo "#!/bin/sh\nexit 101" > /usr/sbin/policy-rc.d; chmod +x /usr/sbin/policy-rc.d
|
10
|
+
|
11
|
+
RUN apt-get -q -y install mysql-server-5.5 && apt-get clean
|
12
|
+
|
13
|
+
# allow autostart again
|
14
|
+
RUN rm /usr/sbin/policy-rc.d
|
15
|
+
|
16
|
+
ADD config /
|
17
|
+
RUN /bin/add-mysql-user vagrant vagrant
|
18
|
+
|
19
|
+
EXPOSE 3306:3306
|
20
|
+
CMD ["/usr/sbin/mysqld"]
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
set -e
|
4
|
+
|
5
|
+
user=$1
|
6
|
+
password=$2
|
7
|
+
|
8
|
+
user='vagrant'
|
9
|
+
password='vagrant'
|
10
|
+
|
11
|
+
sed -i 's/127.0.0.1/0.0.0.0/' /etc/mysql/my.cnf
|
12
|
+
|
13
|
+
mysqld& sleep 3
|
14
|
+
|
15
|
+
mysqladmin -u root password $password
|
16
|
+
|
17
|
+
echo "create user '${user}'@'%' identified by '${password}'" | mysql -u root -p$password
|
18
|
+
echo "grant all on *.* to '${user}'@'%' with grant option" | mysql -u root -p$password
|
19
|
+
echo "FLUSH PRIVILEGES;" | mysql -uroot -p${password}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# PostgreSQL 9.1
|
2
|
+
#
|
3
|
+
# VERSION 0.0.1
|
4
|
+
|
5
|
+
FROM fgrehm/ventriloquist-base
|
6
|
+
MAINTAINER Fabio Rehm "fgrehm@gmail.com"
|
7
|
+
|
8
|
+
# prevent apt from starting postgres right after the installation
|
9
|
+
RUN echo "#!/bin/sh\nexit 101" > /usr/sbin/policy-rc.d; chmod +x /usr/sbin/policy-rc.d
|
10
|
+
|
11
|
+
RUN apt-get install -y -q postgresql-9.1 postgresql-contrib-9.1 && apt-get clean
|
12
|
+
|
13
|
+
# allow autostart again
|
14
|
+
RUN rm /usr/sbin/policy-rc.d
|
15
|
+
|
16
|
+
ADD config /
|
17
|
+
RUN /bin/prepare-postgres vagrant vagrant
|
18
|
+
|
19
|
+
EXPOSE 5432:5432
|
20
|
+
CMD ["/bin/start-postgres"]
|
@@ -0,0 +1,27 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
set -e
|
4
|
+
|
5
|
+
user=$1
|
6
|
+
password=$2
|
7
|
+
|
8
|
+
/etc/init.d/postgresql start
|
9
|
+
|
10
|
+
su postgres -c "createuser --superuser ${user}"
|
11
|
+
su postgres -c "createdb ${user}"
|
12
|
+
su postgres -c "psql -c \"ALTER ROLE ${user} PASSWORD '${password}'\""
|
13
|
+
|
14
|
+
# Based on https://gist.github.com/ffmike/877447
|
15
|
+
su postgres -c "psql postgres -c \"update pg_database set datallowconn = TRUE where datname = 'template0';\""
|
16
|
+
su postgres -c "psql template0 -c \"update pg_database set datistemplate = FALSE where datname = 'template1';\""
|
17
|
+
su postgres -c "psql template0 -c \"drop database template1;\""
|
18
|
+
su postgres -c "psql template0 -c \"create database template1 with template = template0 encoding = 'UTF8';\""
|
19
|
+
su postgres -c "psql template0 -c \"update pg_database set datistemplate = TRUE where datname = 'template1';\""
|
20
|
+
su postgres -c "psql template1 -c \"update pg_database set datallowconn = FALSE where datname = 'template0';\""
|
21
|
+
|
22
|
+
/etc/init.d/postgresql stop
|
23
|
+
|
24
|
+
# Avoid password for local connections
|
25
|
+
echo 'host all all all trust' >> /etc/postgresql/9.1/main/pg_hba.conf
|
26
|
+
# Allow connections from any IP
|
27
|
+
echo "listen_addresses='*'" >> /etc/postgresql/9.1/main/postgresql.conf
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# PostgreSQL 9.2
|
2
|
+
#
|
3
|
+
# VERSION 0.0.1
|
4
|
+
|
5
|
+
FROM fgrehm/ventriloquist-base
|
6
|
+
MAINTAINER Fabio Rehm "fgrehm@gmail.com"
|
7
|
+
|
8
|
+
RUN add-apt-repository ppa:pitti/postgresql && apt-get update
|
9
|
+
RUN apt-get install -y postgresql-9.2 postgresql-contrib-9.2 && apt-get clean
|
10
|
+
|
11
|
+
ADD config /
|
12
|
+
RUN /bin/prepare-postgres vagrant vagrant
|
13
|
+
|
14
|
+
EXPOSE 5432:5432
|
15
|
+
CMD ["/bin/start-postgres"]
|
@@ -0,0 +1,25 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
|
3
|
+
set -e
|
4
|
+
|
5
|
+
user=$1
|
6
|
+
password=$2
|
7
|
+
|
8
|
+
/etc/init.d/postgresql start
|
9
|
+
|
10
|
+
su postgres -c "createuser --superuser ${user}"
|
11
|
+
su postgres -c "createdb ${user}"
|
12
|
+
su postgres -c "psql -c \"ALTER ROLE ${user} PASSWORD '${password}'\""
|
13
|
+
|
14
|
+
# Based on https://gist.github.com/ffmike/877447
|
15
|
+
su postgres -c "psql postgres -c \"update pg_database set datallowconn = TRUE where datname = 'template0';\""
|
16
|
+
su postgres -c "psql template0 -c \"update pg_database set datistemplate = FALSE where datname = 'template1';\""
|
17
|
+
su postgres -c "psql template0 -c \"drop database template1;\""
|
18
|
+
su postgres -c "psql template0 -c \"create database template1 with template = template0 encoding = 'UTF8';\""
|
19
|
+
su postgres -c "psql template0 -c \"update pg_database set datistemplate = TRUE where datname = 'template1';\""
|
20
|
+
su postgres -c "psql template1 -c \"update pg_database set datallowconn = FALSE where datname = 'template0';\""
|
21
|
+
|
22
|
+
/etc/init.d/postgresql stop
|
23
|
+
|
24
|
+
# Avoid password for local connections
|
25
|
+
echo 'host all all all trust' >> /etc/postgresql/9.2/main/pg_hba.conf
|