apollon 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. checksums.yaml +4 -4
  2. data/.gemspec +35 -0
  3. data/.gitignore +5 -0
  4. data/Gemfile +4 -0
  5. data/Gemfile.lock +87 -0
  6. data/LICENSE +21 -0
  7. data/README.md +100 -0
  8. data/Rakefile +20 -0
  9. data/TODO.md +22 -0
  10. data/Vagrantfile +92 -0
  11. data/WHATS_IN.md +55 -0
  12. data/artifacts/.gitkeepme +1 -0
  13. data/clean.sh +3 -0
  14. data/lib/apollon/app/app.rb +1 -0
  15. data/lib/apollon/core/core.rb +8 -0
  16. data/lib/apollon/helpers/helpers.rb +28 -0
  17. data/lib/{lib.rb → apollon/lib.rb} +0 -0
  18. data/lib/apollon/provisions/provisions.rb +8 -0
  19. data/lib/apollon/provisions/puppet.rb +1 -0
  20. data/lib/apollon/version.rb +5 -0
  21. data/lib/apollon.rb +1 -0
  22. data/packs/README.md +15 -0
  23. data/packs/core/README.md +3 -0
  24. data/packs/core/pack-digitalocean.sh +8 -0
  25. data/packs/core/pack-vagrant.sh +16 -0
  26. data/packs/core/packer.json +82 -0
  27. data/packs/core/provision.sh +9 -0
  28. data/packs/core/scripts/provision-digitalocean.sh +11 -0
  29. data/packs/examples/aws/pack.sh +6 -0
  30. data/packs/examples/aws/packer.json +18 -0
  31. data/packs/examples/digitalocean/data/images.json +344 -0
  32. data/packs/examples/digitalocean/data/regions.json +22 -0
  33. data/packs/examples/digitalocean/data/sizes.json +92 -0
  34. data/packs/examples/digitalocean/pack.sh +4 -0
  35. data/packs/examples/digitalocean/packer.json +18 -0
  36. data/packs/examples/virtualbox-iso/pack.sh +15 -0
  37. data/packs/examples/virtualbox-iso/packer.json +49 -0
  38. data/packs/examples/virtualbox-iso/provision.sh +3 -0
  39. data/puppet/environment.conf +7 -0
  40. data/puppet/manifests/all.pp +10 -0
  41. data/puppet/manifests/core.pp +3 -0
  42. data/puppet/manifests/db.pp +3 -0
  43. data/puppet/manifests/default.pp +3 -0
  44. data/puppet/manifests/dev.pp +3 -0
  45. data/puppet/manifests/ops.pp +3 -0
  46. data/puppet/manifests/sites/apollocrawler.com.pp +5 -0
  47. data/puppet/manifests/web.pp +5 -0
  48. data/puppet/modules/apache2/files/apache2.conf +221 -0
  49. data/puppet/modules/apache2/files/envvars +47 -0
  50. data/puppet/modules/apache2/files/magic +935 -0
  51. data/puppet/modules/apache2/files/ports.conf +15 -0
  52. data/puppet/modules/apache2/manifests/init.pp +46 -0
  53. data/puppet/modules/clang/manifests/init.pp +11 -0
  54. data/puppet/modules/cmake/manifests/init.pp +11 -0
  55. data/puppet/modules/core/files/sources.list +62 -0
  56. data/puppet/modules/core/manifests/init.pp +63 -0
  57. data/puppet/modules/couchdb/files/local.ini +98 -0
  58. data/puppet/modules/couchdb/manifests/init.pp +25 -0
  59. data/puppet/modules/db/manifests/init.pp +13 -0
  60. data/puppet/modules/dev/manifests/init.pp +20 -0
  61. data/puppet/modules/elasticsearch/files/elasticsearch.yml +377 -0
  62. data/puppet/modules/elasticsearch/files/logging.yml +56 -0
  63. data/puppet/modules/elasticsearch/manifests/init.pp +45 -0
  64. data/puppet/modules/erlang/manifests/init.pp +11 -0
  65. data/puppet/modules/ghc/manifests/init.pp +11 -0
  66. data/puppet/modules/git/manifests/init.pp +11 -0
  67. data/puppet/modules/golang/manifests/init.pp +11 -0
  68. data/puppet/modules/htop/manifests/init.pp +11 -0
  69. data/puppet/modules/java/files/accept-java-license.sh +4 -0
  70. data/puppet/modules/java/files/install-java7.sh +7 -0
  71. data/puppet/modules/java/files/install-java8.sh +7 -0
  72. data/puppet/modules/java/manifests/init.pp +86 -0
  73. data/puppet/modules/links/manifests/init.pp +11 -0
  74. data/puppet/modules/llvm/manifests/init.pp +11 -0
  75. data/puppet/modules/lynx/manifests/init.pp +11 -0
  76. data/puppet/modules/mc/manifests/init.pp +11 -0
  77. data/puppet/modules/memcache/files/memcached.conf +47 -0
  78. data/puppet/modules/memcache/manifests/init.pp +24 -0
  79. data/puppet/modules/mongodb/files/mongodb.conf +102 -0
  80. data/puppet/modules/mongodb/manifests/init.pp +24 -0
  81. data/puppet/modules/mosh/manifests/init.pp +11 -0
  82. data/puppet/modules/mysql/files/conf.d/mysqld_safe_syslog.cnf +2 -0
  83. data/puppet/modules/mysql/files/debian.cnf +12 -0
  84. data/puppet/modules/mysql/files/my.cnf +127 -0
  85. data/puppet/modules/mysql/manifests/init.pp +45 -0
  86. data/puppet/modules/nginx/manifests/init.pp +16 -0
  87. data/puppet/modules/nodejs/manifests/init.pp +41 -0
  88. data/puppet/modules/octave/manifests/init.pp +11 -0
  89. data/puppet/modules/ops/manifests/init.pp +12 -0
  90. data/puppet/modules/php5/manifests/init.pp +11 -0
  91. data/puppet/modules/postgresql/files/9.3/main/environment +7 -0
  92. data/puppet/modules/postgresql/files/9.3/main/pg_ctl.conf +5 -0
  93. data/puppet/modules/postgresql/files/9.3/main/pg_hba.conf +99 -0
  94. data/puppet/modules/postgresql/files/9.3/main/pg_ident.conf +42 -0
  95. data/puppet/modules/postgresql/files/9.3/main/postgresql.conf +598 -0
  96. data/puppet/modules/postgresql/files/9.3/main/start.conf +9 -0
  97. data/puppet/modules/postgresql/files/create-postgresql-user.sh +4 -0
  98. data/puppet/modules/postgresql/files/sql/bootstrap.sh +1 -0
  99. data/puppet/modules/postgresql/files/sql/create-extension-adminpack.sql +1 -0
  100. data/puppet/modules/postgresql/files/sql/create-extension-postgis.sql +11 -0
  101. data/puppet/modules/postgresql/manifests/init.pp +145 -0
  102. data/puppet/modules/python/manifests/init.pp +11 -0
  103. data/puppet/modules/r/manifests/init.pp +11 -0
  104. data/puppet/modules/rabbitmq/files/enable-user-management.sh +3 -0
  105. data/puppet/modules/rabbitmq/manifests/init.pp +36 -0
  106. data/puppet/modules/redis/files/memcached.conf +47 -0
  107. data/puppet/modules/redis/manifests/init.pp +19 -0
  108. data/puppet/modules/ruby/manifests/init.pp +11 -0
  109. data/puppet/modules/rvm/manifests/init.pp +33 -0
  110. data/puppet/modules/science/manifests/init.pp +8 -0
  111. data/puppet/modules/squid/manifests/init.pp +16 -0
  112. data/puppet/modules/svn/manifests/init.pp +11 -0
  113. data/puppet/modules/tomcat7/files/tomcat-users.xml +6 -0
  114. data/puppet/modules/tomcat7/manifests/init.pp +24 -0
  115. data/puppet/modules/varnish/manifests/init.pp +11 -0
  116. data/puppet/modules/web/manifests/init.pp +10 -0
  117. data/puppet/modules/zookeeper/files/conf/configuration.xsl +24 -0
  118. data/puppet/modules/zookeeper/files/conf/environment +20 -0
  119. data/puppet/modules/zookeeper/files/conf/log4j.properties +51 -0
  120. data/puppet/modules/zookeeper/files/conf/zoo.cfg +51 -0
  121. data/puppet/modules/zookeeper/manifests/init.pp +27 -0
  122. data/tmp/.gitkeepme +1 -0
  123. data/vagrant/profiles/default.json +53 -0
  124. metadata +156 -35
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ed479ad53dbcbc3b7a91c23301481b4439fc8252
4
- data.tar.gz: 91d003050980e277c730f19d68aab330342c316e
3
+ metadata.gz: bade97999dd2e42347ce97c159457533b9a19042
4
+ data.tar.gz: c02d3789acdfca7e208245d1a29acc52f444fcb8
5
5
  SHA512:
6
- metadata.gz: 23129cd00f7f2f8310e8dbaa0186f839536913da864f52b5bdce3b2c1189bf4bef5e05d9c10fdc282d57b84b47db6363e7969771577269b26b5c61dfc4e2af51
7
- data.tar.gz: cb7bc15eb700ffcc1feb0c68065757abf8b0997459209a9e1229bf1c95c56af7a3d08072de71cbf5706931655cadeca57feb653d5ad821f51a7320756f288fe0
6
+ metadata.gz: 7452280fd78247841fc5424570c538127ab6ea58274949d8f811e644aca3d59d21e137045a156a3fba4475f2ece72bf68f8a4ad78697c22a9cf87d29789d9df5
7
+ data.tar.gz: a82c64b792a4d759a6f1d22c62d2cfd291016ffc39fc9e7c6abb84f278f1bffccd4dca9ea86f8548c501ae41c4143a99bd1562588bfa52894aa3c4e0f93180c5
data/.gemspec ADDED
@@ -0,0 +1,35 @@
1
+ # encoding: utf-8
2
+
3
+ require 'rubygems'
4
+
5
+ $:.push File.expand_path("../lib", __FILE__)
6
+
7
+ require 'apollon/version.rb'
8
+
9
+ Gem::Specification.new do |s|
10
+ s.name = 'apollon'
11
+ s.version = Apollon::VERSION
12
+ # s.platform = Gem::Platform::RUBY
13
+ s.summary = 'Apollo Fat Box'
14
+ s.description = 'CLI for Apollo Fat Box'
15
+ s.authors = [
16
+ 'Tomas Korcak'
17
+ ]
18
+ s.email = 'korczis@gmail.com'
19
+
20
+ s.homepage = 'https://github.com/korczis/apollon'
21
+ s.license = 'MIT'
22
+ s.require_paths = ['lib']
23
+
24
+ s.files = `git ls-files`.split("\n")
25
+ s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
26
+
27
+ s.add_dependency 'aws-sdk-core', '~> 2.0.0.rc7'
28
+ s.add_dependency 'digitalocean', '~> 1.1', '>= 1.1.0'
29
+ s.add_dependency 'json_pure', '~> 1.8', '>= 1.8.1'
30
+ s.add_dependency 'librarian-puppet', '~> 1.1', '>= 1.1.2'
31
+ s.add_dependency 'multi_json', '~> 1.10', '>= 1.10.1'
32
+ s.add_dependency 'prettyprint', '~> 0.0', '>= 0.0.1'
33
+ s.add_dependency 'puppet', '~> 3.6', '>= 3.6.2'
34
+ s.add_dependency 'rake', '~> 10.3', '>= 10.3.2'
35
+ end
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ *.box
2
+ .idea/
3
+ .vagrant/
4
+ packer_cache/
5
+
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in gooddata.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,87 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ apollon (0.0.2)
5
+ aws-sdk-core (~> 2.0.0.rc7)
6
+ digitalocean (~> 1.1, >= 1.1.0)
7
+ json_pure (~> 1.8, >= 1.8.1)
8
+ librarian-puppet (~> 1.1, >= 1.1.2)
9
+ multi_json (~> 1.10, >= 1.10.1)
10
+ prettyprint (~> 0.0, >= 0.0.1)
11
+ puppet (~> 3.6, >= 3.6.2)
12
+ rake (~> 10.3, >= 10.3.2)
13
+
14
+ GEM
15
+ remote: https://rubygems.org/
16
+ specs:
17
+ CFPropertyList (2.2.8)
18
+ activemodel (4.1.2)
19
+ activesupport (= 4.1.2)
20
+ builder (~> 3.1)
21
+ activesupport (4.1.2)
22
+ i18n (~> 0.6, >= 0.6.9)
23
+ json (~> 1.7, >= 1.7.7)
24
+ minitest (~> 5.1)
25
+ thread_safe (~> 0.1)
26
+ tzinfo (~> 1.1)
27
+ aws-sdk-core (2.0.0.rc9)
28
+ builder (~> 3.0)
29
+ jamespath
30
+ multi_json (~> 1.0)
31
+ multi_xml (~> 0.5)
32
+ builder (3.2.2)
33
+ digitalocean (1.1.0)
34
+ faraday (~> 0.8.9)
35
+ faraday_middleware (~> 0.9.0)
36
+ recursive-open-struct (~> 0.4.5)
37
+ facter (2.1.0)
38
+ CFPropertyList (~> 2.2.6)
39
+ faraday (0.8.9)
40
+ multipart-post (~> 1.2.0)
41
+ faraday_middleware (0.9.1)
42
+ faraday (>= 0.7.4, < 0.10)
43
+ her (0.7.2)
44
+ activemodel (>= 3.0.0, < 4.2)
45
+ activesupport (>= 3.0.0, < 4.2)
46
+ faraday (>= 0.8, < 1.0)
47
+ multi_json (~> 1.7)
48
+ hiera (1.3.4)
49
+ json_pure
50
+ highline (1.6.21)
51
+ i18n (0.6.9)
52
+ jamespath (0.5.0)
53
+ json (1.8.1)
54
+ json_pure (1.8.1)
55
+ librarian (0.1.2)
56
+ highline
57
+ thor (~> 0.15)
58
+ librarian-puppet (1.1.2)
59
+ json
60
+ librarian (>= 0.1.2)
61
+ puppet_forge
62
+ minitest (5.3.5)
63
+ multi_json (1.10.1)
64
+ multi_xml (0.5.5)
65
+ multipart-post (1.2.0)
66
+ prettyprint (0.0.1)
67
+ thor
68
+ puppet (3.6.2)
69
+ facter (> 1.6, < 3)
70
+ hiera (~> 1.0)
71
+ json_pure
72
+ rgen (~> 0.6.5)
73
+ puppet_forge (1.0.3)
74
+ her (~> 0.6)
75
+ rake (10.3.2)
76
+ recursive-open-struct (0.4.5)
77
+ rgen (0.6.6)
78
+ thor (0.19.1)
79
+ thread_safe (0.3.4)
80
+ tzinfo (1.2.1)
81
+ thread_safe (~> 0.1)
82
+
83
+ PLATFORMS
84
+ ruby
85
+
86
+ DEPENDENCIES
87
+ apollon!
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2014 Tomas Korcak
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,100 @@
1
+ # apollo-fat-box
2
+
3
+ Vagrant box containing lot of tools and libs for data science
4
+
5
+ ## Status
6
+
7
+ [![Code Climate](https://codeclimate.com/github/korczis/apollo-fat-box.png)](https://codeclimate.com/github/korczis/apollo-fat-box)
8
+
9
+ ## About
10
+
11
+ What is this heavy-weight box for? For super-quick prototyping.
12
+
13
+ Yes. You know what.
14
+
15
+ 1. You got an idea. You want to immediately start working on it.
16
+ 2. You realize you need to setup development environment with all the tools and stuff.
17
+
18
+ That is what this fat boy is here for.
19
+ It can be made up and running with [few commands](https://github.com/korczis/apollo-fat-box#getting-started).
20
+
21
+ ## What is included
22
+
23
+ Lot of useful stuff, for full list see [WHATS_IN.md](https://github.com/korczis/apollo-fat-box/blob/master/WHATS_IN.md)
24
+
25
+ - Databases - couchdb, memcached, mongodb, postgresql, redis, ...
26
+ - Programming Languages - c, c++, clojure, node.js, ruby/rvm, scala, ...
27
+ - Tools - mocha, ...
28
+
29
+ Again, for full list see [WHATS_IN.md](https://github.com/korczis/apollo-fat-box/blob/master/WHATS_IN.md)
30
+
31
+ ## Automagically forwarded services
32
+
33
+ This lists services which are automatically forwarded from running fat box to localhost.
34
+
35
+ That means that you can access them using [http://localhost:{HostPortNumer}](http://localhost:{HostPortNumer}) from table below.
36
+
37
+ | Service | Guest | Host | Username | Password |
38
+ | --------------|:------:|:-------------------------------:|:--------:|:--------:|
39
+ | SSH | 22 | [2222](ssh://localhost:2222) | vagrant | vagrant |
40
+ | Nginx | 80 | [81](http://localhost:81) | n/a | n/a |
41
+ | Zookeeper | 2181 | 2182 | n/a | n/a |
42
+ | PostgreSQL | 5432 | 5433 | vagrant | vagrant |
43
+ | CouchDB | 5984 | [5985](http://localhost:5985) | n/a | n/a |
44
+ | Redis | 6379 | 6380 | n/a | n/a |
45
+ | Tomcat7 | 8080 | [8081](http://localhost:8081) | vagrant | vagrant |
46
+ | ElasticSearch | 9200 | [9201](http://localhost:9201) | n/a | n/a |
47
+ | Memcached | 11211 | 11212 | n/a | n/a |
48
+ | RabbitMQ | 15672 | [15673](http://localhost:15673) | guest | guest |
49
+ | MongoDB | 27017 | [27018](http://localhost:27018) | n/a | n/a |
50
+ | MongoDB Rest | 28017 | [28018](http://localhost:28018) | n/a | n/a |
51
+
52
+ ## Getting Started
53
+
54
+ ### Prerequisites
55
+
56
+ - [Ruby](https://www.ruby-lang.org/en/)
57
+ - [Ruby gems](https://rubygems.org/pages/download)
58
+ - [Bundler](http://bundler.io/)
59
+ - [Vagrant](https://www.vagrantup.com/downloads.html)
60
+ - [Virtualbox](https://www.virtualbox.org/wiki/Downloads)
61
+
62
+ ### Installation
63
+
64
+ ```
65
+ # Clone this repo containging Vagrantfile with vagrant settings
66
+ git clone https://github.com/korczis/apollo-fat-box.git
67
+
68
+ # Enter the folder with Vagrantfile, be aware of trailing box folder in path!
69
+ cd apollo-fat-box
70
+
71
+ # Kick off the vagrant up process
72
+ vagrant up
73
+ ```
74
+
75
+ Example output of succesful launch can be found [here](https://gist.github.com/korczis/4789d566361b095f2e73).
76
+
77
+ ## Logging in
78
+
79
+ For loggining-in use vagrant ssh.
80
+
81
+ ```
82
+ vagrant ssh
83
+ ```
84
+
85
+ ## Destroying instance
86
+
87
+ Destroy instance using vagrant destroy.
88
+
89
+ ```
90
+ vagrant destroy
91
+ ```
92
+
93
+ ## TODO
94
+
95
+ For list of TODO stuff see [TODO.md](https://github.com/korczis/apollo-fat-box/blob/master/TODO.md)
96
+
97
+ ## Credits
98
+
99
+ - [@pavelbinar](https://github.com/pavelbinar) for QA and not just that.
100
+ - [@thnkr](https://github.com/thnkr/) for ideas, encouragement and other.
data/Rakefile ADDED
@@ -0,0 +1,20 @@
1
+ desc 'Get all tasks'
2
+ task :tasklist do
3
+ puts Rake.application.tasks
4
+ end
5
+
6
+ task :usage do
7
+ puts "No rake task specified so listing them ..."
8
+ Rake.application['tasklist'].invoke
9
+ end
10
+
11
+ desc 'Prepare required vagrant dependencies on local machine'
12
+ task :prepare do
13
+ exec 'vagrant plugin install vagrant-digitalocean'
14
+ end
15
+
16
+ # task :default => [:usage]
17
+
18
+ if $0 == __FILE__
19
+ Rake.application['usage'].invoke
20
+ end
data/TODO.md ADDED
@@ -0,0 +1,22 @@
1
+ # To Do
2
+
3
+ List of stuff which needs to be be done.
4
+
5
+ ## High Priority
6
+
7
+ - Install Apache Tika
8
+ - Install Apache Hadoop + Pig/Hive
9
+ - Install Apache HBase
10
+ - Install Apache Storm as Service (Apache Storm already installed in /opt/apache-storm-0.9.1)
11
+ - Install Kafka
12
+ - Install TitanDB
13
+ - Optionally Install Emscripten
14
+
15
+ ## Medium Priority
16
+
17
+ - Change password for all services to vagrant/vagrant
18
+
19
+ ## Low Priority
20
+
21
+ - Better message of the day with some stats
22
+
data/Vagrantfile ADDED
@@ -0,0 +1,92 @@
1
+ # encoding: utf-8
2
+
3
+ require 'pp'
4
+ require 'multi_json'
5
+
6
+ require_relative 'lib/lib'
7
+
8
+ # Make sure that the box we need is locally available
9
+ BOX_PATH = File.join(File.dirname(__FILE__), 'artifacts', 'vagrant.box')
10
+ CORE_PACKER_FOLDER = File.join(File.dirname(__FILE__), 'packs', 'core', 'pack.sh')
11
+
12
+ if File.exists?(BOX_PATH) == false
13
+ puts "Locally built vagrant.box does not exists. Creating ..."
14
+
15
+ Dir.chdir(File.dirname(CORE_PACKER_FOLDER)) {
16
+ system CORE_PACKER_FOLDER
17
+ }
18
+
19
+ puts "Done."
20
+
21
+ end
22
+
23
+ # Construct path to default apollo-fat-box profile
24
+ BASE_DIR = File.expand_path(File.dirname(__FILE__))
25
+
26
+ VAGRANT_DIR = File.join(BASE_DIR, 'vagrant')
27
+
28
+ PROFILES_DIR = File.join(VAGRANT_DIR, 'profiles')
29
+
30
+ DEFAULT_PROFILE_FILE = 'default.json'
31
+
32
+ DEFAULT_PROFILE_PATH = File.join(PROFILES_DIR, DEFAULT_PROFILE_FILE)
33
+
34
+ # Load default profile
35
+ nodes = MultiJson::load(File.new(DEFAULT_PROFILE_PATH))
36
+
37
+ # Iterate all configurations form loaded file
38
+ Vagrant.configure("2") do |config|
39
+ nodes.each do |node_def|
40
+ node_name = node_def['hostname'] || 'apollo-fat-node'
41
+
42
+ config.vm.define node_name do |node|
43
+ node.vm.box = node_def['box']
44
+ node.vm.box_url = node_def['box_url']
45
+
46
+ node.vm.boot_timeout = 1800
47
+
48
+ node.ssh.username = 'vagrant'
49
+ node.ssh.password = 'vagrant'
50
+
51
+ ports = node_def['network']['ports'] || []
52
+ ports.each do |port|
53
+ guest_port = port['guest']
54
+ host_port = port['host']
55
+ node.vm.network 'forwarded_port', guest: guest_port, host: host_port, auto_correct: true
56
+ end
57
+
58
+ # Specify and customize virtualization provider
59
+ node.vm.provider 'virtualbox' do |provider|
60
+ provider.customize ['modifyvm', :id, '--memory', 2048]
61
+ provider.customize ['modifyvm', :id, '--cpuexecutioncap', '85']
62
+ end
63
+
64
+ # config.vm.provider :digital_ocean do |provider, override|
65
+ # override.ssh.private_key_path = '~/.ssh/id_rsa'
66
+ # override.vm.box = 'digital_ocean'
67
+ #
68
+ # provider.client_id = ''
69
+ # provider.api_key = ''
70
+ # end
71
+
72
+ provisions = node_def['provisions'] || []
73
+ provisions.each do |provision|
74
+ if provision['name'] === 'puppet'
75
+ node.vm.provision :puppet do |puppet|
76
+ # Path to manifests folder
77
+ val = provision['manifests_path']
78
+ puppet.manifests_path = val if val
79
+
80
+ # Name of manifest used
81
+ val = provision['manifest_file']
82
+ puppet.manifest_file = val if val
83
+
84
+ # Folder where are puppet modules stored
85
+ val = provision['module_path']
86
+ puppet.module_path = val if val
87
+ end
88
+ end
89
+ end
90
+ end
91
+ end
92
+ end
data/WHATS_IN.md ADDED
@@ -0,0 +1,55 @@
1
+ # Installed
2
+
3
+ ## Databases
4
+
5
+ - MongoDB - from 10gen dist - http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/
6
+ - CouchdDB 1.5.0 - from official source
7
+ - PostgreSQL 9.3 - from official source
8
+
9
+ ## Libraries
10
+
11
+ - build-essantials, linux-headers-$(uname -r) - from official source
12
+ - DKMS - from official source
13
+ - libzmq3, libzmq3-dev - from official source
14
+
15
+ ## Programming Languages
16
+
17
+ - clang 3.2 - from official source
18
+ - clojure 1.2 - from official source
19
+ - clojure 1.4 - from official source
20
+ - haskell - using official source
21
+ - jdk-7u55-linux-x64 - http://www.enqlu.com/2014/03/how-to-install-oracle-java-78-jdk-and.html
22
+ - jdk-8u5-linux-x64 - http://www.enqlu.com/2014/03/how-to-install-oracle-java-78-jdk-and.html
23
+ - llvm 3.2 - from official source
24
+ - nodejs 0.10.25 - from official source
25
+ - python 3.4 - from official source
26
+ - rvm - from http://rvm.io/
27
+ - ruby 1.9.3 - using rvm
28
+ - scala 2.9.2 - from official source
29
+
30
+ ## Servers
31
+
32
+ - Apache Solr 4.8.0 - http://lucene.apache.org/solr/
33
+ - Apache Zookeper 3.4.5 - official source
34
+ - ElasticSearch 1.1.1 - http://www.elasticsearch.org/overview/elkdownloads/
35
+ - Memcached 1.4.14 - from official source
36
+ - Nginx - from official source
37
+ - Redis 2.6.13 - from official source
38
+ - RabbitMQ 3.1.3 - from official source
39
+ - Tomcat7 - from official source
40
+
41
+
42
+ ## Tools
43
+
44
+ - htop - from official source
45
+ - leiningen 1.7.1 - from official source
46
+ - links - from official source
47
+ - lynx - from official source
48
+ - maven 3.0.5 - from official source
49
+ - mc 4.8.11 - from official sourc
50
+ - mosh - from official source
51
+ - puppet - from official source
52
+ - puppet-master - from official source
53
+ - Vagrant - from official source
54
+ - VirtualBox Guest Additions - from host
55
+
@@ -0,0 +1 @@
1
+ # Keep this file to keep me this folder
data/clean.sh ADDED
@@ -0,0 +1,3 @@
1
+ #! /usr/bin/env bash
2
+
3
+ rm -rvf ~/VirtualBox\ VMs/apollo-fat-box_apollo-fat-box
@@ -0,0 +1 @@
1
+ # encoding: utf-8
@@ -0,0 +1,8 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'pathname'
4
+
5
+ base = Pathname(__FILE__).dirname.expand_path
6
+ Dir.glob(base + '*.rb').each do |file|
7
+ require file
8
+ end
@@ -0,0 +1,28 @@
1
+ require 'net/http'
2
+ require 'json'
3
+
4
+ uri = URI("https://api.github.com/gists")
5
+
6
+ payload = {
7
+ 'description' => "My test gist",
8
+ 'public' => true,
9
+ 'files' => {
10
+ 'test.txt' => {
11
+ 'content' => "This is a test!\n\nI am making a public gist."
12
+ }
13
+ }
14
+ }
15
+
16
+ req = Net::HTTP::Post.new(uri.path)
17
+ req.body = payload.to_json
18
+
19
+ puts req.inspect
20
+ puts req.body.inspect
21
+
22
+ # GitHub API is strictly via HTTPS, so SSL is mandatory
23
+ res = Net::HTTP.start(uri.hostname, uri.port, :use_ssl => true) do |http|
24
+ http.request(req)
25
+ end
26
+
27
+ puts res.inspect
28
+ puts res.body.inspect
File without changes
@@ -0,0 +1,8 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'pathname'
4
+
5
+ base = Pathname(__FILE__).dirname.expand_path
6
+ Dir.glob(base + '*.rb').each do |file|
7
+ require file
8
+ end
@@ -0,0 +1 @@
1
+ # encoding: UTF-8
@@ -0,0 +1,5 @@
1
+ # encoding: utf-8
2
+
3
+ module Apollon
4
+ VERSION = '0.0.3'
5
+ end
data/lib/apollon.rb ADDED
@@ -0,0 +1 @@
1
+ require 'apollon/lib'
data/packs/README.md ADDED
@@ -0,0 +1,15 @@
1
+ # Packs
2
+
3
+ packer.io
4
+
5
+ ## Packs list
6
+
7
+ List of referential packer.io packs.
8
+
9
+ ### core
10
+
11
+ Core packer.io pack
12
+
13
+ ### examples
14
+
15
+ Various packer.io example packs
@@ -0,0 +1,3 @@
1
+ # core
2
+
3
+ Core referential packer.io package
@@ -0,0 +1,8 @@
1
+ #! /usr/bin/env bash
2
+
3
+ packer build \
4
+ -only=digitalocean \
5
+ -var "digitalocean_id=$DIGITALOCEAN_ID" \
6
+ -var "digitalocean_api_key=$DIGITALOCEAN_API_KEY" \
7
+ -var "puppet_manifest_file=../../puppet/manifests/sites/apollocrawler.com.pp"
8
+ packer.json
@@ -0,0 +1,16 @@
1
+ #! /usr/bin/env bash
2
+
3
+ ARCH='i386'
4
+ ISO_CHECKSUM='08d25bf879e353686a974b7b14ae7d81'
5
+
6
+ MACHINE_TYPE=`uname -m`
7
+ if [ ${MACHINE_TYPE} == 'x86_64' ]; then
8
+ ARCH="amd64"
9
+ ISO_CHECKSUM="01545fa976c8367b4f0d59169ac4866c"
10
+ fi
11
+
12
+ packer build \
13
+ -only=virtualbox-iso \
14
+ -var "arch=$ARCH" \
15
+ -var "iso_checksum=$ISO_CHECKSUM" \
16
+ packer.json
@@ -0,0 +1,82 @@
1
+ {
2
+ "variables": {
3
+ "arch": "amd64",
4
+ "iso_checksum": "01545fa976c8367b4f0d59169ac4866c",
5
+
6
+ "ssh_username": "vagrant",
7
+ "ssh_password": "vagrant",
8
+
9
+ "digitalocean_id": "",
10
+ "digitalocean_api_key": "",
11
+
12
+ "puppet_manifest_dir": "../../puppet/manifests",
13
+ "puppet_manifest_file": "../../puppet/manifests/web.pp",
14
+ "puppet_module_paths": "../../puppet/modules",
15
+
16
+ "vagrant_output": "../../artifacts/vagrant.box"
17
+ },
18
+
19
+ "builders": [
20
+ {
21
+ "type": "virtualbox-iso",
22
+ "guest_os_type": "Ubuntu_64",
23
+ "iso_url": "http://releases.ubuntu.com/14.04/ubuntu-14.04-server-{{user `arch`}}.iso",
24
+ "iso_checksum": "{{user `iso_checksum`}}",
25
+ "iso_checksum_type": "md5",
26
+ "ssh_username": "{{user `ssh_username`}}",
27
+ "ssh_password": "{{user `ssh_password`}}",
28
+ "ssh_wait_timeout": "60m",
29
+ "boot_command": [
30
+ "<esc><esc><enter><wait>",
31
+ "/install/vmlinuz noapic preseed/url=http://dl.dropboxusercontent.com/s/6teatka2gwz26n6/preseed.pkg?dl=1&token_hash=AAG33VL21u-_yHt5qTpQHjGvig1l7CLNlMY5PsHlwrfP1Q&expiry=1400794765 <wait>",
32
+ "debian-installer=en_US auto locale=en_US kbd-chooser/method=us <wait>",
33
+ "hostname={{ .Name }} <wait>",
34
+ "fb=false debconf/frontend=noninteractive <wait>",
35
+ "keyboard-configuration/modelcode=SKIP keyboard-configuration/layout=USA keyboard-configuration/variant=USA console-setup/ask_detect=false <wait>",
36
+ "initrd=/install/initrd.gz -- <enter><wait>"
37
+ ],
38
+ "shutdown_command": "echo 'packer' | sudo -S shutdown -P now"
39
+ },
40
+ {
41
+ "type": "digitalocean",
42
+ "client_id": "{{user `digitalocean_id`}}",
43
+ "api_key": "{{user `digitalocean_api_key`}}",
44
+ "region": "sfo1",
45
+ "image": "ubuntu-14-04-x64",
46
+ "size": "2gb",
47
+ "droplet_name": "apollo-fat-box-{{timestamp}}",
48
+ "snapshot_name": "apollo-fat-box-{{timestamp}}",
49
+ "ssh_port": 22,
50
+ "ssh_timeout": "5m",
51
+ "ssh_username": "root",
52
+ "private_networking": false
53
+ }
54
+ ],
55
+
56
+ "provisioners": [
57
+ {
58
+ "type": "shell",
59
+ "script": "provision.sh"
60
+ },
61
+ {
62
+ "type": "shell",
63
+ "script": "scripts/provision-digitalocean.sh",
64
+ "only": ["digitalocean"]
65
+ },
66
+ {
67
+ "type": "puppet-masterless",
68
+ "only": ["digitalocean"],
69
+ "manifest_dir": "{{user `puppet_manifest_dir`}}",
70
+ "manifest_file": "{{user `puppet_manifest_file`}}",
71
+ "module_paths": "{{user `puppet_module_paths`}}"
72
+ }
73
+ ],
74
+
75
+ "post-processors": [
76
+ {
77
+ "type": "vagrant",
78
+ "only": ["virtualbox-iso"],
79
+ "output": "{{user `vagrant_output`}}"
80
+ }
81
+ ]
82
+ }