terrafied 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/.travis.yml +4 -0
- data/CODE_OF_CONDUCT.md +13 -0
- data/Gemfile +4 -0
- data/Guardfile +22 -0
- data/LICENSE.txt +21 -0
- data/README.md +181 -0
- data/Rakefile +10 -0
- data/examples/add_resource_type.rb +21 -0
- data/examples/resource_aliases.rb +41 -0
- data/examples/simple.rb +20 -0
- data/lib/terrafied.rb +2 -0
- data/lib/terrafied/builder.rb +40 -0
- data/lib/terrafied/resource_shortcuts.rb +774 -0
- data/lib/terrafied/version.rb +3 -0
- data/terrafied.gemspec +35 -0
- metadata +131 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: aa12b3fc8d644221d181c0bc52794c6f78df5b1e
|
4
|
+
data.tar.gz: 7ea639dc3ee90264fb77ac0f0b07f92bd6d28b31
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 5bfb2e99cf7f3cd01b15ce395f3bd5f65b017bedbb281bd82c280e3b2d455e183cd1d91309dcda9b5e02eda70658a684420d66ccffe315a0c8734db93916e2f9
|
7
|
+
data.tar.gz: 0f0a29ad22a430e447e2d92755af2342e44185732a449b6d6a349ffe9f4006cc72337c0f2b87f18bcc82f829e9823c8a96689ee190a6d87e9021af88c28b1745
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/CODE_OF_CONDUCT.md
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
# Contributor Code of Conduct
|
2
|
+
|
3
|
+
As contributors and maintainers of this project, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.
|
4
|
+
|
5
|
+
We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, or religion.
|
6
|
+
|
7
|
+
Examples of unacceptable behavior by participants include the use of sexual language or imagery, derogatory comments or personal attacks, trolling, public or private harassment, insults, or other unprofessional conduct.
|
8
|
+
|
9
|
+
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. Project maintainers who do not follow the Code of Conduct may be removed from the project team.
|
10
|
+
|
11
|
+
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting one or more of the project maintainers.
|
12
|
+
|
13
|
+
This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.0.0, available at [http://contributor-covenant.org/version/1/0/0/](http://contributor-covenant.org/version/1/0/0/)
|
data/Gemfile
ADDED
data/Guardfile
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# A sample Guardfile
|
2
|
+
# More info at https://github.com/guard/guard#readme
|
3
|
+
|
4
|
+
## Uncomment and set this to only include directories you want to watch
|
5
|
+
# directories %w(app lib config test spec features) \
|
6
|
+
# .select{|d| Dir.exists?(d) ? d : UI.warning("Directory #{d} does not exist")}
|
7
|
+
|
8
|
+
## Note: if you are using the `directories` clause above and you are not
|
9
|
+
## watching the project directory ('.'), then you will want to move
|
10
|
+
## the Guardfile to a watched dir and symlink it back, e.g.
|
11
|
+
#
|
12
|
+
# $ mkdir config
|
13
|
+
# $ mv Guardfile config/
|
14
|
+
# $ ln -s config/Guardfile .
|
15
|
+
#
|
16
|
+
# and, you'll have to watch "config/Guardfile" instead of "Guardfile"
|
17
|
+
|
18
|
+
guard :minitest do
|
19
|
+
watch(%r{^test/(.*)\/?test_(.*)\.rb$})
|
20
|
+
watch(%r{^lib/(.*/)?([^/]+)\.rb$}) { 'test' }
|
21
|
+
watch(%r{^test/test_helper\.rb$}) { 'test' }
|
22
|
+
end
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2016 thattommyhall
|
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
|
13
|
+
all 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
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,181 @@
|
|
1
|
+
# Terrafied
|
2
|
+
|
3
|
+
A simple Ruby DSL for [Terraform](), somewhere in-between
|
4
|
+
[Terraframe](https://github.com/eropple/terraframe/) and
|
5
|
+
[Terrafiddle](https://github.com/glenjamin/terrafiddle)
|
6
|
+
|
7
|
+
It avoids using `method_missing` and does not dynamically define the
|
8
|
+
helper methods to make debugging easier.
|
9
|
+
|
10
|
+
## Installation
|
11
|
+
|
12
|
+
Add this line to your application's Gemfile:
|
13
|
+
|
14
|
+
```ruby
|
15
|
+
gem 'terrafied'
|
16
|
+
```
|
17
|
+
|
18
|
+
And then execute:
|
19
|
+
|
20
|
+
$ bundle
|
21
|
+
|
22
|
+
Or install it yourself as:
|
23
|
+
|
24
|
+
$ gem install terrafied
|
25
|
+
|
26
|
+
## Usage
|
27
|
+
|
28
|
+
Once you import the module the `provider` and `resource` methods are
|
29
|
+
available.
|
30
|
+
|
31
|
+
`resource` takes 3 arguments - a type, a name for the resource and a
|
32
|
+
'spec' hash.
|
33
|
+
|
34
|
+
`provider` takes 2 arguments - a type and a 'spec' hash
|
35
|
+
|
36
|
+
|
37
|
+
```ruby
|
38
|
+
require 'terrafied'
|
39
|
+
|
40
|
+
resource "type", "name",
|
41
|
+
foo: "one",
|
42
|
+
bar: false
|
43
|
+
```
|
44
|
+
|
45
|
+
Outputs:
|
46
|
+
|
47
|
+
```
|
48
|
+
{
|
49
|
+
"provider": {
|
50
|
+
},
|
51
|
+
"resource": {
|
52
|
+
"type": {
|
53
|
+
"name": {
|
54
|
+
"foo": "one",
|
55
|
+
"bar": false
|
56
|
+
}
|
57
|
+
}
|
58
|
+
}
|
59
|
+
}
|
60
|
+
```
|
61
|
+
|
62
|
+
There are 2 helper methods (borrowed from terraframe) for looking up
|
63
|
+
resource attributes.
|
64
|
+
|
65
|
+
`output-of`:
|
66
|
+
|
67
|
+
```ruby
|
68
|
+
output_of('aws_elb', 'name', 'dns_name')
|
69
|
+
# => "${aws_elb.name.dns_name}"
|
70
|
+
```
|
71
|
+
|
72
|
+
`id-of`:
|
73
|
+
|
74
|
+
```ruby
|
75
|
+
id_of('aws_elb', 'name')
|
76
|
+
# => "${aws_elb.name.id}"
|
77
|
+
```
|
78
|
+
|
79
|
+
If you call `use_resource_shortcuts!` then most aws resources have
|
80
|
+
shortcut methods you can use.
|
81
|
+
|
82
|
+
Where possible I have defaulted the `name` parameter to be the
|
83
|
+
resource name (and the description if you are forced to provide one),
|
84
|
+
hope you find it useful.
|
85
|
+
|
86
|
+
```ruby
|
87
|
+
require 'terrafied'
|
88
|
+
use_resource_shortcuts!
|
89
|
+
|
90
|
+
provider 'aws',
|
91
|
+
region: 'eu-west-1',
|
92
|
+
access_key: "BLAH",
|
93
|
+
secret_key: "BLAGBLOOPBLAH"
|
94
|
+
|
95
|
+
VPC_NAME = 'example'
|
96
|
+
aws_vpc VPC_NAME,
|
97
|
+
tags: { Name: VPC_NAME },
|
98
|
+
cidr_block: '172.20.0.0/20'
|
99
|
+
|
100
|
+
aws_internet_gateway 'production',
|
101
|
+
vpc_id: id_of('aws_vpc', VPC_NAME)
|
102
|
+
```
|
103
|
+
|
104
|
+
Outputs:
|
105
|
+
|
106
|
+
```
|
107
|
+
{
|
108
|
+
"provider": {
|
109
|
+
"aws": {
|
110
|
+
"region": "eu-west-1",
|
111
|
+
"access_key": "BLAH",
|
112
|
+
"secret_key": "BLAGBLOOPBLAH"
|
113
|
+
}
|
114
|
+
},
|
115
|
+
"resource": {
|
116
|
+
"aws_vpc": {
|
117
|
+
"example": {
|
118
|
+
"tags": {
|
119
|
+
"Name": "example"
|
120
|
+
},
|
121
|
+
"cidr_block": "172.20.0.0/20"
|
122
|
+
}
|
123
|
+
},
|
124
|
+
"aws_internet_gateway": {
|
125
|
+
"production": {
|
126
|
+
"vpc_id": "${aws_vpc.example.id}"
|
127
|
+
}
|
128
|
+
}
|
129
|
+
}
|
130
|
+
}
|
131
|
+
```
|
132
|
+
|
133
|
+
You can add new aliases with `add_resource_alias` (Please add them in
|
134
|
+
and do a pull request though)
|
135
|
+
|
136
|
+
```ruby
|
137
|
+
require 'terrafied'
|
138
|
+
|
139
|
+
add_resource_alias 'new_resource_type'
|
140
|
+
|
141
|
+
new_resource_type 'name',
|
142
|
+
name: "Something",
|
143
|
+
foo: false
|
144
|
+
|
145
|
+
## Outputs
|
146
|
+
# {
|
147
|
+
# "provider": {
|
148
|
+
# },
|
149
|
+
# "resource": {
|
150
|
+
# "new_resource_type": {
|
151
|
+
# "name": {
|
152
|
+
# "name": "Something",
|
153
|
+
# "foo": false
|
154
|
+
# }
|
155
|
+
# }
|
156
|
+
# }
|
157
|
+
# }
|
158
|
+
|
159
|
+
```
|
160
|
+
|
161
|
+
|
162
|
+
## Development
|
163
|
+
|
164
|
+
To install this gem onto your local machine, run `bundle exec rake
|
165
|
+
install`. To release a new version, update the version number in
|
166
|
+
`version.rb`, and then run `bundle exec rake release`, which will
|
167
|
+
create a git tag for the version, push git commits and tags, and push
|
168
|
+
the `.gem` file to [rubygems.org](https://rubygems.org).
|
169
|
+
|
170
|
+
## Contributing
|
171
|
+
|
172
|
+
Bug reports and pull requests are welcome on GitHub at
|
173
|
+
https://github.com/thattommyhall/terrafied. This project is intended
|
174
|
+
to be a safe, welcoming space for collaboration, and contributors are
|
175
|
+
expected to adhere to the
|
176
|
+
[Contributor Covenant](contributor-covenant.org) code of conduct.
|
177
|
+
|
178
|
+
## License
|
179
|
+
|
180
|
+
The gem is available as open source under the terms of the
|
181
|
+
[MIT License](http://opensource.org/licenses/MIT).
|
data/Rakefile
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'terrafied'
|
2
|
+
|
3
|
+
add_resource_alias 'new_resource_type'
|
4
|
+
|
5
|
+
new_resource_type 'name',
|
6
|
+
name: "Something",
|
7
|
+
foo: false
|
8
|
+
|
9
|
+
## Outputs
|
10
|
+
# {
|
11
|
+
# "provider": {
|
12
|
+
# },
|
13
|
+
# "resource": {
|
14
|
+
# "new_resource_type": {
|
15
|
+
# "name": {
|
16
|
+
# "name": "Something",
|
17
|
+
# "foo": false
|
18
|
+
# }
|
19
|
+
# }
|
20
|
+
# }
|
21
|
+
# }
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'terrafied'
|
2
|
+
use_resource_shortcuts!
|
3
|
+
|
4
|
+
provider 'aws',
|
5
|
+
region: 'eu-west-1',
|
6
|
+
access_key: "BLAH",
|
7
|
+
secret_key: "BLAGBLOOPBLAH"
|
8
|
+
|
9
|
+
VPC_NAME = 'example'
|
10
|
+
aws_vpc VPC_NAME,
|
11
|
+
tags: { Name: VPC_NAME },
|
12
|
+
cidr_block: '172.20.0.0/20'
|
13
|
+
|
14
|
+
aws_internet_gateway 'production',
|
15
|
+
vpc_id: id_of('aws_vpc', VPC_NAME)
|
16
|
+
|
17
|
+
## Outputs
|
18
|
+
# {
|
19
|
+
# "provider": {
|
20
|
+
# "aws": {
|
21
|
+
# "region": "eu-west-1",
|
22
|
+
# "access_key": "BLAH",
|
23
|
+
# "secret_key": "BLAGBLOOPBLAH"
|
24
|
+
# }
|
25
|
+
# },
|
26
|
+
# "resource": {
|
27
|
+
# "aws_vpc": {
|
28
|
+
# "example": {
|
29
|
+
# "tags": {
|
30
|
+
# "Name": "example"
|
31
|
+
# },
|
32
|
+
# "cidr_block": "172.20.0.0/20"
|
33
|
+
# }
|
34
|
+
# },
|
35
|
+
# "aws_internet_gateway": {
|
36
|
+
# "production": {
|
37
|
+
# "vpc_id": "${aws_vpc.example.id}"
|
38
|
+
# }
|
39
|
+
# }
|
40
|
+
# }
|
41
|
+
# }
|
data/examples/simple.rb
ADDED
data/lib/terrafied.rb
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
@output = { "provider" => {},
|
2
|
+
"resource" => {}
|
3
|
+
}
|
4
|
+
|
5
|
+
class << self
|
6
|
+
def provider(name, spec={})
|
7
|
+
@output["provider"][name.to_s] = spec
|
8
|
+
end
|
9
|
+
|
10
|
+
def resource(type, name, spec={})
|
11
|
+
@output["resource"][type.to_s] ||= {}
|
12
|
+
if @output["resource"][type.to_s][name.to_s]
|
13
|
+
throw "Tried to create a resource of type #{type} called '#{name}' when one already exists"
|
14
|
+
end
|
15
|
+
@output["resource"][type.to_s][name.to_s] = spec
|
16
|
+
end
|
17
|
+
|
18
|
+
def id_of(type,name)
|
19
|
+
"${#{type}.#{name}.id}"
|
20
|
+
end
|
21
|
+
|
22
|
+
def output_of(type, name, *values)
|
23
|
+
"${#{type}.#{name}.#{values.join(".")}}"
|
24
|
+
end
|
25
|
+
|
26
|
+
def add_resource_alias(type)
|
27
|
+
define_singleton_method type.to_sym do |name, spec={}|
|
28
|
+
resource(type, name, spec)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def use_resource_shortcuts!
|
33
|
+
require_relative 'resource_shortcuts'
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
at_exit do
|
38
|
+
require 'json'
|
39
|
+
puts JSON.pretty_generate(@output)
|
40
|
+
end
|
@@ -0,0 +1,774 @@
|
|
1
|
+
class Hash
|
2
|
+
def deep_merge(other_hash)
|
3
|
+
self.merge(other_hash) do |key, oldval, newval|
|
4
|
+
oldval = oldval.to_hash if oldval.respond_to?(:to_hash)
|
5
|
+
newval = newval.to_hash if newval.respond_to?(:to_hash)
|
6
|
+
oldval.class.to_s == 'Hash' &&
|
7
|
+
newval.class.to_s == 'Hash' ? oldval.deep_merge(newval) : newval
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
class << self
|
13
|
+
def aws_api_gateway_account(name, spec={})
|
14
|
+
default_spec = { name: name }
|
15
|
+
resource 'aws_api_gateway_account', name,
|
16
|
+
default_spec.deep_merge(spec)
|
17
|
+
end
|
18
|
+
|
19
|
+
def aws_api_gateway_api_key(name, spec={})
|
20
|
+
default_spec = { name: name }
|
21
|
+
resource 'aws_api_gateway_api_key', name,
|
22
|
+
default_spec.deep_merge(spec)
|
23
|
+
end
|
24
|
+
|
25
|
+
def aws_api_gateway_authorizer(name, spec={})
|
26
|
+
default_spec = { name: name }
|
27
|
+
resource 'aws_api_gateway_authorizer', name,
|
28
|
+
default_spec.deep_merge(spec)
|
29
|
+
end
|
30
|
+
|
31
|
+
def aws_api_gateway_deployment(name, spec={})
|
32
|
+
resource 'aws_api_gateway_deployment', name, spec
|
33
|
+
end
|
34
|
+
|
35
|
+
def aws_api_gateway_integration(name, spec={})
|
36
|
+
resource 'aws_api_gateway_integration', name, spec
|
37
|
+
end
|
38
|
+
|
39
|
+
def aws_api_gateway_integration_response(name, spec={})
|
40
|
+
resource 'aws_api_gateway_integration_response', name, spec
|
41
|
+
end
|
42
|
+
|
43
|
+
def aws_api_gateway_method(name, spec={})
|
44
|
+
resource 'aws_api_gateway_method', name, spec
|
45
|
+
end
|
46
|
+
|
47
|
+
def aws_api_gateway_method_response(name, spec={})
|
48
|
+
resource 'aws_api_gateway_method_response', name, spec
|
49
|
+
end
|
50
|
+
|
51
|
+
def aws_api_gateway_model(name, spec={})
|
52
|
+
default_spec = { name: name }
|
53
|
+
resource 'aws_api_gateway_model', name,
|
54
|
+
default_spec.deep_merge(spec)
|
55
|
+
end
|
56
|
+
|
57
|
+
def aws_api_gateway_resource(name, spec={})
|
58
|
+
resource 'aws_api_gateway_resource', name, spec
|
59
|
+
end
|
60
|
+
|
61
|
+
def aws_api_gateway_rest_api(name, spec={})
|
62
|
+
default_spec = { name: name }
|
63
|
+
resource 'aws_api_gateway_rest_api', name,
|
64
|
+
default_spec.deep_merge(spec)
|
65
|
+
end
|
66
|
+
|
67
|
+
def aws_cloudformation_stack(name, spec={})
|
68
|
+
default_spec = { name: name }
|
69
|
+
resource 'aws_cloudformation_stack', name,
|
70
|
+
default_spec.deep_merge(spec)
|
71
|
+
end
|
72
|
+
|
73
|
+
def aws_cloudfront_distribution(name, spec={})
|
74
|
+
resource 'aws_cloudfront_distribution', name, spec
|
75
|
+
end
|
76
|
+
|
77
|
+
def aws_cloudfront_origin_access_identity(name, spec={})
|
78
|
+
resource 'aws_cloudfront_origin_access_identity', name, spec
|
79
|
+
end
|
80
|
+
|
81
|
+
def aws_cloudtrail(name, spec={})
|
82
|
+
default_spec = { name: name }
|
83
|
+
resource 'aws_cloudtrail', name,
|
84
|
+
default_spec.deep_merge(spec)
|
85
|
+
end
|
86
|
+
|
87
|
+
def aws_cloudwatch_event_rule(name, spec={})
|
88
|
+
default_spec = { name: name }
|
89
|
+
resource 'aws_cloudwatch_event_rule', name,
|
90
|
+
default_spec.deep_merge(spec)
|
91
|
+
end
|
92
|
+
|
93
|
+
def aws_cloudwatch_event_target(name, spec={})
|
94
|
+
resource 'aws_cloudwatch_event_target', name, spec
|
95
|
+
end
|
96
|
+
|
97
|
+
def aws_cloudwatch_log_group(name, spec={})
|
98
|
+
default_spec = { name: name }
|
99
|
+
resource 'aws_cloudwatch_log_group', name,
|
100
|
+
default_spec.deep_merge(spec)
|
101
|
+
end
|
102
|
+
|
103
|
+
def aws_cloudwatch_log_subscription_filter(name, spec={})
|
104
|
+
default_spec = { name: name }
|
105
|
+
resource 'aws_cloudwatch_log_subscription_filter', name,
|
106
|
+
default_spec.deep_merge(spec)
|
107
|
+
end
|
108
|
+
|
109
|
+
def aws_cloudwatch_log_metric_filter(name, spec={})
|
110
|
+
default_spec = { name: name }
|
111
|
+
resource 'aws_cloudwatch_log_metric_filter', name,
|
112
|
+
default_spec.deep_merge(spec)
|
113
|
+
end
|
114
|
+
|
115
|
+
def aws_cloudwatch_metric_alarm(name, spec={})
|
116
|
+
default_spec = { alarm_name: name }
|
117
|
+
resource 'aws_cloudwatch_metric_alarm', name,
|
118
|
+
default_spec.deep_merge(spec)
|
119
|
+
end
|
120
|
+
|
121
|
+
def aws_codecommit_repository(name, spec={})
|
122
|
+
default_spec = { repository_name: name }
|
123
|
+
resource 'aws_codecommit_repository', name,
|
124
|
+
default_spec.deep_merge(spec)
|
125
|
+
end
|
126
|
+
|
127
|
+
def aws_codedeploy_app(name, spec={})
|
128
|
+
default_spec = { name: name }
|
129
|
+
resource 'aws_codedeploy_app', name,
|
130
|
+
default_spec.deep_merge(spec)
|
131
|
+
end
|
132
|
+
|
133
|
+
def aws_codedeploy_deployment_group(name, spec={})
|
134
|
+
default_spec = { app_name: name }
|
135
|
+
resource 'aws_codedeploy_deployment_group', name,
|
136
|
+
default_spec.deep_merge(spec)
|
137
|
+
end
|
138
|
+
|
139
|
+
def aws_directory_service_directory(name, spec={})
|
140
|
+
default_spec = { name: name }
|
141
|
+
resource 'aws_directory_service_directory', name,
|
142
|
+
default_spec.deep_merge(spec)
|
143
|
+
end
|
144
|
+
|
145
|
+
def aws_dynamodb_table(name, spec={})
|
146
|
+
default_spec = { name: name }
|
147
|
+
resource 'aws_dynamodb_table', name,
|
148
|
+
default_spec.deep_merge(spec)
|
149
|
+
end
|
150
|
+
|
151
|
+
def aws_ami(name, spec={})
|
152
|
+
default_spec = { name: name }
|
153
|
+
resource 'aws_ami', name,
|
154
|
+
default_spec.deep_merge(spec)
|
155
|
+
end
|
156
|
+
|
157
|
+
def aws_ami_copy(name, spec={})
|
158
|
+
default_spec = { name: name }
|
159
|
+
resource 'aws_ami_copy', name,
|
160
|
+
default_spec.deep_merge(spec)
|
161
|
+
end
|
162
|
+
|
163
|
+
def aws_ami_from_instance(name, spec={})
|
164
|
+
default_spec = { name: name }
|
165
|
+
resource 'aws_ami_from_instance', name,
|
166
|
+
default_spec.deep_merge(spec)
|
167
|
+
end
|
168
|
+
|
169
|
+
def aws_app_cookie_stickiness_policy(name, spec={})
|
170
|
+
default_spec = { name: name }
|
171
|
+
resource 'aws_app_cookie_stickiness_policy', name,
|
172
|
+
default_spec.deep_merge(spec)
|
173
|
+
end
|
174
|
+
|
175
|
+
def aws_autoscaling_group(name, spec={})
|
176
|
+
default_spec = { name: name }
|
177
|
+
resource 'aws_autoscaling_group', name,
|
178
|
+
default_spec.deep_merge(spec)
|
179
|
+
end
|
180
|
+
|
181
|
+
def aws_autoscaling_lifecycle_hook(name, spec={})
|
182
|
+
default_spec = { name: name }
|
183
|
+
resource 'aws_autoscaling_lifecycle_hook', name,
|
184
|
+
default_spec.deep_merge(spec)
|
185
|
+
end
|
186
|
+
|
187
|
+
def aws_autoscaling_notification(name, spec={})
|
188
|
+
resource 'aws_autoscaling_notification', name, spec
|
189
|
+
end
|
190
|
+
|
191
|
+
def aws_autoscaling_policy(name, spec={})
|
192
|
+
default_spec = { name: name }
|
193
|
+
resource 'aws_autoscaling_policy', name,
|
194
|
+
default_spec.deep_merge(spec)
|
195
|
+
end
|
196
|
+
|
197
|
+
def aws_autoscaling_schedule(name, spec={})
|
198
|
+
resource 'aws_autoscaling_schedule', name, spec
|
199
|
+
end
|
200
|
+
|
201
|
+
def aws_ebs_volume(name, spec={})
|
202
|
+
resource 'aws_ebs_volume', name, spec
|
203
|
+
end
|
204
|
+
|
205
|
+
def aws_eip_association(name, spec={})
|
206
|
+
resource 'aws_eip_association', name, spec
|
207
|
+
end
|
208
|
+
|
209
|
+
def aws_eip(name, spec={})
|
210
|
+
resource 'aws_eip', name, spec
|
211
|
+
end
|
212
|
+
|
213
|
+
def aws_elb(name, spec={})
|
214
|
+
default_spec = { name: name }
|
215
|
+
resource 'aws_elb', name,
|
216
|
+
default_spec.deep_merge(spec)
|
217
|
+
end
|
218
|
+
|
219
|
+
def aws_instance(name, spec={})
|
220
|
+
resource 'aws_instance', name, spec
|
221
|
+
end
|
222
|
+
|
223
|
+
def aws_key_pair(name, spec={})
|
224
|
+
default_spec = { key_name: name }
|
225
|
+
resource 'aws_key_pair', name,
|
226
|
+
default_spec.deep_merge(spec)
|
227
|
+
end
|
228
|
+
|
229
|
+
def aws_launch_configuration(name, spec={})
|
230
|
+
default_spec = { name: name }
|
231
|
+
resource 'aws_launch_configuration', name,
|
232
|
+
default_spec.deep_merge(spec)
|
233
|
+
end
|
234
|
+
|
235
|
+
def aws_lb_cookie_stickiness_policy(name, spec={})
|
236
|
+
default_spec = { name: name }
|
237
|
+
resource 'aws_lb_cookie_stickiness_policy', name,
|
238
|
+
default_spec.deep_merge(spec)
|
239
|
+
end
|
240
|
+
|
241
|
+
def aws_placement_group(name, spec={})
|
242
|
+
default_spec = { name: name }
|
243
|
+
resource 'aws_placement_group', name,
|
244
|
+
default_spec.deep_merge(spec)
|
245
|
+
end
|
246
|
+
|
247
|
+
def aws_proxy_protocol_policy(name, spec={})
|
248
|
+
resource 'aws_proxy_protocol_policy', name, spec
|
249
|
+
end
|
250
|
+
|
251
|
+
def aws_spot_instance_request(name, spec={})
|
252
|
+
resource 'aws_spot_instance_request', name, spec
|
253
|
+
end
|
254
|
+
|
255
|
+
def aws_volume_attachment(name, spec={})
|
256
|
+
resource 'aws_volume_attachment', name, spec
|
257
|
+
end
|
258
|
+
|
259
|
+
def aws_ecs_cluster(name, spec={})
|
260
|
+
default_spec = { name: name }
|
261
|
+
resource 'aws_ecs_cluster', name,
|
262
|
+
default_spec.deep_merge(spec)
|
263
|
+
end
|
264
|
+
|
265
|
+
def aws_ecs_service(name, spec={})
|
266
|
+
default_spec = { name: name }
|
267
|
+
resource 'aws_ecs_service', name,
|
268
|
+
default_spec.deep_merge(spec)
|
269
|
+
end
|
270
|
+
|
271
|
+
def aws_ecs_task_definition(name, spec={})
|
272
|
+
default_spec = { family: name }
|
273
|
+
resource 'aws_ecs_task_definition', name,
|
274
|
+
default_spec.deep_merge(spec)
|
275
|
+
end
|
276
|
+
|
277
|
+
def aws_ecr_repository(name, spec={})
|
278
|
+
default_spec = { name: name }
|
279
|
+
resource 'aws_ecr_repository', name,
|
280
|
+
default_spec.deep_merge(spec)
|
281
|
+
end
|
282
|
+
|
283
|
+
def aws_ecr_repository_policy(name, spec={})
|
284
|
+
resource 'aws_ecr_repository_policy', name, spec
|
285
|
+
end
|
286
|
+
|
287
|
+
def aws_efs_file_system(name, spec={})
|
288
|
+
resource 'aws_efs_file_system', name, spec
|
289
|
+
end
|
290
|
+
|
291
|
+
def aws_efs_mount_target(name, spec={})
|
292
|
+
resource 'aws_efs_mount_target', name, spec
|
293
|
+
end
|
294
|
+
|
295
|
+
def aws_elasticache_cluster(name, spec={})
|
296
|
+
default_spec = { cluster_id: name }
|
297
|
+
resource 'aws_elasticache_cluster', name,
|
298
|
+
default_spec.deep_merge(spec)
|
299
|
+
end
|
300
|
+
|
301
|
+
def aws_elasticache_parameter_group(name, spec={})
|
302
|
+
default_spec = { name: name }
|
303
|
+
resource 'aws_elasticache_parameter_group', name,
|
304
|
+
default_spec.deep_merge(spec)
|
305
|
+
end
|
306
|
+
|
307
|
+
def aws_elasticache_security_group(name, spec={})
|
308
|
+
default_spec = { name: name }
|
309
|
+
resource 'aws_elasticache_security_group', name,
|
310
|
+
default_spec.deep_merge(spec)
|
311
|
+
end
|
312
|
+
|
313
|
+
def aws_elasticache_subnet_group(name, spec={})
|
314
|
+
default_spec = { name: name }
|
315
|
+
resource 'aws_elasticache_subnet_group', name,
|
316
|
+
default_spec.deep_merge(spec)
|
317
|
+
end
|
318
|
+
|
319
|
+
def aws_elastic_beanstalk_application(name, spec={})
|
320
|
+
default_spec = { name: name }
|
321
|
+
resource 'aws_elastic_beanstalk_application', name,
|
322
|
+
default_spec.deep_merge(spec)
|
323
|
+
end
|
324
|
+
|
325
|
+
def aws_elastic_beanstalk_configuration_template(name, spec={})
|
326
|
+
default_spec = { name: name }
|
327
|
+
resource 'aws_elastic_beanstalk_configuration_template', name,
|
328
|
+
default_spec.deep_merge(spec)
|
329
|
+
end
|
330
|
+
|
331
|
+
def aws_elastic_beanstalk_environment(name, spec={})
|
332
|
+
default_spec = { name: name }
|
333
|
+
resource 'aws_elastic_beanstalk_environment', name,
|
334
|
+
default_spec.deep_merge(spec)
|
335
|
+
end
|
336
|
+
|
337
|
+
def aws_elasticsearch_domain(name, spec={})
|
338
|
+
default_spec = { domain_name: name }
|
339
|
+
resource 'aws_elasticsearch_domain', name,
|
340
|
+
default_spec.deep_merge(spec)
|
341
|
+
end
|
342
|
+
|
343
|
+
def aws_glacier_vault(name, spec={})
|
344
|
+
default_spec = { name: name }
|
345
|
+
resource 'aws_glacier_vault', name,
|
346
|
+
default_spec.deep_merge(spec)
|
347
|
+
end
|
348
|
+
|
349
|
+
def aws_iam_access_key(name, spec={})
|
350
|
+
resource 'aws_iam_access_key', name, spec
|
351
|
+
end
|
352
|
+
|
353
|
+
def aws_iam_account_password_policy(name, spec={})
|
354
|
+
resource 'aws_iam_account_password_policy', name, spec
|
355
|
+
end
|
356
|
+
|
357
|
+
def aws_iam_group(name, spec={})
|
358
|
+
default_spec = { name: name }
|
359
|
+
resource 'aws_iam_group', name,
|
360
|
+
default_spec.deep_merge(spec)
|
361
|
+
end
|
362
|
+
|
363
|
+
def aws_iam_group_policy(name, spec={})
|
364
|
+
default_spec = { name: name }
|
365
|
+
resource 'aws_iam_group_policy', name,
|
366
|
+
default_spec.deep_merge(spec)
|
367
|
+
end
|
368
|
+
|
369
|
+
def aws_iam_group_membership(name, spec={})
|
370
|
+
default_spec = { name: name }
|
371
|
+
resource 'aws_iam_group_membership', name,
|
372
|
+
default_spec.deep_merge(spec)
|
373
|
+
end
|
374
|
+
|
375
|
+
def aws_iam_instance_profile(name, spec={})
|
376
|
+
default_spec = { name: name }
|
377
|
+
resource 'aws_iam_instance_profile', name,
|
378
|
+
default_spec.deep_merge(spec)
|
379
|
+
end
|
380
|
+
|
381
|
+
def aws_iam_policy(name, spec={})
|
382
|
+
default_spec = { name: name }
|
383
|
+
resource 'aws_iam_policy', name,
|
384
|
+
default_spec.deep_merge(spec)
|
385
|
+
end
|
386
|
+
|
387
|
+
def aws_iam_policy_attachment(name, spec={})
|
388
|
+
default_spec = { name: name }
|
389
|
+
resource 'aws_iam_policy_attachment', name,
|
390
|
+
default_spec.deep_merge(spec)
|
391
|
+
end
|
392
|
+
|
393
|
+
def aws_iam_role(name, spec={})
|
394
|
+
default_spec = { name: name }
|
395
|
+
resource 'aws_iam_role', name,
|
396
|
+
default_spec.deep_merge(spec)
|
397
|
+
end
|
398
|
+
|
399
|
+
def aws_iam_role_policy(name, spec={})
|
400
|
+
default_spec = { name: name }
|
401
|
+
resource 'aws_iam_role_policy', name,
|
402
|
+
default_spec.deep_merge(spec)
|
403
|
+
end
|
404
|
+
|
405
|
+
def aws_iam_saml_provider(name, spec={})
|
406
|
+
default_spec = { name: name }
|
407
|
+
resource 'aws_iam_saml_provider', name,
|
408
|
+
default_spec.deep_merge(spec)
|
409
|
+
end
|
410
|
+
|
411
|
+
def aws_iam_server_certificate(name, spec={})
|
412
|
+
default_spec = { name: name }
|
413
|
+
resource 'aws_iam_server_certificate', name,
|
414
|
+
default_spec.deep_merge(spec)
|
415
|
+
end
|
416
|
+
|
417
|
+
def aws_iam_user(name, spec={})
|
418
|
+
default_spec = { name: name }
|
419
|
+
resource 'aws_iam_user', name,
|
420
|
+
default_spec.deep_merge(spec)
|
421
|
+
end
|
422
|
+
|
423
|
+
def aws_iam_user_policy(name, spec={})
|
424
|
+
default_spec = { name: name }
|
425
|
+
resource 'aws_iam_user_policy', name,
|
426
|
+
default_spec.deep_merge(spec)
|
427
|
+
end
|
428
|
+
|
429
|
+
def aws_iam_user_ssh_key(name, spec={})
|
430
|
+
default_spec = { username: name }
|
431
|
+
resource 'aws_iam_user_ssh_key', name,
|
432
|
+
default_spec.deep_merge(spec)
|
433
|
+
end
|
434
|
+
|
435
|
+
def aws_kinesis_stream(name, spec={})
|
436
|
+
default_spec = { name: name }
|
437
|
+
resource 'aws_kinesis_stream', name,
|
438
|
+
default_spec.deep_merge(spec)
|
439
|
+
end
|
440
|
+
|
441
|
+
def aws_kinesis_firehose_delivery_stream(name, spec={})
|
442
|
+
default_spec = { name: name }
|
443
|
+
resource 'aws_kinesis_firehose_delivery_stream', name,
|
444
|
+
default_spec.deep_merge(spec)
|
445
|
+
end
|
446
|
+
|
447
|
+
def aws_kms_key(name, spec={})
|
448
|
+
resource 'aws_kms_key', name, spec
|
449
|
+
end
|
450
|
+
|
451
|
+
def aws_kms_alias(name, spec={})
|
452
|
+
default_spec = { name: name }
|
453
|
+
resource 'aws_kms_alias', name,
|
454
|
+
default_spec.deep_merge(spec)
|
455
|
+
end
|
456
|
+
|
457
|
+
def aws_lambda_alias(name, spec={})
|
458
|
+
default_spec = { name: name }
|
459
|
+
resource 'aws_lambda_alias', name,
|
460
|
+
default_spec.deep_merge(spec)
|
461
|
+
end
|
462
|
+
|
463
|
+
def aws_lambda_function(name, spec={})
|
464
|
+
resource 'aws_lambda_function', name, spec
|
465
|
+
end
|
466
|
+
|
467
|
+
def aws_lambda_event_source_mapping(name, spec={})
|
468
|
+
resource 'aws_lambda_event_source_mapping', name, spec
|
469
|
+
end
|
470
|
+
|
471
|
+
def aws_lambda_permission(name, spec={})
|
472
|
+
resource 'aws_lambda_permission', name, spec
|
473
|
+
end
|
474
|
+
|
475
|
+
def aws_opsworks_custom_layer(name, spec={})
|
476
|
+
default_spec = { name: name }
|
477
|
+
resource 'aws_opsworks_custom_layer', name,
|
478
|
+
default_spec.deep_merge(spec)
|
479
|
+
end
|
480
|
+
|
481
|
+
def aws_opsworks_ganglia_layer(name, spec={})
|
482
|
+
default_spec = { name: name }
|
483
|
+
resource 'aws_opsworks_ganglia_layer', name,
|
484
|
+
default_spec.deep_merge(spec)
|
485
|
+
end
|
486
|
+
|
487
|
+
def aws_opsworks_haproxy_layer(name, spec={})
|
488
|
+
default_spec = { name: name }
|
489
|
+
resource 'aws_opsworks_haproxy_layer', name,
|
490
|
+
default_spec.deep_merge(spec)
|
491
|
+
end
|
492
|
+
|
493
|
+
def aws_opsworks_instance(name, spec={})
|
494
|
+
resource 'aws_opsworks_instance', name, spec
|
495
|
+
end
|
496
|
+
|
497
|
+
def aws_opsworks_java_app_layer(name, spec={})
|
498
|
+
default_spec = { name: name }
|
499
|
+
resource 'aws_opsworks_java_app_layer', name,
|
500
|
+
default_spec.deep_merge(spec)
|
501
|
+
end
|
502
|
+
|
503
|
+
def aws_opsworks_memcached_layer(name, spec={})
|
504
|
+
default_spec = { name: name }
|
505
|
+
resource 'aws_opsworks_memcached_layer', name,
|
506
|
+
default_spec.deep_merge(spec)
|
507
|
+
end
|
508
|
+
|
509
|
+
def aws_opsworks_mysql_layer(name, spec={})
|
510
|
+
default_spec = { name: name }
|
511
|
+
resource 'aws_opsworks_mysql_layer', name,
|
512
|
+
default_spec.deep_merge(spec)
|
513
|
+
end
|
514
|
+
|
515
|
+
def aws_opsworks_nodejs_app_layer(name, spec={})
|
516
|
+
default_spec = { name: name }
|
517
|
+
resource 'aws_opsworks_nodejs_app_layer', name,
|
518
|
+
default_spec.deep_merge(spec)
|
519
|
+
end
|
520
|
+
|
521
|
+
def aws_opsworks_php_app_layer(name, spec={})
|
522
|
+
default_spec = { name: name }
|
523
|
+
resource 'aws_opsworks_php_app_layer', name,
|
524
|
+
default_spec.deep_merge(spec)
|
525
|
+
end
|
526
|
+
|
527
|
+
def aws_opsworks_rails_app_layer(name, spec={})
|
528
|
+
default_spec = { name: name }
|
529
|
+
resource 'aws_opsworks_rails_app_layer', name,
|
530
|
+
default_spec.deep_merge(spec)
|
531
|
+
end
|
532
|
+
|
533
|
+
def aws_opsworks_stack(name, spec={})
|
534
|
+
default_spec = { name: name }
|
535
|
+
resource 'aws_opsworks_stack', name,
|
536
|
+
default_spec.deep_merge(spec)
|
537
|
+
end
|
538
|
+
|
539
|
+
def aws_opsworks_static_web_layer(name, spec={})
|
540
|
+
default_spec = { name: name }
|
541
|
+
resource 'aws_opsworks_static_web_layer', name,
|
542
|
+
default_spec.deep_merge(spec)
|
543
|
+
end
|
544
|
+
|
545
|
+
def aws_opsworks_application(name, spec={})
|
546
|
+
default_spec = { name: name }
|
547
|
+
resource 'aws_opsworks_application', name,
|
548
|
+
default_spec.deep_merge(spec)
|
549
|
+
end
|
550
|
+
|
551
|
+
def aws_db_instance(name, spec={})
|
552
|
+
resource 'aws_db_instance', name, spec
|
553
|
+
end
|
554
|
+
|
555
|
+
def aws_db_event_subscription(name, spec={})
|
556
|
+
default_spec = { name: name }
|
557
|
+
resource 'aws_db_event_subscription', name,
|
558
|
+
default_spec.deep_merge(spec)
|
559
|
+
end
|
560
|
+
|
561
|
+
def aws_db_option_group(name, spec={})
|
562
|
+
default_spec = { name: name }
|
563
|
+
resource 'aws_db_option_group', name,
|
564
|
+
default_spec.deep_merge(spec)
|
565
|
+
end
|
566
|
+
|
567
|
+
def aws_db_parameter_group(name, spec={})
|
568
|
+
default_spec = { name: name,
|
569
|
+
description: name
|
570
|
+
}
|
571
|
+
resource 'aws_db_parameter_group', name,
|
572
|
+
default_spec.deep_merge(spec)
|
573
|
+
end
|
574
|
+
|
575
|
+
def aws_db_security_group(name, spec={})
|
576
|
+
default_spec = { name: name,
|
577
|
+
description: name
|
578
|
+
}
|
579
|
+
resource 'aws_db_security_group', name,
|
580
|
+
default_spec.deep_merge(spec)
|
581
|
+
end
|
582
|
+
|
583
|
+
def aws_db_subnet_group(name, spec={})
|
584
|
+
default_spec = { name: name,
|
585
|
+
description: name
|
586
|
+
}
|
587
|
+
resource 'aws_db_subnet_group', name,
|
588
|
+
default_spec.deep_merge(spec)
|
589
|
+
end
|
590
|
+
|
591
|
+
def aws_rds_cluster(name, spec={})
|
592
|
+
default_spec = { cluster_identifier: name.downcase }
|
593
|
+
resource 'aws_rds_cluster', name,
|
594
|
+
default_spec.deep_merge(spec)
|
595
|
+
end
|
596
|
+
|
597
|
+
def aws_rds_cluster_instance(name, spec={})
|
598
|
+
resource 'aws_rds_cluster_instance', name, spec
|
599
|
+
end
|
600
|
+
|
601
|
+
def aws_redshift_cluster(name, spec={})
|
602
|
+
resource 'aws_redshift_cluster', name, spec
|
603
|
+
end
|
604
|
+
|
605
|
+
def aws_redshift_parameter_group(name, spec={})
|
606
|
+
default_spec = { name: name }
|
607
|
+
resource 'aws_redshift_parameter_group', name,
|
608
|
+
default_spec.deep_merge(spec)
|
609
|
+
end
|
610
|
+
|
611
|
+
def aws_redshift_security_group(name, spec={})
|
612
|
+
default_spec = { name: name,
|
613
|
+
description: name
|
614
|
+
}
|
615
|
+
resource 'aws_redshift_security_group', name,
|
616
|
+
default_spec.deep_merge(spec)
|
617
|
+
end
|
618
|
+
|
619
|
+
def aws_redshift_subnet_group(name, spec={})
|
620
|
+
default_spec = { name: name,
|
621
|
+
description: name
|
622
|
+
}
|
623
|
+
resource 'aws_redshift_subnet_group', name,
|
624
|
+
default_spec.deep_merge(spec)
|
625
|
+
end
|
626
|
+
|
627
|
+
def aws_route53_delegation_set(name, spec={})
|
628
|
+
resource 'aws_route53_delegation_set', name, spec
|
629
|
+
end
|
630
|
+
|
631
|
+
def aws_route53_health_check(name, spec={})
|
632
|
+
resource 'aws_route53_health_check', name, spec
|
633
|
+
end
|
634
|
+
|
635
|
+
def aws_route53_record(name, spec={})
|
636
|
+
default_spec = { name: name }
|
637
|
+
resource 'aws_route53_record', name,
|
638
|
+
default_spec.deep_merge(spec)
|
639
|
+
end
|
640
|
+
|
641
|
+
def aws_route53_zone(name, spec={})
|
642
|
+
default_spec = { name: name }
|
643
|
+
resource 'aws_route53_zone', name,
|
644
|
+
default_spec.deep_merge(spec)
|
645
|
+
end
|
646
|
+
|
647
|
+
def aws_route53_zone_association(name, spec={})
|
648
|
+
resource 'aws_route53_zone_association', name, spec
|
649
|
+
end
|
650
|
+
|
651
|
+
def aws_s3_bucket(name, spec={})
|
652
|
+
resource 'aws_s3_bucket', name, spec
|
653
|
+
end
|
654
|
+
|
655
|
+
def aws_s3_bucket_object(name, spec={})
|
656
|
+
resource 'aws_s3_bucket_object', name, spec
|
657
|
+
end
|
658
|
+
|
659
|
+
def aws_s3_bucket_notification(name, spec={})
|
660
|
+
resource 'aws_s3_bucket_notification', name, spec
|
661
|
+
end
|
662
|
+
|
663
|
+
def aws_sns_topic(name, spec={})
|
664
|
+
default_spec = { name: name }
|
665
|
+
resource 'aws_sns_topic', name,
|
666
|
+
default_spec.deep_merge(spec)
|
667
|
+
end
|
668
|
+
|
669
|
+
def aws_sns_topic_subscription(name, spec={})
|
670
|
+
resource 'aws_sns_topic_subscription', name, spec
|
671
|
+
end
|
672
|
+
|
673
|
+
def aws_sqs_queue(name, spec={})
|
674
|
+
default_spec = { name: name }
|
675
|
+
resource 'aws_sqs_queue', name,
|
676
|
+
default_spec.deep_merge(spec)
|
677
|
+
end
|
678
|
+
|
679
|
+
def aws_customer_gateway(name, spec={})
|
680
|
+
resource 'aws_customer_gateway', name, spec
|
681
|
+
end
|
682
|
+
|
683
|
+
def aws_flow_log(name, spec={})
|
684
|
+
resource 'aws_flow_log', name, spec
|
685
|
+
end
|
686
|
+
|
687
|
+
def aws_internet_gateway(name, spec={})
|
688
|
+
resource 'aws_internet_gateway', name, spec
|
689
|
+
end
|
690
|
+
|
691
|
+
def aws_main_route_table_association(name, spec={})
|
692
|
+
resource 'aws_main_route_table_association', name, spec
|
693
|
+
end
|
694
|
+
|
695
|
+
def aws_nat_gateway(name, spec={})
|
696
|
+
resource 'aws_nat_gateway', name, spec
|
697
|
+
end
|
698
|
+
|
699
|
+
def aws_default_network_acl(name, spec={})
|
700
|
+
resource 'aws_default_network_acl', name, spec
|
701
|
+
end
|
702
|
+
|
703
|
+
def aws_network_acl(name, spec={})
|
704
|
+
resource 'aws_network_acl', name, spec
|
705
|
+
end
|
706
|
+
|
707
|
+
def aws_network_acl_rule(name, spec={})
|
708
|
+
resource 'aws_network_acl_rule', name, spec
|
709
|
+
end
|
710
|
+
|
711
|
+
def aws_network_interface(name, spec={})
|
712
|
+
resource 'aws_network_interface', name, spec
|
713
|
+
end
|
714
|
+
|
715
|
+
def aws_route(name, spec={})
|
716
|
+
resource 'aws_route', name, spec
|
717
|
+
end
|
718
|
+
|
719
|
+
def aws_route_table(name, spec={})
|
720
|
+
resource 'aws_route_table', name, spec
|
721
|
+
end
|
722
|
+
|
723
|
+
def aws_route_table_association(name, spec={})
|
724
|
+
resource 'aws_route_table_association', name, spec
|
725
|
+
end
|
726
|
+
|
727
|
+
def aws_security_group(name, spec={})
|
728
|
+
default_spec = { name: name,
|
729
|
+
tags: { Name: name }
|
730
|
+
}
|
731
|
+
resource('aws_security_group', name,
|
732
|
+
default_spec.deep_merge(spec={}))
|
733
|
+
end
|
734
|
+
|
735
|
+
def aws_security_group_rule(name, spec={})
|
736
|
+
resource 'aws_security_group_rule', name, spec
|
737
|
+
end
|
738
|
+
|
739
|
+
def aws_subnet(name, spec={})
|
740
|
+
resource 'aws_subnet', name, spec
|
741
|
+
end
|
742
|
+
|
743
|
+
def aws_vpc(name, spec={})
|
744
|
+
resource 'aws_vpc', name, spec
|
745
|
+
end
|
746
|
+
|
747
|
+
def aws_vpc_dhcp_options(name, spec={})
|
748
|
+
resource 'aws_vpc_dhcp_options', name, spec
|
749
|
+
end
|
750
|
+
|
751
|
+
def aws_vpc_dhcp_options_association(name, spec={})
|
752
|
+
resource 'aws_vpc_dhcp_options_association', name, spec
|
753
|
+
end
|
754
|
+
|
755
|
+
def aws_vpc_endpoint(name, spec={})
|
756
|
+
resource 'aws_vpc_endpoint', name, spec
|
757
|
+
end
|
758
|
+
|
759
|
+
def aws_vpc_peering_connection(name, spec={})
|
760
|
+
resource 'aws_vpc_peering_connection', name, spec
|
761
|
+
end
|
762
|
+
|
763
|
+
def aws_vpn_connection(name, spec={})
|
764
|
+
resource 'aws_vpn_connection', name, spec
|
765
|
+
end
|
766
|
+
|
767
|
+
def aws_vpn_connection_route(name, spec={})
|
768
|
+
resource 'aws_vpn_connection_route', name, spec
|
769
|
+
end
|
770
|
+
|
771
|
+
def aws_vpn_gateway(name, spec={})
|
772
|
+
resource 'aws_vpn_gateway', name, spec
|
773
|
+
end
|
774
|
+
end
|
data/terrafied.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 'terrafied/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "terrafied"
|
8
|
+
spec.version = Terrafied::VERSION
|
9
|
+
spec.authors = ["thattommyhall"]
|
10
|
+
spec.email = ["thattommyhall@gmail.com"]
|
11
|
+
|
12
|
+
spec.summary = %q{Simple Ruby DSL for terraform}
|
13
|
+
spec.description = %q{}
|
14
|
+
spec.homepage = "https://github.com/thattommyhall/terrafied"
|
15
|
+
spec.license = "MIT"
|
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.10"
|
31
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
32
|
+
spec.add_development_dependency "minitest"
|
33
|
+
spec.add_development_dependency "guard"
|
34
|
+
spec.add_development_dependency "guard-minitest"
|
35
|
+
end
|
metadata
ADDED
@@ -0,0 +1,131 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: terrafied
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- thattommyhall
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-07-04 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.10'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.10'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: minitest
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: guard
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: guard-minitest
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
description: ''
|
84
|
+
email:
|
85
|
+
- thattommyhall@gmail.com
|
86
|
+
executables: []
|
87
|
+
extensions: []
|
88
|
+
extra_rdoc_files: []
|
89
|
+
files:
|
90
|
+
- ".gitignore"
|
91
|
+
- ".travis.yml"
|
92
|
+
- CODE_OF_CONDUCT.md
|
93
|
+
- Gemfile
|
94
|
+
- Guardfile
|
95
|
+
- LICENSE.txt
|
96
|
+
- README.md
|
97
|
+
- Rakefile
|
98
|
+
- examples/add_resource_type.rb
|
99
|
+
- examples/resource_aliases.rb
|
100
|
+
- examples/simple.rb
|
101
|
+
- lib/terrafied.rb
|
102
|
+
- lib/terrafied/builder.rb
|
103
|
+
- lib/terrafied/resource_shortcuts.rb
|
104
|
+
- lib/terrafied/version.rb
|
105
|
+
- terrafied.gemspec
|
106
|
+
homepage: https://github.com/thattommyhall/terrafied
|
107
|
+
licenses:
|
108
|
+
- MIT
|
109
|
+
metadata:
|
110
|
+
allowed_push_host: https://rubygems.org
|
111
|
+
post_install_message:
|
112
|
+
rdoc_options: []
|
113
|
+
require_paths:
|
114
|
+
- lib
|
115
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - ">="
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0'
|
120
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
requirements: []
|
126
|
+
rubyforge_project:
|
127
|
+
rubygems_version: 2.5.1
|
128
|
+
signing_key:
|
129
|
+
specification_version: 4
|
130
|
+
summary: Simple Ruby DSL for terraform
|
131
|
+
test_files: []
|