provisioner 0.0.1
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.
- data/.gitignore +5 -0
- data/Gemfile +4 -0
- data/README.md +44 -0
- data/Rakefile +1 -0
- data/bin/provisioner +3 -0
- data/lib/provisioner.rb +5 -0
- data/lib/provisioner/cli.rb +87 -0
- data/lib/provisioner/version.rb +3 -0
- data/provisioner.gemspec +27 -0
- metadata +100 -0
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
Provisioner
|
2
|
+
=============
|
3
|
+
|
4
|
+
This command-line tool reduces the amount of time and repetition involved in provisioning new Heroku app instances.
|
5
|
+
|
6
|
+
Installation
|
7
|
+
------------
|
8
|
+
|
9
|
+
$ gem install provisioner
|
10
|
+
|
11
|
+
|
12
|
+
Basic Usage
|
13
|
+
-----------
|
14
|
+
|
15
|
+
To create a new Heroku app *and* configure the common (free) add-ons:
|
16
|
+
|
17
|
+
$ provisioner new application-name-staging
|
18
|
+
|
19
|
+
If you've already got a Heroku app, you can quickly configure the common (free) add-ons:
|
20
|
+
|
21
|
+
$ provisioner setup application-name-staging
|
22
|
+
|
23
|
+
There are some common add-ons that have a monthly cost associated with them. To enable those:
|
24
|
+
|
25
|
+
$ provisioner paid application-name-staging
|
26
|
+
|
27
|
+
|
28
|
+
Free Add-ons
|
29
|
+
------------
|
30
|
+
|
31
|
+
* deployhooks:email
|
32
|
+
* cron:daily
|
33
|
+
* newrelic:standard
|
34
|
+
* pgbackups:auto-week
|
35
|
+
* sendgrid:starter
|
36
|
+
* ssl:piggyback
|
37
|
+
* stillalive:basic
|
38
|
+
* logging:expanded
|
39
|
+
|
40
|
+
|
41
|
+
Paid Add-ons
|
42
|
+
------------
|
43
|
+
|
44
|
+
* hoptoad:basic ($2/mo)
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/bin/provisioner
ADDED
data/lib/provisioner.rb
ADDED
@@ -0,0 +1,87 @@
|
|
1
|
+
require 'thor'
|
2
|
+
require 'term/ansicolor'
|
3
|
+
module Provisioner
|
4
|
+
|
5
|
+
class CLI < Thor
|
6
|
+
include Term::ANSIColor
|
7
|
+
|
8
|
+
desc "new HEROKU_APP_NAME", "Creates a new Heroku app instance and sets up with common add-ons. (Free)"
|
9
|
+
def new(heroku_app_name)
|
10
|
+
|
11
|
+
print "\n"
|
12
|
+
print green + "Creating new Heroku instance." + clear + "\n"
|
13
|
+
system "heroku create #{heroku_app_name} --stack cedar"
|
14
|
+
setup(heroku_app_name)
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
desc "setup HEROKU_APP_NAME", "Set up common add-ons for an existing Heroku app instance. (Free)"
|
19
|
+
def setup(heroku_app_name)
|
20
|
+
|
21
|
+
app_flag = " --app #{heroku_app_name}"
|
22
|
+
|
23
|
+
# add email deployment notifications.
|
24
|
+
print "\n"
|
25
|
+
print green + "Enabling email deploy notifications." + clear + "\n"
|
26
|
+
print green + "We'll open a page where you can configure the email addresses to notify." + clear + "\n"
|
27
|
+
system "heroku addons:add deployhooks:email" + app_flag
|
28
|
+
system "open https://api.heroku.com/myapps/#{heroku_app_name}/addons/deployhooks:email"
|
29
|
+
print "\n"
|
30
|
+
|
31
|
+
# # add standardized staging error pages.
|
32
|
+
# print green + "Configuring helpful error and maintenance pages for staging." + clear + "\n"
|
33
|
+
# system "heroku config:add ERROR_PAGE_URL=http://wearetitans.net/staging/error MAINTENANCE_PAGE_URL=http://wearetitans.net/staging/maintenance" + app_flag
|
34
|
+
|
35
|
+
print green + "Enabling daily cron." + clear + "\n"
|
36
|
+
system "heroku addons:add cron:daily" + app_flag
|
37
|
+
print "\n"
|
38
|
+
|
39
|
+
print green + "Enabling the standard New Relic package." + clear + "\n"
|
40
|
+
system "heroku addons:add newrelic:standard" + app_flag
|
41
|
+
print "\n"
|
42
|
+
|
43
|
+
print green + "Enabling daily database backups with one week retention." + clear + "\n"
|
44
|
+
system "heroku addons:add pgbackups:auto-week" + app_flag
|
45
|
+
print "\n"
|
46
|
+
|
47
|
+
print green + "Enabling emails through SendGrid's starter package." + clear + "\n"
|
48
|
+
system "heroku addons:add sendgrid:starter" + app_flag
|
49
|
+
print "\n"
|
50
|
+
|
51
|
+
print green + "Enabling piggy-back SSL." + clear + "\n"
|
52
|
+
system "heroku addons:add ssl:piggyback" + app_flag
|
53
|
+
print "\n"
|
54
|
+
|
55
|
+
print green + "Enabling basic Still Alive service." + clear + "\n"
|
56
|
+
system "heroku addons:add stillalive:basic" + app_flag
|
57
|
+
print "\n"
|
58
|
+
|
59
|
+
print green + "Upgrading logging to expanded. (Still free.)" + clear + "\n"
|
60
|
+
system "heroku addons:upgrade logging:expanded" + app_flag
|
61
|
+
print "\n"
|
62
|
+
|
63
|
+
# print green + "Enabling custom domains."
|
64
|
+
# system "heroku addons:add custom_domains:basic" + app_flag
|
65
|
+
#
|
66
|
+
# # add titan's staging url
|
67
|
+
# if environment == 'staging'
|
68
|
+
# system "heroku domains:add #{heroku_app_name}.staging.titanclients.com" + app_flag
|
69
|
+
# end
|
70
|
+
|
71
|
+
end
|
72
|
+
|
73
|
+
desc "paid HEROKU_APP_NAME", "Add common but paid features to an existing Heroku app instance. ($2/mo)"
|
74
|
+
def paid(heroku_app_name)
|
75
|
+
|
76
|
+
app_flag = " --app #{heroku_app_name}"
|
77
|
+
|
78
|
+
print "\n"
|
79
|
+
print green + "Enabling the basic Hoptoad error notification package." + clear + "\n"
|
80
|
+
system "heroku addons:add hoptoad:basic" + app_flag
|
81
|
+
print "\n"
|
82
|
+
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
86
|
+
|
87
|
+
end
|
data/provisioner.gemspec
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "provisioner/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "provisioner"
|
7
|
+
s.version = Provisioner::VERSION
|
8
|
+
s.authors = ["Andrew Culver"]
|
9
|
+
s.email = ["andrew.culver@gmail.com"]
|
10
|
+
s.homepage = "http://github.com/andrewculver/provisioner"
|
11
|
+
s.summary = %q{Create Heroku apps and set up common add-ons automatically}
|
12
|
+
s.description = %q{This command-line tool reduces the amount of time and repetition involved in provisioning new Heroku app instances.}
|
13
|
+
|
14
|
+
s.rubyforge_project = "provisioner"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
# specify any dependencies here; for example:
|
22
|
+
# s.add_development_dependency "rspec"
|
23
|
+
s.add_runtime_dependency "rake"
|
24
|
+
s.add_runtime_dependency "thor"
|
25
|
+
s.add_runtime_dependency "heroku"
|
26
|
+
s.add_runtime_dependency "term-ansicolor"
|
27
|
+
end
|
metadata
ADDED
@@ -0,0 +1,100 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: provisioner
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Andrew Culver
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-01-22 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rake
|
16
|
+
requirement: &70141887111580 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70141887111580
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: thor
|
27
|
+
requirement: &70141887111140 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70141887111140
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: heroku
|
38
|
+
requirement: &70141887110700 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :runtime
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70141887110700
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: term-ansicolor
|
49
|
+
requirement: &70141887110260 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70141887110260
|
58
|
+
description: This command-line tool reduces the amount of time and repetition involved
|
59
|
+
in provisioning new Heroku app instances.
|
60
|
+
email:
|
61
|
+
- andrew.culver@gmail.com
|
62
|
+
executables:
|
63
|
+
- provisioner
|
64
|
+
extensions: []
|
65
|
+
extra_rdoc_files: []
|
66
|
+
files:
|
67
|
+
- .gitignore
|
68
|
+
- Gemfile
|
69
|
+
- README.md
|
70
|
+
- Rakefile
|
71
|
+
- bin/provisioner
|
72
|
+
- lib/provisioner.rb
|
73
|
+
- lib/provisioner/cli.rb
|
74
|
+
- lib/provisioner/version.rb
|
75
|
+
- provisioner.gemspec
|
76
|
+
homepage: http://github.com/andrewculver/provisioner
|
77
|
+
licenses: []
|
78
|
+
post_install_message:
|
79
|
+
rdoc_options: []
|
80
|
+
require_paths:
|
81
|
+
- lib
|
82
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
requirements: []
|
95
|
+
rubyforge_project: provisioner
|
96
|
+
rubygems_version: 1.8.10
|
97
|
+
signing_key:
|
98
|
+
specification_version: 3
|
99
|
+
summary: Create Heroku apps and set up common add-ons automatically
|
100
|
+
test_files: []
|