awskit 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/.rspec +2 -0
- data/.travis.yml +4 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +674 -0
- data/README.md +4 -0
- data/Rakefile +6 -0
- data/awskit.gemspec +35 -0
- data/bin/awskit +6 -0
- data/lib/awskit/cli.rb +40 -0
- data/lib/awskit/gen/cli.rb +35 -0
- data/lib/awskit/gen/cookbook/kitchen_template_binding.rb +41 -0
- data/lib/awskit/gen/cookbook/service.rb +123 -0
- data/lib/awskit/gen/cookbook/templates/.gitignore +18 -0
- data/lib/awskit/gen/cookbook/templates/.kitchen.yml.erb +43 -0
- data/lib/awskit/gen/cookbook/templates/Berksfile +6 -0
- data/lib/awskit/gen/cookbook/templates/Gemfile +22 -0
- data/lib/awskit/gen/cookbook/templates/README.md.erb +3 -0
- data/lib/awskit/gen/cookbook/templates/Thorfile +5 -0
- data/lib/awskit/gen/cookbook/templates/Vagrantfile.erb +90 -0
- data/lib/awskit/gen/cookbook/templates/attributes/default.rb +2 -0
- data/lib/awskit/gen/cookbook/templates/chefignore +94 -0
- data/lib/awskit/gen/cookbook/templates/metadata.rb.erb +9 -0
- data/lib/awskit/gen/cookbook/templates/recipes/configure.rb +0 -0
- data/lib/awskit/gen/cookbook/templates/recipes/deploy.rb +0 -0
- data/lib/awskit/gen/cookbook/templates/recipes/setup.rb +1 -0
- data/lib/awskit/gen/cookbook/templates/recipes/shutdown.rb +0 -0
- data/lib/awskit/gen/cookbook/templates/recipes/undeploy.rb +0 -0
- data/lib/awskit/gen/cookbook/templates/test/integration/default/serverspec/localhost/common_spec.rb +6 -0
- data/lib/awskit/gen/cookbook/templates/test/integration/default/serverspec/spec_helper.rb +11 -0
- data/lib/awskit/gen/cookbook/vagrantfile_template_binding.rb +17 -0
- data/lib/awskit/gen/template_writer.rb +28 -0
- data/lib/awskit/gen/toolkit/files/.gitignore +9 -0
- data/lib/awskit/gen/toolkit/files/.rspec +2 -0
- data/lib/awskit/gen/toolkit/files/Gemfile +4 -0
- data/lib/awskit/gen/toolkit/files/LICENSE.txt +674 -0
- data/lib/awskit/gen/toolkit/files/README.md +3 -0
- data/lib/awskit/gen/toolkit/files/Rakefile +6 -0
- data/lib/awskit/gen/toolkit/service.rb +136 -0
- data/lib/awskit/gen/toolkit/templates/bin.erb +6 -0
- data/lib/awskit/gen/toolkit/templates/cli.erb +31 -0
- data/lib/awskit/gen/toolkit/templates/spec_helper.erb +2 -0
- data/lib/awskit/gen/toolkit/templates/toolkit.erb +24 -0
- data/lib/awskit/gen/toolkit/templates/toolkit.gemspec.erb +35 -0
- data/lib/awskit/gen/toolkit/templates/toolkit_spec.erb +11 -0
- data/lib/awskit/gen/toolkit/templates/version.erb +3 -0
- data/lib/awskit/gen/toolkit/toolkit_template_binding.rb +19 -0
- data/lib/awskit/version.rb +3 -0
- data/lib/awskit.rb +28 -0
- metadata +150 -0
data/Rakefile
ADDED
data/awskit.gemspec
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'awskit/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "awskit"
|
8
|
+
spec.version = Awskit::VERSION
|
9
|
+
spec.authors = ["Jeremy Hahn"]
|
10
|
+
spec.email = ["mail@jeremyhahn.com"]
|
11
|
+
|
12
|
+
spec.summary = %q{DevOps automation toolkit generator for AWS.}
|
13
|
+
spec.description = %q{Generates an AWS DevOps toolkit.}
|
14
|
+
spec.homepage = "https://github.com/jeremyhahn/awskit"
|
15
|
+
spec.license = "GPLv3"
|
16
|
+
|
17
|
+
# Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
|
18
|
+
# delete this section to allow pushing this gem to any host.
|
19
|
+
if spec.respond_to?(:metadata)
|
20
|
+
spec.metadata['allowed_push_host'] = "https://rubygems.org"
|
21
|
+
else
|
22
|
+
raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
|
23
|
+
end
|
24
|
+
|
25
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
26
|
+
spec.bindir = "exe"
|
27
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
28
|
+
spec.require_paths = ["lib"]
|
29
|
+
|
30
|
+
spec.add_development_dependency "bundler", "~> 1.11"
|
31
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
32
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
33
|
+
|
34
|
+
spec.add_runtime_dependency 'stackit', "~> 0"
|
35
|
+
end
|
data/bin/awskit
ADDED
data/lib/awskit/cli.rb
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'stackit/cli/stack_cli'
|
2
|
+
require 'awskit'
|
3
|
+
|
4
|
+
module Awskit
|
5
|
+
class Cli < Stackit::BaseCli
|
6
|
+
|
7
|
+
def initialize(*args)
|
8
|
+
super(*args)
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.require_clis
|
12
|
+
Dir.glob("#{Awskit.home}/awskit/*") do |pkg|
|
13
|
+
next if File.file?(pkg)
|
14
|
+
pkg_name = pkg.split('/').last
|
15
|
+
full_pkg_name = "Awskit::#{pkg_name.capitalize}::Cli"
|
16
|
+
cli = "#{pkg}/cli.rb"
|
17
|
+
if File.exist?(cli)
|
18
|
+
require cli
|
19
|
+
clazz = full_pkg_name.constantize
|
20
|
+
clazz.initialize_cli if clazz.respond_to?('initialize_cli')
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
desc 'version', 'Displays awskit version'
|
26
|
+
def version
|
27
|
+
puts <<-LOGO
|
28
|
+
___ _ _______ __ __ __________
|
29
|
+
/ | | / / ___// //_// _/_ __/
|
30
|
+
/ /| | | /| / /\__ \/ ,< / / / /
|
31
|
+
/ ___ | |/ |/ /___/ / /| |_/ / / /
|
32
|
+
/_/ |_|__/|__//____/_/ |_/___/ /_/
|
33
|
+
|
34
|
+
Amazon Web Services Toolkit Generator v#{Awskit::VERSION}
|
35
|
+
|
36
|
+
LOGO
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'erb'
|
2
|
+
require 'awskit/gen/template_writer'
|
3
|
+
require 'awskit/gen/toolkit/service'
|
4
|
+
require 'awskit/gen/cookbook/service'
|
5
|
+
|
6
|
+
module Awskit::Gen
|
7
|
+
|
8
|
+
class Cli < Stackit::BaseCli
|
9
|
+
|
10
|
+
def initialize(*args)
|
11
|
+
super(*args)
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.initialize_cli
|
15
|
+
Thor.desc "gen", "AWS DevOps toolkit cookbook scaffolding"
|
16
|
+
Thor.subcommand "gen", self
|
17
|
+
end
|
18
|
+
|
19
|
+
desc 'toolkit', 'Generate a new toolkit'
|
20
|
+
method_option :name, aliases: '-n', desc: 'The toolkit name', :required => true
|
21
|
+
method_option :path, aliases: '-p', desc: 'A file system path to output the generated toolkit'
|
22
|
+
def toolkit
|
23
|
+
Toolkit::Service.new(options).gen
|
24
|
+
end
|
25
|
+
|
26
|
+
desc 'cookbook', 'Chef cookbook scaffolding'
|
27
|
+
method_option :name, aliases: '-n', desc: 'The cookbook name', :required => true
|
28
|
+
method_option :path, aliases: '-p', desc: 'A file system path to output the generated cookbook'
|
29
|
+
def cookbook
|
30
|
+
Cookbook::Service.new(options).gen
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Awskit::Gen::Cookbook
|
2
|
+
|
3
|
+
class KitchenTemplateBinding
|
4
|
+
|
5
|
+
attr_accessor :aws_ssh_key
|
6
|
+
attr_accessor :security_group
|
7
|
+
attr_accessor :region
|
8
|
+
attr_accessor :availability_zone
|
9
|
+
attr_accessor :subnet_id
|
10
|
+
attr_accessor :iam_profile_name
|
11
|
+
attr_accessor :instance_type
|
12
|
+
attr_accessor :associate_public_ip
|
13
|
+
attr_accessor :transport_ssh_key
|
14
|
+
attr_accessor :transport_username
|
15
|
+
attr_accessor :platform_ami
|
16
|
+
attr_accessor :platform_username
|
17
|
+
attr_accessor :service_name
|
18
|
+
|
19
|
+
def initialize(options)
|
20
|
+
self.aws_ssh_key = options[:aws_ssh_key]
|
21
|
+
self.security_group = options[:security_group]
|
22
|
+
self.region = options[:region]
|
23
|
+
self.availability_zone = options[:availability_zone]
|
24
|
+
self.subnet_id = options[:subnet_id]
|
25
|
+
self.iam_profile_name = options[:iam_profile_name]
|
26
|
+
self.instance_type = options[:instance_type]
|
27
|
+
self.associate_public_ip = options[:associate_public_ip]
|
28
|
+
self.transport_ssh_key = options[:transport_ssh_key]
|
29
|
+
self.transport_username = options[:transport_username]
|
30
|
+
self.platform_ami = options[:platform_ami]
|
31
|
+
self.platform_username = options[:platform_username]
|
32
|
+
self.service_name = options[:service_name]
|
33
|
+
end
|
34
|
+
|
35
|
+
def get_binding
|
36
|
+
binding()
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
@@ -0,0 +1,123 @@
|
|
1
|
+
require 'awskit/gen/cookbook/kitchen_template_binding'
|
2
|
+
require 'awskit/gen/cookbook/vagrantfile_template_binding'
|
3
|
+
|
4
|
+
module Awskit::Gen::Cookbook
|
5
|
+
|
6
|
+
class Service
|
7
|
+
|
8
|
+
attr_accessor :options
|
9
|
+
attr_accessor :output_path
|
10
|
+
|
11
|
+
def initialize(options)
|
12
|
+
self.options = options
|
13
|
+
self.output_path = options[:path] || "./#{cookbook_name}"
|
14
|
+
end
|
15
|
+
|
16
|
+
def gen
|
17
|
+
gen_dirs
|
18
|
+
gen_kitchen_yml
|
19
|
+
gen_vagrantfile
|
20
|
+
gen_readme
|
21
|
+
gen_recipes
|
22
|
+
gen_attributes
|
23
|
+
copy_static_files
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def cookbook_name
|
29
|
+
options[:name].downcase
|
30
|
+
end
|
31
|
+
|
32
|
+
def gen_dirs
|
33
|
+
FileUtils.mkdir_p "#{output_path}/test/integration/default/serverspec/localhost"
|
34
|
+
attrs = "#{output_path}/attributes"
|
35
|
+
recipes = "#{output_path}/recipes"
|
36
|
+
Dir.mkdir attrs unless File.exist?(attrs)
|
37
|
+
Dir.mkdir recipes unless File.exist?(recipes)
|
38
|
+
end
|
39
|
+
|
40
|
+
def gen_kitchen_yml
|
41
|
+
Awskit::Gen::TemplateWriter.new(
|
42
|
+
:output_path => output_path,
|
43
|
+
:template => template_path('.kitchen.yml'),
|
44
|
+
:binding => kitchen_template_binding,
|
45
|
+
:filename => '.kitchen.yml'
|
46
|
+
).write!
|
47
|
+
end
|
48
|
+
|
49
|
+
def gen_vagrantfile
|
50
|
+
Awskit::Gen::TemplateWriter.new(
|
51
|
+
:output_path => output_path,
|
52
|
+
:template => template_path('Vagrantfile'),
|
53
|
+
:binding => service_name_template_binding,
|
54
|
+
:filename => 'Vagrantfile'
|
55
|
+
).write!
|
56
|
+
end
|
57
|
+
|
58
|
+
def gen_readme
|
59
|
+
Awskit::Gen::TemplateWriter.new(
|
60
|
+
:output_path => output_path,
|
61
|
+
:template => template_path('README.md'),
|
62
|
+
:binding => service_name_template_binding,
|
63
|
+
:filename => 'README.md'
|
64
|
+
).write!
|
65
|
+
end
|
66
|
+
|
67
|
+
def gen_recipes
|
68
|
+
FileUtils.touch("#{output_path}/recipes/setup.rb")
|
69
|
+
FileUtils.touch("#{output_path}/recipes/configure.rb")
|
70
|
+
FileUtils.touch("#{output_path}/recipes/deploy.rb")
|
71
|
+
FileUtils.touch("#{output_path}/recipes/undeploy.rb")
|
72
|
+
FileUtils.touch("#{output_path}/recipes/shutdown.rb")
|
73
|
+
File.write("#{output_path}/recipes/setup.rb", "include_recipe 'common'\n")
|
74
|
+
end
|
75
|
+
|
76
|
+
def gen_attributes
|
77
|
+
FileUtils.touch("#{output_path}/attributes/default.rb")
|
78
|
+
end
|
79
|
+
|
80
|
+
def copy_static_files
|
81
|
+
FileUtils.cp(static_file('Berksfile'), "#{output_path}/Berksfile")
|
82
|
+
FileUtils.cp(static_file('chefignore'), "#{output_path}/chefignore")
|
83
|
+
FileUtils.cp(static_file('Gemfile'), "#{output_path}/Gemfile")
|
84
|
+
FileUtils.cp(static_file('Thorfile'), "#{output_path}/Thorfile")
|
85
|
+
FileUtils.cp(static_file('.gitignore'), "#{output_path}/.gitignore")
|
86
|
+
FileUtils.cp(static_file('test/integration/default/serverspec/spec_helper.rb'), "#{output_path}/test/integration/default/serverspec/spec_helper.rb")
|
87
|
+
FileUtils.cp(static_file('test/integration/default/serverspec/localhost/common_spec.rb'), "#{output_path}/test/integration/default/serverspec/localhost/common_spec.rb")
|
88
|
+
end
|
89
|
+
|
90
|
+
def static_file(file)
|
91
|
+
"#{Awskit.home}/awskit/gen/cookbook/templates/#{file}"
|
92
|
+
end
|
93
|
+
|
94
|
+
def template_path(template)
|
95
|
+
"#{Awskit.home}/awskit/gen/cookbook/templates/#{template}.erb"
|
96
|
+
end
|
97
|
+
|
98
|
+
def service_name_template_binding
|
99
|
+
ServiceNameTemplateBinding.new(
|
100
|
+
service_name: options[:name]
|
101
|
+
).get_binding
|
102
|
+
end
|
103
|
+
|
104
|
+
def kitchen_template_binding
|
105
|
+
KitchenTemplateBinding.new(
|
106
|
+
:aws_ssh_key => Awskit.environment,
|
107
|
+
:security_group => '',
|
108
|
+
:availability_zone => 'a',
|
109
|
+
:subnet_id => '',
|
110
|
+
:iam_profile_name => 'ALLOW_ALL',
|
111
|
+
:instance_type => 't2.medium',
|
112
|
+
:associate_public_ip => true,
|
113
|
+
:transport_ssh_key => "#{ENV['HOME']}.ssh/#{Awskit.environment}.pem",
|
114
|
+
:transport_username => 'ec2-user',
|
115
|
+
:platform_ami => 'ami-60b6c60a',
|
116
|
+
:platform_username => 'ec2-user',
|
117
|
+
:service_name => options[:name]
|
118
|
+
).get_binding
|
119
|
+
end
|
120
|
+
|
121
|
+
end
|
122
|
+
|
123
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
---
|
2
|
+
driver:
|
3
|
+
name: ec2
|
4
|
+
aws_ssh_key_id: <%= aws_ssh_key %>
|
5
|
+
security_group_ids: ["<%= security_group %>"]
|
6
|
+
region: <%= region %>
|
7
|
+
availability_zone: <%= availability_zone %>
|
8
|
+
require_chef_omnibus: true
|
9
|
+
subnet_id: <%= subnet_id %>
|
10
|
+
iam_profile_name: <%= iam_profile_name %>
|
11
|
+
instance_type: <%= instance_type %>
|
12
|
+
associate_public_ip: <%= associate_public_ip %>
|
13
|
+
interface: dns
|
14
|
+
|
15
|
+
transport:
|
16
|
+
ssh_key: <%= transport_ssh_key %>
|
17
|
+
connection_timeout: 10
|
18
|
+
connection_retries: 5
|
19
|
+
username: <%= transport_username %>
|
20
|
+
|
21
|
+
provisioner:
|
22
|
+
name: chef_zero
|
23
|
+
chef_zero_port: 9090
|
24
|
+
|
25
|
+
platforms:
|
26
|
+
- name: amazon
|
27
|
+
driver:
|
28
|
+
image_id: <%= platform_ami %> #ami-60b6c60a
|
29
|
+
transport:
|
30
|
+
username: <%= platform_username %> #ec2-user
|
31
|
+
|
32
|
+
suites:
|
33
|
+
- name: <%= service_name %>
|
34
|
+
run_list:
|
35
|
+
- recipe[<%= service_name %>::setup]
|
36
|
+
- recipe[<%= service_name %>::configure]
|
37
|
+
- recipe[<%= service_name %>::deploy]
|
38
|
+
attributes: {
|
39
|
+
<%= service_name %>: {
|
40
|
+
test_kitchen: true
|
41
|
+
}
|
42
|
+
}
|
43
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
gem 'berkshelf'
|
4
|
+
gem 'test-kitchen'
|
5
|
+
gem 'kitchen-ec2'
|
6
|
+
|
7
|
+
group :integration do
|
8
|
+
gem 'kitchen-vagrant', '~> 0.11'
|
9
|
+
end
|
10
|
+
|
11
|
+
# Uncomment these lines if you want to live on the Edge:
|
12
|
+
#
|
13
|
+
# group :development do
|
14
|
+
# gem "berkshelf", github: "berkshelf/berkshelf"
|
15
|
+
# gem "vagrant", github: "mitchellh/vagrant", tag: "v1.6.3"
|
16
|
+
# end
|
17
|
+
#
|
18
|
+
# group :plugins do
|
19
|
+
# gem "vagrant-berkshelf", github: "berkshelf/vagrant-berkshelf"
|
20
|
+
# gem "vagrant-omnibus", github: "schisamo/vagrant-omnibus"
|
21
|
+
# end
|
22
|
+
|
@@ -0,0 +1,90 @@
|
|
1
|
+
# -*- mode: ruby -*-
|
2
|
+
# vi: set ft=ruby :
|
3
|
+
|
4
|
+
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
|
5
|
+
VAGRANTFILE_API_VERSION = '2'
|
6
|
+
|
7
|
+
Vagrant.require_version '>= 1.5.0'
|
8
|
+
|
9
|
+
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
10
|
+
# All Vagrant configuration is done here. The most common configuration
|
11
|
+
# options are documented and commented below. For a complete reference,
|
12
|
+
# please see the online documentation at vagrantup.com.
|
13
|
+
|
14
|
+
config.vm.hostname = '<%= service_name %>-berkshelf'
|
15
|
+
|
16
|
+
# Set the version of chef to install using the vagrant-omnibus plugin
|
17
|
+
# NOTE: You will need to install the vagrant-omnibus plugin:
|
18
|
+
#
|
19
|
+
# $ vagrant plugin install vagrant-omnibus
|
20
|
+
#
|
21
|
+
if Vagrant.has_plugin?("vagrant-omnibus")
|
22
|
+
config.omnibus.chef_version = 'latest'
|
23
|
+
end
|
24
|
+
|
25
|
+
# Every Vagrant virtual environment requires a box to build off of.
|
26
|
+
# If this value is a shorthand to a box in Vagrant Cloud then
|
27
|
+
# config.vm.box_url doesn't need to be specified.
|
28
|
+
config.vm.box = 'chef/ubuntu-14.04'
|
29
|
+
|
30
|
+
|
31
|
+
# Assign this VM to a host-only network IP, allowing you to access it
|
32
|
+
# via the IP. Host-only networks can talk to the host machine as well as
|
33
|
+
# any other machines on the same network, but cannot be accessed (through this
|
34
|
+
# network interface) by any external networks.
|
35
|
+
config.vm.network :private_network, type: 'dhcp'
|
36
|
+
|
37
|
+
# Create a forwarded port mapping which allows access to a specific port
|
38
|
+
# within the machine from a port on the host machine. In the example below,
|
39
|
+
# accessing "localhost:8080" will access port 80 on the guest machine.
|
40
|
+
|
41
|
+
# Share an additional folder to the guest VM. The first argument is
|
42
|
+
# the path on the host to the actual folder. The second argument is
|
43
|
+
# the path on the guest to mount the folder. And the optional third
|
44
|
+
# argument is a set of non-required options.
|
45
|
+
# config.vm.synced_folder "../data", "/vagrant_data"
|
46
|
+
|
47
|
+
# Provider-specific configuration so you can fine-tune various
|
48
|
+
# backing providers for Vagrant. These expose provider-specific options.
|
49
|
+
# Example for VirtualBox:
|
50
|
+
#
|
51
|
+
# config.vm.provider :virtualbox do |vb|
|
52
|
+
# # Don't boot with headless mode
|
53
|
+
# vb.gui = true
|
54
|
+
#
|
55
|
+
# # Use VBoxManage to customize the VM. For example to change memory:
|
56
|
+
# vb.customize ["modifyvm", :id, "--memory", "1024"]
|
57
|
+
# end
|
58
|
+
#
|
59
|
+
# View the documentation for the provider you're using for more
|
60
|
+
# information on available options.
|
61
|
+
|
62
|
+
# The path to the Berksfile to use with Vagrant Berkshelf
|
63
|
+
# config.berkshelf.berksfile_path = "./Berksfile"
|
64
|
+
|
65
|
+
# Enabling the Berkshelf plugin. To enable this globally, add this configuration
|
66
|
+
# option to your ~/.vagrant.d/Vagrantfile file
|
67
|
+
config.berkshelf.enabled = true
|
68
|
+
|
69
|
+
# An array of symbols representing groups of cookbook described in the Vagrantfile
|
70
|
+
# to exclusively install and copy to Vagrant's shelf.
|
71
|
+
# config.berkshelf.only = []
|
72
|
+
|
73
|
+
# An array of symbols representing groups of cookbook described in the Vagrantfile
|
74
|
+
# to skip installing and copying to Vagrant's shelf.
|
75
|
+
# config.berkshelf.except = []
|
76
|
+
|
77
|
+
config.vm.provision :chef_solo do |chef|
|
78
|
+
chef.json = {
|
79
|
+
mysql: {
|
80
|
+
server_root_password: 'rootpass',
|
81
|
+
server_debian_password: 'debpass',
|
82
|
+
server_repl_password: 'replpass'
|
83
|
+
}
|
84
|
+
}
|
85
|
+
|
86
|
+
chef.run_list = [
|
87
|
+
'recipe[<%= service_name %>::default]'
|
88
|
+
]
|
89
|
+
end
|
90
|
+
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
# Put files/directories that should be ignored in this file when uploading
|
2
|
+
# or sharing to the community site.
|
3
|
+
# Lines that start with '# ' are comments.
|
4
|
+
|
5
|
+
# OS generated files #
|
6
|
+
######################
|
7
|
+
.DS_Store
|
8
|
+
Icon?
|
9
|
+
nohup.out
|
10
|
+
ehthumbs.db
|
11
|
+
Thumbs.db
|
12
|
+
|
13
|
+
# SASS #
|
14
|
+
########
|
15
|
+
.sass-cache
|
16
|
+
|
17
|
+
# EDITORS #
|
18
|
+
###########
|
19
|
+
\#*
|
20
|
+
.#*
|
21
|
+
*~
|
22
|
+
*.sw[a-z]
|
23
|
+
*.bak
|
24
|
+
REVISION
|
25
|
+
TAGS*
|
26
|
+
tmtags
|
27
|
+
*_flymake.*
|
28
|
+
*_flymake
|
29
|
+
*.tmproj
|
30
|
+
.project
|
31
|
+
.settings
|
32
|
+
mkmf.log
|
33
|
+
|
34
|
+
## COMPILED ##
|
35
|
+
##############
|
36
|
+
a.out
|
37
|
+
*.o
|
38
|
+
*.pyc
|
39
|
+
*.so
|
40
|
+
*.com
|
41
|
+
*.class
|
42
|
+
*.dll
|
43
|
+
*.exe
|
44
|
+
*/rdoc/
|
45
|
+
|
46
|
+
# Testing #
|
47
|
+
###########
|
48
|
+
.watchr
|
49
|
+
.rspec
|
50
|
+
spec/*
|
51
|
+
spec/fixtures/*
|
52
|
+
test/*
|
53
|
+
features/*
|
54
|
+
Guardfile
|
55
|
+
Procfile
|
56
|
+
|
57
|
+
# SCM #
|
58
|
+
#######
|
59
|
+
.git
|
60
|
+
*/.git
|
61
|
+
.gitignore
|
62
|
+
.gitmodules
|
63
|
+
.gitconfig
|
64
|
+
.gitattributes
|
65
|
+
.svn
|
66
|
+
*/.bzr/*
|
67
|
+
*/.hg/*
|
68
|
+
*/.svn/*
|
69
|
+
|
70
|
+
# Berkshelf #
|
71
|
+
#############
|
72
|
+
cookbooks/*
|
73
|
+
tmp
|
74
|
+
|
75
|
+
# Cookbooks #
|
76
|
+
#############
|
77
|
+
CONTRIBUTING
|
78
|
+
CHANGELOG*
|
79
|
+
|
80
|
+
# Strainer #
|
81
|
+
############
|
82
|
+
Colanderfile
|
83
|
+
Strainerfile
|
84
|
+
.colander
|
85
|
+
.strainer
|
86
|
+
|
87
|
+
# Vagrant #
|
88
|
+
###########
|
89
|
+
.vagrant
|
90
|
+
Vagrantfile
|
91
|
+
|
92
|
+
# Travis #
|
93
|
+
##########
|
94
|
+
.travis.yml
|
@@ -0,0 +1,9 @@
|
|
1
|
+
name '<%= service_name %>'
|
2
|
+
maintainer 'root'
|
3
|
+
maintainer_email 'root@localhost'
|
4
|
+
license 'All rights reserved'
|
5
|
+
description 'Installs/Configures <%= service_name %>'
|
6
|
+
long_description 'Installs/Configures <%= service_name %>'
|
7
|
+
version IO.read(File.join(File.dirname(__FILE__), 'VERSION')) rescue '0.0.1'
|
8
|
+
|
9
|
+
depends 'common'
|
File without changes
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
include_recipe 'common'
|
File without changes
|
File without changes
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Awskit::Gen
|
2
|
+
|
3
|
+
class TemplateWriter
|
4
|
+
|
5
|
+
attr_accessor :output_path
|
6
|
+
attr_accessor :template
|
7
|
+
attr_accessor :binding
|
8
|
+
attr_accessor :filename
|
9
|
+
|
10
|
+
def initialize(options)
|
11
|
+
self.output_path = options[:output_path]
|
12
|
+
self.template = options[:template]
|
13
|
+
self.binding = options[:binding]
|
14
|
+
self.filename = options[:filename]
|
15
|
+
end
|
16
|
+
|
17
|
+
def write!
|
18
|
+
t = File.open(template).read
|
19
|
+
erb_template = ERB.new(t, nil, '-')
|
20
|
+
content = erb_template.result(binding)
|
21
|
+
File.open("#{output_path}/#{filename}", "w+") { |file|
|
22
|
+
file.write(content)
|
23
|
+
}
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|