elastic_beans 0.13.0.alpha1 → 0.13.0.alpha2
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 +4 -4
- data/README.md +4 -4
- data/lib/elastic_beans/cli.rb +4 -4
- data/lib/elastic_beans/command/configure.rb +16 -74
- data/lib/elastic_beans/command/set_env.rb +2 -1
- data/lib/elastic_beans/configuration_template.rb +5 -26
- data/lib/elastic_beans/configuration_template/base.rb +27 -25
- data/lib/elastic_beans/configuration_template/exec.rb +5 -9
- data/lib/elastic_beans/configuration_template/scheduler.rb +4 -8
- data/lib/elastic_beans/configuration_template/webserver.rb +18 -22
- data/lib/elastic_beans/configuration_template/worker.rb +8 -12
- data/lib/elastic_beans/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2614bd01e1a8f79393555bb45e3d809bfd9c10a6
|
4
|
+
data.tar.gz: 5d6f634839f68a30640499d1ea9a0f0058765819
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f041edea2aba73fd8a02b3dbc3106c9a416968b2c066c4347ec152aae025b5ef873f9ce61207e2e966e6d711a07373975d073144a8fa9734642cfb4c000f9121
|
7
|
+
data.tar.gz: 3033e55d96aadc2fd2b059a9f441d76bbcde77e0fac8fbaf8fec6acded21ec4ea991b3224b22b207225a8c29ad50e7600bd7b4900d72e064d5812263df9db76c
|
data/README.md
CHANGED
@@ -24,8 +24,8 @@ As the SDK documentation suggests, using environment variables is recommended.
|
|
24
24
|
|
25
25
|
# Pre-configure the application before creating environments
|
26
26
|
beans configure -n myapp-networking -a myapp \
|
27
|
-
-p INTERNAL_PUBLIC_KEY -s SSL_CERTIFICATE_ARN
|
28
|
-
[-
|
27
|
+
-p INTERNAL_PUBLIC_KEY -s SSL_CERTIFICATE_ARN \
|
28
|
+
-k KEYPAIR [-i IMAGE_ID] [-t INSTANCE_TYPE]
|
29
29
|
beans setenv -a myapp \
|
30
30
|
DATABASE_URL=mysql2://db.example.com:3306/myapp \
|
31
31
|
SECRET_KEY_BASE=abc123
|
@@ -65,8 +65,8 @@ As the SDK documentation suggests, using environment variables is recommended.
|
|
65
65
|
|
66
66
|
# Update all existing environments and configuration
|
67
67
|
beans configure -n myapp-networking -a myapp \
|
68
|
-
[-p INTERNAL_PUBLIC_KEY] [-s SSL_CERTIFICATE_ARN]
|
69
|
-
[-
|
68
|
+
[-p INTERNAL_PUBLIC_KEY] [-s SSL_CERTIFICATE_ARN] \
|
69
|
+
[-k KEYPAIR] [-i IMAGE_ID] [-t INSTANCE_TYPE]
|
70
70
|
|
71
71
|
### API
|
72
72
|
|
data/lib/elastic_beans/cli.rb
CHANGED
@@ -16,21 +16,21 @@ class ElasticBeans::CLI < Thor
|
|
16
16
|
long_desc ElasticBeans::Command::Configure::LONG_DESC
|
17
17
|
option :application, aliases: %w(-a), required: true, desc: APPLICATION_DESC
|
18
18
|
option :network, aliases: %w(-n), required: true, desc: "The name of the CloudFormation stack that contains networking settings"
|
19
|
+
option :image_id, aliases: %w(-i), desc: "A custom AMI to use instead of the default Ruby Elastic Beanstalk AMI"
|
20
|
+
option :instance_type, aliases: %w(-t), desc: "A default instance type to use for all environments instead of c4.large"
|
19
21
|
option :internal, type: :boolean, desc: "Configure the webserver to only be available for internal VPC access"
|
20
22
|
option :keypair, aliases: %w(-k), desc: "Required on first run. The EC2 keypair to use for Elastic Beanstalk instances"
|
21
|
-
option :option_settings, aliases: %w(-o), type: :array, default: [], desc: "Option settings to configure, format is NAMESPACE/OPTION_NAME=VALUE, e.g. aws:ec2:vpc/ELBScheme=internal"
|
22
|
-
option :option_settings_to_remove, aliases: %w(-r), type: :array, default: [], desc: "Option settings to remove, format is NAMESPACE/OPTION_NAME, e.g. aws:ec2:vpc/ELBScheme"
|
23
23
|
option :public_key, aliases: %w(-p), desc: "For end-to-end encryption. The public key of the SSL certificate the ELB will verify to communicate with your Rails app"
|
24
24
|
option :ssl_certificate_arn, aliases: %w(-s), desc: "The ARN of the SSL server certificate stored in IAM to attach to the ELB"
|
25
25
|
def configure
|
26
26
|
@verbose = options[:verbose]
|
27
27
|
ElasticBeans::Command::Configure.new(
|
28
|
+
image_id: options[:image_id],
|
29
|
+
instance_type: options[:instance_type],
|
28
30
|
internal: options[:internal],
|
29
31
|
keypair: options[:keypair],
|
30
32
|
public_key: options[:public_key],
|
31
33
|
ssl_certificate_arn: options[:ssl_certificate_arn],
|
32
|
-
option_settings: options[:option_settings],
|
33
|
-
option_settings_to_remove: options[:option_settings_to_remove],
|
34
34
|
application: application(name: options[:application]),
|
35
35
|
network: network(stack_name: options[:network]),
|
36
36
|
elastic_beanstalk: elastic_beanstalk_client,
|
@@ -16,24 +16,24 @@ Requires AWS credentials to be set in the environment, i.e. AWS_ACCESS_KEY_ID an
|
|
16
16
|
LONG_DESC
|
17
17
|
|
18
18
|
def initialize(
|
19
|
+
image_id:,
|
20
|
+
instance_type:,
|
19
21
|
internal:,
|
20
22
|
keypair:,
|
21
23
|
public_key:,
|
22
24
|
ssl_certificate_arn:,
|
23
|
-
option_settings:,
|
24
|
-
option_settings_to_remove:,
|
25
25
|
application:,
|
26
26
|
network:,
|
27
27
|
elastic_beanstalk:,
|
28
28
|
iam:,
|
29
29
|
ui:
|
30
30
|
)
|
31
|
+
@image_id = image_id
|
32
|
+
@instance_type = instance_type
|
31
33
|
@internal = internal
|
32
34
|
@keypair = keypair
|
33
35
|
@public_key = public_key
|
34
36
|
@ssl_certificate_arn = ssl_certificate_arn
|
35
|
-
@option_setting_strings = option_settings
|
36
|
-
@option_strings_to_remove = option_settings_to_remove
|
37
37
|
@application = application
|
38
38
|
@network = network
|
39
39
|
@elastic_beanstalk = elastic_beanstalk
|
@@ -71,9 +71,9 @@ Requires AWS credentials to be set in the environment, i.e. AWS_ACCESS_KEY_ID an
|
|
71
71
|
)
|
72
72
|
base_config.upsert(
|
73
73
|
network: network,
|
74
|
+
image_id: image_id,
|
75
|
+
instance_type: instance_type,
|
74
76
|
keypair: keypair,
|
75
|
-
option_settings: option_settings,
|
76
|
-
options_to_remove: options_to_remove,
|
77
77
|
iam: iam,
|
78
78
|
)
|
79
79
|
progressbar.increment
|
@@ -85,10 +85,10 @@ Requires AWS credentials to be set in the environment, i.e. AWS_ACCESS_KEY_ID an
|
|
85
85
|
)
|
86
86
|
webserver_config.upsert(
|
87
87
|
network: network,
|
88
|
+
image_id: image_id,
|
89
|
+
instance_type: instance_type,
|
88
90
|
internal: internal,
|
89
91
|
keypair: keypair,
|
90
|
-
option_settings: option_settings,
|
91
|
-
options_to_remove: options_to_remove,
|
92
92
|
iam: iam,
|
93
93
|
public_key: public_key,
|
94
94
|
ssl_certificate_arn: ssl_certificate_arn,
|
@@ -109,9 +109,9 @@ Requires AWS credentials to be set in the environment, i.e. AWS_ACCESS_KEY_ID an
|
|
109
109
|
)
|
110
110
|
exec_config.upsert(
|
111
111
|
network: network,
|
112
|
+
image_id: image_id,
|
113
|
+
instance_type: instance_type,
|
112
114
|
keypair: keypair,
|
113
|
-
option_settings: option_settings,
|
114
|
-
options_to_remove: options_to_remove,
|
115
115
|
iam: iam,
|
116
116
|
)
|
117
117
|
exec_environment = exec_config.environment
|
@@ -130,9 +130,9 @@ Requires AWS credentials to be set in the environment, i.e. AWS_ACCESS_KEY_ID an
|
|
130
130
|
)
|
131
131
|
scheduler_config.upsert(
|
132
132
|
network: network,
|
133
|
+
image_id: image_id,
|
134
|
+
instance_type: instance_type,
|
133
135
|
keypair: keypair,
|
134
|
-
option_settings: option_settings,
|
135
|
-
options_to_remove: options_to_remove,
|
136
136
|
iam: iam,
|
137
137
|
)
|
138
138
|
scheduler_environment = scheduler_config.environment
|
@@ -153,9 +153,9 @@ Requires AWS credentials to be set in the environment, i.e. AWS_ACCESS_KEY_ID an
|
|
153
153
|
)
|
154
154
|
worker_config.upsert(
|
155
155
|
network: network,
|
156
|
+
image_id: image_id,
|
157
|
+
instance_type: instance_type,
|
156
158
|
keypair: keypair,
|
157
|
-
option_settings: option_settings,
|
158
|
-
options_to_remove: options_to_remove,
|
159
159
|
iam: iam,
|
160
160
|
)
|
161
161
|
worker_environment = worker_config.environment
|
@@ -175,6 +175,8 @@ Requires AWS credentials to be set in the environment, i.e. AWS_ACCESS_KEY_ID an
|
|
175
175
|
|
176
176
|
attr_reader(
|
177
177
|
:application,
|
178
|
+
:image_id,
|
179
|
+
:instance_type,
|
178
180
|
:internal,
|
179
181
|
:keypair,
|
180
182
|
:network,
|
@@ -184,66 +186,6 @@ Requires AWS credentials to be set in the environment, i.e. AWS_ACCESS_KEY_ID an
|
|
184
186
|
:iam,
|
185
187
|
:ui,
|
186
188
|
)
|
187
|
-
|
188
|
-
# Coerces +@option_setting_strings+ into object format.
|
189
|
-
def option_settings
|
190
|
-
@option_settings ||= @option_setting_strings.map { |option_setting_string|
|
191
|
-
setting, value = option_setting_string.split('=', 2)
|
192
|
-
if !setting || setting.empty? || !value || value.empty?
|
193
|
-
raise InvalidOptionSettingFormatError
|
194
|
-
end
|
195
|
-
namespace, option_name = setting.split('/', 2)
|
196
|
-
if !namespace || namespace.empty? || !option_name || option_name.empty?
|
197
|
-
raise InvalidOptionSettingFormatError
|
198
|
-
end
|
199
|
-
{namespace: namespace, option_name: option_name, value: value}
|
200
|
-
}
|
201
|
-
end
|
202
|
-
|
203
|
-
# Coerces +@option_strings_to_remove+ into object format.
|
204
|
-
def options_to_remove
|
205
|
-
@options_to_remove ||= @option_strings_to_remove.map { |option_setting_string|
|
206
|
-
namespace, option_name = option_setting_string.split('/', 2)
|
207
|
-
if !namespace || namespace.empty? || !option_name || option_name.empty? || option_name.include?('=')
|
208
|
-
raise InvalidOptionSettingFormatError
|
209
|
-
end
|
210
|
-
{namespace: namespace, option_name: option_name}
|
211
|
-
}
|
212
|
-
end
|
213
|
-
|
214
|
-
# :nodoc: all
|
215
|
-
# @!visibility private
|
216
|
-
class InvalidOptionSettingFormatError < ElasticBeans::Error
|
217
|
-
def message
|
218
|
-
require "elastic_beans/cli"
|
219
|
-
require "elastic_beans/cli/string_shell"
|
220
|
-
<<-MESSAGE
|
221
|
-
Invalid format for --option-settings.
|
222
|
-
Option settings should in the format 'NAMESPACE/OPTION_NAME=VALUE', e.g. 'aws:autoscaling:asg/Cooldown=180'.
|
223
|
-
If you'd like to *remove* option settings, use --option-settings-to-remove 'NAMESPACE/OPTION_NAME'.
|
224
|
-
Please re-run `#{command_as_string "configure"}` with updated syntax.
|
225
|
-
|
226
|
-
#{command_help "configure"}
|
227
|
-
MESSAGE
|
228
|
-
end
|
229
|
-
end
|
230
|
-
|
231
|
-
# :nodoc: all
|
232
|
-
# @!visibility private
|
233
|
-
class InvalidOptionSettingsToRemoveFormatError < ElasticBeans::Error
|
234
|
-
def message
|
235
|
-
require "elastic_beans/cli"
|
236
|
-
require "elastic_beans/cli/string_shell"
|
237
|
-
<<-MESSAGE
|
238
|
-
Invalid format for --option-settings-to-remove.
|
239
|
-
Option settings to remove should in the format 'NAMESPACE/OPTION_NAME', e.g. 'aws:autoscaling:asg/Cooldown'.
|
240
|
-
If you'd like to *set* option settings, use --option-settings 'NAMESPACE/OPTION_NAME=VALUE'.
|
241
|
-
Please re-run `#{command_as_string "configure"}` with updated syntax.
|
242
|
-
|
243
|
-
#{command_help "configure"}
|
244
|
-
MESSAGE
|
245
|
-
end
|
246
|
-
end
|
247
189
|
end
|
248
190
|
end
|
249
191
|
end
|
@@ -90,7 +90,8 @@ Requires AWS credentials to be set in the environment, i.e. AWS_ACCESS_KEY_ID an
|
|
90
90
|
def message
|
91
91
|
"Missing value for key '#{@key}'. " \
|
92
92
|
"Should it be part of the previous value? " \
|
93
|
-
"You may need to quote the key/value pair (e.g. 'MYVAR=myvalue, myvalue2')
|
93
|
+
"You may need to quote the key/value pair (e.g. `#{command_as_string("setenv 'MYVAR=myvalue, myvalue2'")}`) " \
|
94
|
+
"or escape a space (e.g. `#{command_as_string("setenv MYVAR=myvalue,\\ myvalue2")}`)."
|
94
95
|
end
|
95
96
|
end
|
96
97
|
end
|
@@ -12,9 +12,6 @@ module ElasticBeans
|
|
12
12
|
class ConfigurationTemplate
|
13
13
|
# The solution stack used for a new application. Should not be hardcoded, but here we are.
|
14
14
|
SOLUTION_STACK_NAME = "64bit Amazon Linux 2016.09 v2.2.0 running Ruby 2.3 (Puma)"
|
15
|
-
# The source configuration for new configuration templates.
|
16
|
-
# Set to ElasticBeans::ConfigurationTemplate::Base to include all custom configuration that has already been performed.
|
17
|
-
SOURCE_CONFIGURATION = {template_name: "base"}
|
18
15
|
# :category: Internal
|
19
16
|
WORKER_TEMPLATE_NAME_PATTERN = /\Aworker-(?<queue>\w+)\z/
|
20
17
|
|
@@ -123,7 +120,6 @@ module ElasticBeans
|
|
123
120
|
application_name: application.name,
|
124
121
|
template_name: name,
|
125
122
|
solution_stack_name: SOLUTION_STACK_NAME,
|
126
|
-
source_configuration: source_configuration,
|
127
123
|
option_settings: option_settings,
|
128
124
|
)
|
129
125
|
end
|
@@ -139,17 +135,12 @@ module ElasticBeans
|
|
139
135
|
# :category: Internal
|
140
136
|
attr_reader :elastic_beanstalk
|
141
137
|
|
142
|
-
|
143
|
-
|
144
|
-
option_settings
|
138
|
+
def build_option_settings(**_)
|
139
|
+
[]
|
145
140
|
end
|
146
141
|
|
147
|
-
|
148
|
-
|
149
|
-
def build_options_to_remove(options_to_remove: [], **_)
|
150
|
-
options_to_remove.reject { |setting|
|
151
|
-
option_settings.any? { |new_setting| new_setting[:namespace] == setting[:namespace] && new_setting[:option_name] == setting[:option_name] }
|
152
|
-
}
|
142
|
+
def build_options_to_remove(**_)
|
143
|
+
[]
|
153
144
|
end
|
154
145
|
|
155
146
|
def configuration_settings_description(template_name = name)
|
@@ -190,10 +181,6 @@ module ElasticBeans
|
|
190
181
|
retry
|
191
182
|
end
|
192
183
|
|
193
|
-
def source_configuration
|
194
|
-
SOURCE_CONFIGURATION
|
195
|
-
end
|
196
|
-
|
197
184
|
def template_option_setting(
|
198
185
|
template: configuration_settings_description,
|
199
186
|
environment: environment_configuration_settings_description,
|
@@ -201,21 +188,13 @@ module ElasticBeans
|
|
201
188
|
option_name:,
|
202
189
|
default: nil,
|
203
190
|
override: nil,
|
204
|
-
allow_blank: true
|
205
|
-
new_settings:
|
191
|
+
allow_blank: true
|
206
192
|
)
|
207
193
|
option_setting = {namespace: namespace, option_name: option_name, value: default}
|
208
194
|
if override
|
209
195
|
return option_setting.merge!(value: override)
|
210
196
|
end
|
211
197
|
|
212
|
-
new_setting = new_settings.find { |setting|
|
213
|
-
setting[:namespace] == namespace && setting[:option_name] == option_name
|
214
|
-
}
|
215
|
-
if new_setting
|
216
|
-
return new_setting
|
217
|
-
end
|
218
|
-
|
219
198
|
existing_settings = []
|
220
199
|
if environment
|
221
200
|
# Persist changes made directly to the environment from the AWS console UI
|
@@ -18,19 +18,20 @@ module ElasticBeans
|
|
18
18
|
network: nil,
|
19
19
|
keypair: nil,
|
20
20
|
iam: nil,
|
21
|
+
image_id: nil,
|
22
|
+
instance_type: nil,
|
21
23
|
min_size: nil,
|
22
24
|
max_size: nil,
|
23
|
-
option_settings: [],
|
24
25
|
**_
|
25
26
|
)
|
26
27
|
template = configuration_settings_description("base")
|
27
28
|
|
28
|
-
instance_profile_setting = template_option_setting(template: template, namespace: "aws:autoscaling:launchconfiguration", option_name: "IamInstanceProfile", override: instance_profile(iam)
|
29
|
+
instance_profile_setting = template_option_setting(template: template, namespace: "aws:autoscaling:launchconfiguration", option_name: "IamInstanceProfile", override: instance_profile(iam))
|
29
30
|
if instance_profile_setting[:value].nil?
|
30
31
|
raise MissingInstanceProfileError
|
31
32
|
end
|
32
33
|
|
33
|
-
keypair_setting = template_option_setting(template: template, namespace: "aws:autoscaling:launchconfiguration", option_name: "EC2KeyName", override: keypair
|
34
|
+
keypair_setting = template_option_setting(template: template, namespace: "aws:autoscaling:launchconfiguration", option_name: "EC2KeyName", override: keypair)
|
34
35
|
if keypair_setting[:value].nil?
|
35
36
|
raise MissingOptionsError.new(
|
36
37
|
keypair: keypair_setting[:value],
|
@@ -38,31 +39,32 @@ module ElasticBeans
|
|
38
39
|
end
|
39
40
|
|
40
41
|
config_path = "#{application.bucket_name}/#{application.env_vars.s3_key}"
|
41
|
-
|
42
|
-
template_option_setting(template: template, namespace: "aws:elasticbeanstalk:command", option_name: "BatchSize", default: "1"
|
43
|
-
template_option_setting(template: template, namespace: "aws:elasticbeanstalk:command", option_name: "BatchSizeType", default: "Fixed"
|
44
|
-
template_option_setting(template: template, namespace: "aws:elasticbeanstalk:command", option_name: "DeploymentPolicy", default: "Rolling"
|
45
|
-
template_option_setting(template: template, namespace: "aws:elasticbeanstalk:application:environment", option_name: "DISABLE_SQS_CONSUMER", default: "true"
|
46
|
-
template_option_setting(template: template, namespace: "aws:elasticbeanstalk:application:environment", option_name: "ELASTIC_BEANS_ENV_VARS", default: config_path
|
47
|
-
template_option_setting(template: template, namespace: "aws:elasticbeanstalk:environment", option_name: "ServiceRole", default: "aws-elasticbeanstalk-service-role"
|
48
|
-
template_option_setting(template: template, namespace: "aws:elasticbeanstalk:healthreporting:system", option_name: "SystemType", default: "enhanced"
|
49
|
-
template_option_setting(template: template, namespace: "aws:ec2:vpc", option_name: "AssociatePublicIpAddress", default: "false"
|
50
|
-
template_option_setting(template: template, namespace: "aws:autoscaling:asg", option_name: "MinSize", default: "1", override: min_size
|
51
|
-
template_option_setting(template: template, namespace: "aws:autoscaling:asg", option_name: "MaxSize", default: "4", override: max_size
|
52
|
-
template_option_setting(template: template, namespace: "aws:autoscaling:launchconfiguration", option_name: "
|
53
|
-
template_option_setting(template: template, namespace: "aws:autoscaling:
|
54
|
-
template_option_setting(template: template, namespace: "aws:autoscaling:updatepolicy:rollingupdate", option_name: "
|
55
|
-
template_option_setting(template: template, namespace: "aws:autoscaling:
|
56
|
-
template_option_setting(template: template, namespace: "aws:
|
57
|
-
template_option_setting(template: template, namespace: "aws:ec2:vpc", option_name: "
|
58
|
-
template_option_setting(template: template, namespace: "aws:ec2:vpc", option_name: "
|
42
|
+
settings = [
|
43
|
+
template_option_setting(template: template, namespace: "aws:elasticbeanstalk:command", option_name: "BatchSize", default: "1"),
|
44
|
+
template_option_setting(template: template, namespace: "aws:elasticbeanstalk:command", option_name: "BatchSizeType", default: "Fixed"),
|
45
|
+
template_option_setting(template: template, namespace: "aws:elasticbeanstalk:command", option_name: "DeploymentPolicy", default: "Rolling"),
|
46
|
+
template_option_setting(template: template, namespace: "aws:elasticbeanstalk:application:environment", option_name: "DISABLE_SQS_CONSUMER", default: "true"),
|
47
|
+
template_option_setting(template: template, namespace: "aws:elasticbeanstalk:application:environment", option_name: "ELASTIC_BEANS_ENV_VARS", default: config_path),
|
48
|
+
template_option_setting(template: template, namespace: "aws:elasticbeanstalk:environment", option_name: "ServiceRole", default: "aws-elasticbeanstalk-service-role"),
|
49
|
+
template_option_setting(template: template, namespace: "aws:elasticbeanstalk:healthreporting:system", option_name: "SystemType", default: "enhanced"),
|
50
|
+
template_option_setting(template: template, namespace: "aws:ec2:vpc", option_name: "AssociatePublicIpAddress", default: "false"),
|
51
|
+
template_option_setting(template: template, namespace: "aws:autoscaling:asg", option_name: "MinSize", default: "1", override: min_size),
|
52
|
+
template_option_setting(template: template, namespace: "aws:autoscaling:asg", option_name: "MaxSize", default: "4", override: max_size),
|
53
|
+
template_option_setting(template: template, namespace: "aws:autoscaling:launchconfiguration", option_name: "InstanceType", default: "c4.large", override: instance_type),
|
54
|
+
template_option_setting(template: template, namespace: "aws:autoscaling:launchconfiguration", option_name: "SSHSourceRestriction", default: "tcp, 22, 22, 0.0.0.0/32"),
|
55
|
+
template_option_setting(template: template, namespace: "aws:autoscaling:updatepolicy:rollingupdate", option_name: "RollingUpdateType", default: "Health"),
|
56
|
+
template_option_setting(template: template, namespace: "aws:autoscaling:updatepolicy:rollingupdate", option_name: "RollingUpdateEnabled", default: "true"),
|
57
|
+
template_option_setting(template: template, namespace: "aws:autoscaling:launchconfiguration", option_name: "SecurityGroups", override: security_groups(network)),
|
58
|
+
template_option_setting(template: template, namespace: "aws:ec2:vpc", option_name: "ELBSubnets", override: elb_subnets(network)),
|
59
|
+
template_option_setting(template: template, namespace: "aws:ec2:vpc", option_name: "Subnets", override: subnets(network)),
|
60
|
+
template_option_setting(template: template, namespace: "aws:ec2:vpc", option_name: "VPCId", override: vpc_id(network)),
|
59
61
|
instance_profile_setting,
|
60
62
|
keypair_setting,
|
61
63
|
]
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
64
|
+
if image_id
|
65
|
+
settings << template_option_setting(template: template, namespace: "aws:autoscaling:launchconfiguration", option_name: "ImageId", override: image_id)
|
66
|
+
end
|
67
|
+
settings
|
66
68
|
end
|
67
69
|
|
68
70
|
private
|
@@ -12,18 +12,14 @@ module ElasticBeans
|
|
12
12
|
protected
|
13
13
|
|
14
14
|
# Constructs the configuration for the exec environment.
|
15
|
-
def build_option_settings(
|
15
|
+
def build_option_settings(**_)
|
16
16
|
super + [
|
17
|
-
template_option_setting(namespace: "aws:elasticbeanstalk:application", option_name: "Application Healthcheck URL", default: "HTTP:80/"
|
18
|
-
template_option_setting(namespace: "aws:elasticbeanstalk:application:environment", option_name: "DISABLE_SQS_CONSUMER", override: "false"
|
19
|
-
template_option_setting(namespace: "aws:elasticbeanstalk:application:environment", option_name: "ELASTIC_BEANS_EXEC_QUEUE_URL", override: application.exec_queue_url
|
20
|
-
template_option_setting(namespace: "aws:elasticbeanstalk:application:environment", option_name: "RAILS_SKIP_MIGRATIONS", default: "true"
|
17
|
+
template_option_setting(namespace: "aws:elasticbeanstalk:application", option_name: "Application Healthcheck URL", default: "HTTP:80/"),
|
18
|
+
template_option_setting(namespace: "aws:elasticbeanstalk:application:environment", option_name: "DISABLE_SQS_CONSUMER", override: "false"),
|
19
|
+
template_option_setting(namespace: "aws:elasticbeanstalk:application:environment", option_name: "ELASTIC_BEANS_EXEC_QUEUE_URL", override: application.exec_queue_url),
|
20
|
+
template_option_setting(namespace: "aws:elasticbeanstalk:application:environment", option_name: "RAILS_SKIP_MIGRATIONS", default: "true"),
|
21
21
|
]
|
22
22
|
end
|
23
|
-
|
24
|
-
def source_configuration
|
25
|
-
SOURCE_CONFIGURATION
|
26
|
-
end
|
27
23
|
end
|
28
24
|
end
|
29
25
|
end
|
@@ -11,17 +11,13 @@ module ElasticBeans
|
|
11
11
|
|
12
12
|
# Constructs the configuration for the scheduler environment.
|
13
13
|
# No special options here!
|
14
|
-
def build_option_settings(
|
14
|
+
def build_option_settings(**_)
|
15
15
|
super + [
|
16
|
-
template_option_setting(namespace: "aws:elasticbeanstalk:application", option_name: "Application Healthcheck URL", default: "HTTP:80/"
|
17
|
-
template_option_setting(namespace: "aws:elasticbeanstalk:application:environment", option_name: "DISABLE_SQS_CONSUMER", override: "false"
|
18
|
-
template_option_setting(namespace: "aws:elasticbeanstalk:application:environment", option_name: "RAILS_SKIP_MIGRATIONS", default: "true"
|
16
|
+
template_option_setting(namespace: "aws:elasticbeanstalk:application", option_name: "Application Healthcheck URL", default: "HTTP:80/"),
|
17
|
+
template_option_setting(namespace: "aws:elasticbeanstalk:application:environment", option_name: "DISABLE_SQS_CONSUMER", override: "false"),
|
18
|
+
template_option_setting(namespace: "aws:elasticbeanstalk:application:environment", option_name: "RAILS_SKIP_MIGRATIONS", default: "true"),
|
19
19
|
]
|
20
20
|
end
|
21
|
-
|
22
|
-
def source_configuration
|
23
|
-
SOURCE_CONFIGURATION
|
24
|
-
end
|
25
21
|
end
|
26
22
|
end
|
27
23
|
end
|
@@ -13,35 +13,35 @@ module ElasticBeans
|
|
13
13
|
|
14
14
|
# Constructs the configuration for the webserver environment.
|
15
15
|
# All arguments are required on first run.
|
16
|
-
def build_option_settings(network: nil, public_key: nil, ssl_certificate_arn: nil, internal: nil,
|
17
|
-
public_key_policy_names_setting = template_option_setting(namespace: "aws:elb:policies:backendencryption", option_name: "PublicKeyPolicyNames", default: "backendkey"
|
18
|
-
public_key_setting = template_option_setting(namespace: "aws:elb:policies:#{public_key_policy_names_setting[:value]}", option_name: "PublicKey", override: public_key
|
19
|
-
ssl_certificate_setting = template_option_setting(namespace: "aws:elb:listener:443", option_name: "SSLCertificateId", override: ssl_certificate_arn
|
16
|
+
def build_option_settings(network: nil, public_key: nil, ssl_certificate_arn: nil, internal: nil, **_)
|
17
|
+
public_key_policy_names_setting = template_option_setting(namespace: "aws:elb:policies:backendencryption", option_name: "PublicKeyPolicyNames", default: "backendkey")
|
18
|
+
public_key_setting = template_option_setting(namespace: "aws:elb:policies:#{public_key_policy_names_setting[:value]}", option_name: "PublicKey", override: public_key)
|
19
|
+
ssl_certificate_setting = template_option_setting(namespace: "aws:elb:listener:443", option_name: "SSLCertificateId", override: ssl_certificate_arn)
|
20
20
|
if public_key_setting[:value].nil? || ssl_certificate_setting[:value].nil?
|
21
21
|
raise NoEncryptionSettingsError
|
22
22
|
end
|
23
23
|
|
24
|
-
|
25
|
-
template_option_setting(namespace: "aws:elasticbeanstalk:application", option_name: "Application Healthcheck URL", default: "HTTPS:443/", allow_blank: false
|
26
|
-
template_option_setting(namespace: "aws:elasticbeanstalk:application:environment", option_name: "RAILS_SKIP_ASSET_COMPILATION", default: "false"
|
27
|
-
template_option_setting(namespace: "aws:elasticbeanstalk:application:environment", option_name: "RAILS_SKIP_MIGRATIONS", default: "false"
|
28
|
-
template_option_setting(namespace: "aws:elb:listener:443", option_name: "InstancePort", default: "443"
|
29
|
-
template_option_setting(namespace: "aws:elb:listener:443", option_name: "InstanceProtocol", default: "HTTPS"
|
30
|
-
template_option_setting(namespace: "aws:elb:listener:443", option_name: "ListenerProtocol", default: "HTTPS"
|
31
|
-
template_option_setting(namespace: "aws:elb:loadbalancer", option_name: "ManagedSecurityGroup", override: managed_security_group(network)
|
32
|
-
template_option_setting(namespace: "aws:elb:loadbalancer", option_name: "SecurityGroups", override: elb_security_groups(network)
|
33
|
-
template_option_setting(namespace: "aws:elb:policies", option_name: "ConnectionDrainingEnabled", default: "true"
|
34
|
-
template_option_setting(namespace: "aws:elb:policies:backendencryption", option_name: "InstancePorts", default: "443"
|
24
|
+
option_settings = [
|
25
|
+
template_option_setting(namespace: "aws:elasticbeanstalk:application", option_name: "Application Healthcheck URL", default: "HTTPS:443/", allow_blank: false),
|
26
|
+
template_option_setting(namespace: "aws:elasticbeanstalk:application:environment", option_name: "RAILS_SKIP_ASSET_COMPILATION", default: "false"),
|
27
|
+
template_option_setting(namespace: "aws:elasticbeanstalk:application:environment", option_name: "RAILS_SKIP_MIGRATIONS", default: "false"),
|
28
|
+
template_option_setting(namespace: "aws:elb:listener:443", option_name: "InstancePort", default: "443"),
|
29
|
+
template_option_setting(namespace: "aws:elb:listener:443", option_name: "InstanceProtocol", default: "HTTPS"),
|
30
|
+
template_option_setting(namespace: "aws:elb:listener:443", option_name: "ListenerProtocol", default: "HTTPS"),
|
31
|
+
template_option_setting(namespace: "aws:elb:loadbalancer", option_name: "ManagedSecurityGroup", override: managed_security_group(network)),
|
32
|
+
template_option_setting(namespace: "aws:elb:loadbalancer", option_name: "SecurityGroups", override: elb_security_groups(network)),
|
33
|
+
template_option_setting(namespace: "aws:elb:policies", option_name: "ConnectionDrainingEnabled", default: "true"),
|
34
|
+
template_option_setting(namespace: "aws:elb:policies:backendencryption", option_name: "InstancePorts", default: "443"),
|
35
35
|
public_key_policy_names_setting,
|
36
36
|
public_key_setting,
|
37
37
|
ssl_certificate_setting,
|
38
38
|
]
|
39
39
|
if internal
|
40
|
-
internal_setting = template_option_setting(namespace: "aws:ec2:vpc", option_name: "ELBScheme", override: "internal"
|
41
|
-
|
40
|
+
internal_setting = template_option_setting(namespace: "aws:ec2:vpc", option_name: "ELBScheme", override: "internal")
|
41
|
+
option_settings << internal_setting
|
42
42
|
end
|
43
43
|
|
44
|
-
super +
|
44
|
+
super + option_settings
|
45
45
|
end
|
46
46
|
|
47
47
|
# Removes the "internal" ELB scheme if explicitly disabled with --no-internal.
|
@@ -64,10 +64,6 @@ module ElasticBeans
|
|
64
64
|
network.elb_security_groups[0] if network
|
65
65
|
end
|
66
66
|
|
67
|
-
def source_configuration
|
68
|
-
SOURCE_CONFIGURATION
|
69
|
-
end
|
70
|
-
|
71
67
|
# :nodoc: all
|
72
68
|
# @!visibility private
|
73
69
|
class NoEncryptionSettingsError < ElasticBeans::Error
|
@@ -24,21 +24,17 @@ module ElasticBeans
|
|
24
24
|
# Constructs the configuration for the worker environments.
|
25
25
|
# No special arguments, the +queue+ name is stored from the initializer and is used to look up the appropriate
|
26
26
|
# URL.
|
27
|
-
def build_option_settings(
|
27
|
+
def build_option_settings(**_)
|
28
28
|
super + [
|
29
|
-
template_option_setting(namespace: "aws:elasticbeanstalk:application", option_name: "Application Healthcheck URL", default: "HTTP:80/"
|
30
|
-
template_option_setting(namespace: "aws:elasticbeanstalk:application:environment", option_name: "DISABLE_SQS_CONSUMER", override: "false"
|
31
|
-
template_option_setting(namespace: "aws:elasticbeanstalk:application:environment", option_name: "RAILS_SKIP_MIGRATIONS", default: "true"
|
32
|
-
template_option_setting(namespace: "aws:elasticbeanstalk:sqsd", option_name: "InactivityTimeout", default: "1800"
|
33
|
-
template_option_setting(namespace: "aws:elasticbeanstalk:sqsd", option_name: "MaxRetries", default: "10"
|
34
|
-
template_option_setting(namespace: "aws:elasticbeanstalk:sqsd", option_name: "VisibilityTimeout", default: "1800"
|
35
|
-
template_option_setting(namespace: "aws:elasticbeanstalk:sqsd", option_name: "WorkerQueueURL", override: application.worker_queue_url(queue)
|
29
|
+
template_option_setting(namespace: "aws:elasticbeanstalk:application", option_name: "Application Healthcheck URL", default: "HTTP:80/"),
|
30
|
+
template_option_setting(namespace: "aws:elasticbeanstalk:application:environment", option_name: "DISABLE_SQS_CONSUMER", override: "false"),
|
31
|
+
template_option_setting(namespace: "aws:elasticbeanstalk:application:environment", option_name: "RAILS_SKIP_MIGRATIONS", default: "true"),
|
32
|
+
template_option_setting(namespace: "aws:elasticbeanstalk:sqsd", option_name: "InactivityTimeout", default: "1800"),
|
33
|
+
template_option_setting(namespace: "aws:elasticbeanstalk:sqsd", option_name: "MaxRetries", default: "10"),
|
34
|
+
template_option_setting(namespace: "aws:elasticbeanstalk:sqsd", option_name: "VisibilityTimeout", default: "1800"),
|
35
|
+
template_option_setting(namespace: "aws:elasticbeanstalk:sqsd", option_name: "WorkerQueueURL", override: application.worker_queue_url(queue)),
|
36
36
|
]
|
37
37
|
end
|
38
|
-
|
39
|
-
def source_configuration
|
40
|
-
SOURCE_CONFIGURATION
|
41
|
-
end
|
42
38
|
end
|
43
39
|
end
|
44
40
|
end
|