build-cloud 0.0.4 → 0.0.5
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.
- checksums.yaml +8 -8
- data/README.md +2 -0
- data/bin/build-cloud +2 -0
- data/build-cloud.gemspec +1 -1
- data/lib/build-cloud.rb +23 -21
- data/lib/build-cloud/dhcpoptionsset.rb +77 -0
- data/lib/build-cloud/instance.rb +7 -1
- data/lib/build-cloud/launchconfiguration.rb +7 -1
- data/lib/build-cloud/vpc.rb +8 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YjA3NTgxYzZmOTAyMGQ3YWE4NjE3MWVkYjhjYmNlMTIzYjFmNDRlZg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ODRhZjVjNWQ2ZDYzNjEzODhlNDM4ZGYzYzczMDI3NWZkODJjZTk4Yw==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
M2E0NjBhYjUxMDFlZjc4MDRiZmY2OWU4ZDg2MmEwMDRhOGJkNThlNmU1MWE4
|
10
|
+
NWRkZWJjODAyYmUwODNhYmM1NmQxMmZhNzA4Y2RiZmE3NDJiNTg1ZDExMTgz
|
11
|
+
YjkyMGI2ZTUyYThhODdkYjE1NDI1NzgyNTY5MzMzNTYzOWFmYjU=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MTNhYjg4NzQyOTg0OThlNzNjNjkyZWFmMWVhOTUxNWNkZmUwODQxZDdkMGZk
|
14
|
+
NTU0OTdiMjY1MzI4YWMzY2M1ODFjMTRkYmI0ZDliY2E0NTE3MThiMTc4NTQ3
|
15
|
+
MmI1NDRmZGVmY2Q3NDhkN2NlZmNkYTZjYjRkNjI4NWY4Yjg5OGU=
|
data/README.md
CHANGED
@@ -22,6 +22,8 @@ See the command line help for `build-cloud`.
|
|
22
22
|
|
23
23
|
## Changelog
|
24
24
|
|
25
|
+
2014-09-16 - version 0.0.5 - now supports creation of DHCP Options Sets, and specifying them using the `:dhcp_options_set_name` key to a VPC.
|
26
|
+
|
25
27
|
2014-09-15 - version 0.0.4 - files can now be passed to `--config` with a path. It is no longer assumed that all files will be in the same directory.
|
26
28
|
|
27
29
|
2014-09-15 - version 0.0.3 - now accepts multiple files to `--config`. The second and subsequent files are merged into the first YAML file in order, ahead of any files specified in a `:include` list in the first YAML file.
|
data/bin/build-cloud
CHANGED
data/build-cloud.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = "build-cloud"
|
7
|
-
spec.version = "0.0.
|
7
|
+
spec.version = "0.0.5"
|
8
8
|
spec.authors = ["The Scale Factory"]
|
9
9
|
spec.email = ["info@scalefactory.com"]
|
10
10
|
spec.summary = %q{Tools for building resources in AWS}
|
data/lib/build-cloud.rb
CHANGED
@@ -97,34 +97,36 @@ class BuildCloud
|
|
97
97
|
def self.dispatch
|
98
98
|
|
99
99
|
{
|
100
|
-
:vpcs
|
101
|
-
:internet_gateways
|
102
|
-
:subnets
|
103
|
-
:route_tables
|
104
|
-
:zones
|
105
|
-
:security_groups
|
106
|
-
:network_interfaces
|
107
|
-
:routes
|
108
|
-
:launch_configurations
|
109
|
-
:load_balancers
|
110
|
-
:as_groups
|
111
|
-
:r53_record_sets
|
112
|
-
:rds_servers
|
113
|
-
:db_subnet_groups
|
114
|
-
:db_parameter_groups
|
115
|
-
:cache_subnet_groups
|
116
|
-
:cache_clusters
|
100
|
+
:vpcs => BuildCloud::VPC,
|
101
|
+
:internet_gateways => BuildCloud::InternetGateway,
|
102
|
+
:subnets => BuildCloud::Subnet,
|
103
|
+
:route_tables => BuildCloud::RouteTable,
|
104
|
+
:zones => BuildCloud::Zone,
|
105
|
+
:security_groups => BuildCloud::SecurityGroup,
|
106
|
+
:network_interfaces => BuildCloud::NetworkInterface,
|
107
|
+
:routes => BuildCloud::Route,
|
108
|
+
:launch_configurations => BuildCloud::LaunchConfiguration,
|
109
|
+
:load_balancers => BuildCloud::LoadBalancer,
|
110
|
+
:as_groups => BuildCloud::ASGroup,
|
111
|
+
:r53_record_sets => BuildCloud::R53RecordSet,
|
112
|
+
:rds_servers => BuildCloud::RDSServer,
|
113
|
+
:db_subnet_groups => BuildCloud::DbSubnetGroup,
|
114
|
+
:db_parameter_groups => BuildCloud::DbParameterGroup,
|
115
|
+
:cache_subnet_groups => BuildCloud::CacheSubnetGroup,
|
116
|
+
:cache_clusters => BuildCloud::CacheCluster,
|
117
117
|
:cache_parameter_groups => BuildCloud::CacheParameterGroup,
|
118
|
-
:iam_roles
|
119
|
-
:s3_buckets
|
120
|
-
:instances
|
121
|
-
:ebs_volumes
|
118
|
+
:iam_roles => BuildCloud::IAMRole,
|
119
|
+
:s3_buckets => BuildCloud::S3Bucket,
|
120
|
+
:instances => BuildCloud::Instance,
|
121
|
+
:ebs_volumes => BuildCloud::EBSVolume,
|
122
|
+
:dhcp_options_sets => BuildCloud::DHCPOptionsSet,
|
122
123
|
}
|
123
124
|
|
124
125
|
end
|
125
126
|
|
126
127
|
def self.create_order
|
127
128
|
[
|
129
|
+
:dhcp_options_sets,
|
128
130
|
:vpcs,
|
129
131
|
:internet_gateways,
|
130
132
|
:iam_roles,
|
@@ -0,0 +1,77 @@
|
|
1
|
+
class BuildCloud::DHCPOptionsSet
|
2
|
+
|
3
|
+
include ::BuildCloud::Component
|
4
|
+
|
5
|
+
@@objects = []
|
6
|
+
|
7
|
+
def self.get_id_by_name( name )
|
8
|
+
|
9
|
+
dhcp_option = self.search( :name => name ).first
|
10
|
+
|
11
|
+
unless dhcp_option
|
12
|
+
raise "Couldn't get a DHCP Options Set object for #{name} - is it defined?"
|
13
|
+
end
|
14
|
+
|
15
|
+
dhcp_option_fog = dhcp_option.read
|
16
|
+
|
17
|
+
unless dhcp_option_fog
|
18
|
+
raise "Couldn't get a DHCP Options Set fog object for #{name} - is it created?"
|
19
|
+
end
|
20
|
+
|
21
|
+
dhcp_option_fog.id
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
def initialize ( fog_interfaces, log, options = {} )
|
26
|
+
|
27
|
+
@compute = fog_interfaces[:compute]
|
28
|
+
@log = log
|
29
|
+
@options = options
|
30
|
+
|
31
|
+
@log.debug( options.inspect )
|
32
|
+
|
33
|
+
required_options(:dhcp_configuration_set)
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
def create
|
38
|
+
|
39
|
+
return if exists?
|
40
|
+
|
41
|
+
@log.info( "Creating new DHCP Options Set for #{@options[:name]}" )
|
42
|
+
|
43
|
+
options = @options.dup
|
44
|
+
|
45
|
+
options[:tags] = { 'Name' => options.delete(:name) }
|
46
|
+
|
47
|
+
dhcp_option = @compute.dhcp_options.new( options )
|
48
|
+
dhcp_option.save
|
49
|
+
|
50
|
+
@compute.create_tags( dhcp_option.id, options[:tags] )
|
51
|
+
|
52
|
+
@log.debug( dhcp_option.inspect )
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
def read
|
57
|
+
@compute.dhcp_options.select { |d| d.tag_set['Name'] == @options[:name] }.first
|
58
|
+
end
|
59
|
+
|
60
|
+
alias_method :fog_object, :read
|
61
|
+
|
62
|
+
def delete
|
63
|
+
|
64
|
+
return unless exists?
|
65
|
+
|
66
|
+
@log.info( "Deleting DHCP Options Set for #{@options[:name]}" )
|
67
|
+
|
68
|
+
fog_object.destroy
|
69
|
+
|
70
|
+
end
|
71
|
+
|
72
|
+
def [](key)
|
73
|
+
@options[key]
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
77
|
+
|
data/lib/build-cloud/instance.rb
CHANGED
@@ -114,7 +114,13 @@ class BuildCloud::Instance
|
|
114
114
|
elsif options[:user_data_template]
|
115
115
|
|
116
116
|
variable_hash = options[:user_data_variables]
|
117
|
-
|
117
|
+
|
118
|
+
user_data_template_path = ''
|
119
|
+
if options[:user_data_template].include? '/'
|
120
|
+
user_data_template_path = options[:user_data_template]
|
121
|
+
else
|
122
|
+
user_data_template_path = File.join( Dir.pwd, options[:user_data_template])
|
123
|
+
end
|
118
124
|
|
119
125
|
if File.exists?( user_data_template_path )
|
120
126
|
template = File.read( user_data_template_path )
|
@@ -58,7 +58,13 @@ class BuildCloud::LaunchConfiguration
|
|
58
58
|
elsif options[:user_data_template]
|
59
59
|
|
60
60
|
variable_hash = options[:user_data_variables]
|
61
|
-
|
61
|
+
|
62
|
+
user_data_template_path = ''
|
63
|
+
if options[:user_data_template].include? '/'
|
64
|
+
user_data_template_path = options[:user_data_template]
|
65
|
+
else
|
66
|
+
user_data_template_path = File.join( Dir.pwd, options[:user_data_template])
|
67
|
+
end
|
62
68
|
|
63
69
|
if File.exists?( user_data_template_path )
|
64
70
|
template = File.read( user_data_template_path )
|
data/lib/build-cloud/vpc.rb
CHANGED
@@ -42,6 +42,14 @@ class BuildCloud::VPC
|
|
42
42
|
|
43
43
|
vpc = @compute.vpcs.new( @options )
|
44
44
|
vpc.save
|
45
|
+
wait_until_ready
|
46
|
+
|
47
|
+
if @options[:dhcp_options_set_name]
|
48
|
+
dhcp_option_set_id = BuildCloud::DHCPOptionsSet.get_id_by_name( @options[:dhcp_options_set_name] )
|
49
|
+
@log.info( "Associating DHCP Options Set #{dhcp_option_set_id} with new VPC ID #{vpc.id}" )
|
50
|
+
@compute.associate_dhcp_options( dhcp_option_set_id,
|
51
|
+
vpc.id )
|
52
|
+
end
|
45
53
|
|
46
54
|
@log.debug( vpc.inspect )
|
47
55
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: build-cloud
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- The Scale Factory
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-09-
|
11
|
+
date: 2014-09-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -90,6 +90,7 @@ files:
|
|
90
90
|
- lib/build-cloud/dbparametergroup.rb
|
91
91
|
- lib/build-cloud/dbparameters.rb
|
92
92
|
- lib/build-cloud/dbsubnetgroup.rb
|
93
|
+
- lib/build-cloud/dhcpoptionsset.rb
|
93
94
|
- lib/build-cloud/ebsvolume.rb
|
94
95
|
- lib/build-cloud/iamrole.rb
|
95
96
|
- lib/build-cloud/instance.rb
|