sumomo 0.8.9 → 0.8.10

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 85ea8b9717493794761cd6651e7595ea4056994972508fd8af43965852a7a653
4
- data.tar.gz: 5ceac9bf30af9b4e632a680bb0c414daca770b05c35ed5fd1aa29700f5227a51
3
+ metadata.gz: 44594639cdb423778a130d3debb64caa315d70a6a983a4a5b5fb7b6ed67793f5
4
+ data.tar.gz: 7f6bfa09705119de6682275516395b89362b50aa491e5e48ee64709cd55c8e17
5
5
  SHA512:
6
- metadata.gz: cdf4b4055e84d51971a94a479830bb3cc5e8bfdab565fec391db7bca5426e720489b5a7f95e4da899c2a9ebfead5ea120e2873efb544f38c549b53584cf668f9
7
- data.tar.gz: d819e57bec186f3e3c08a54b50f379ade66b9e9cc5e4b362ba427e0c12ac85a0ddcde969d9aa2ee89b407fd41a42c16679559a9448df92a426c2b898287d2766
6
+ metadata.gz: a336692e9a46532499c5bb4c64dcab1a8c0e485dba942090c707f07dae3c888c542d93a7e012187dae0013d564c1348e6e17061fb4e394a302aea4833c78ce0b
7
+ data.tar.gz: 85927305c489ef72b87a271caddde2fd09696a9dee63f2bbbbd96724f587238195458080285820868a1d2df8f7fdfb73d8dfce3e4689cdb9865349374b559634
data/exe/sumomo CHANGED
@@ -34,7 +34,7 @@ cmd_opts = case cmd
34
34
  local_opts = Trollop.options do
35
35
  opt :filename, 'File that describes the stack', type: :string, default: 'Sumomofile'
36
36
  end
37
- Sumomo.create_stack(name: ARGV[0], region: global_opts[:region]) do
37
+ Sumomo.send("#{cmd}_stack", name: ARGV[0], region: global_opts[:region]) do
38
38
  proc = proc {}
39
39
  eval File.read(local_opts[:filename]), proc.binding, local_opts[:filename]
40
40
  end
@@ -49,7 +49,7 @@ cmd_opts = case cmd
49
49
  key = JSON.parse(File.read('x.txt'))['value']
50
50
  File.write('key.pem', key)
51
51
  `chmod 0600 key.pem`
52
- exec "ssh -i 'key.pem' ec2-user@#{ARGV[1]}"
52
+ exec "ssh -i 'key.pem' ec2-user@#{ARGV[1]} #{ARGV[2]}"
53
53
 
54
54
  when 'testapi'
55
55
  local_opts = Trollop.options do
data/lib/sumomo.rb CHANGED
@@ -26,6 +26,16 @@ module Sumomo
26
26
  "cloudformation/#{make_master_key_name(name: name)}.pem"
27
27
  end
28
28
 
29
+ def self.create_stack(name:, region:, sns_arn: nil, &block)
30
+ cf = Aws::CloudFormation::Client.new(region: region)
31
+ begin
32
+ cf.describe_stacks(stack_name: name)
33
+ raise "There is already a stack named '#{name}'"
34
+ rescue Aws::CloudFormation::Errors::ValidationError
35
+ update_stack(name: name, region: region, sns_arn: sns_arn, &block)
36
+ end
37
+ end
38
+
29
39
  def self.update_stack(name:, region:, sns_arn: nil, &block)
30
40
  cf = Aws::CloudFormation::Client.new(region: region)
31
41
  s3 = Aws::S3::Client.new(region: region)
@@ -249,6 +259,4 @@ module Sumomo
249
259
 
250
260
  map
251
261
  end
252
-
253
- singleton_class.send(:alias_method, :create_stack, :update_stack)
254
262
  end
data/lib/sumomo/ec2.rb CHANGED
@@ -254,6 +254,7 @@ module Sumomo
254
254
  has_public_ips: true,
255
255
  ingress: nil,
256
256
  egress: nil,
257
+ security_groups: [],
257
258
  machine_tag: nil,
258
259
  ec2_sns_arn: nil,
259
260
  ami_name: nil,
@@ -297,10 +298,12 @@ module Sumomo
297
298
 
298
299
  bucket_name = @bucket_name
299
300
 
300
- script += "\n#{task_script}\n"
301
+ script_arr = [script]
302
+
303
+ script_arr << task_script
301
304
 
302
305
  if ecs_cluster
303
- script += <<~ECS_START
306
+ script_arr << <<~ECS_START
304
307
 
305
308
  yum update
306
309
  yum groupinstall "Development Tools"
@@ -318,12 +321,12 @@ module Sumomo
318
321
  end
319
322
 
320
323
  if eip
321
- script += <<~EIP_ALLOCATE
324
+ script_arr << <<~EIP_ALLOCATE
322
325
  aws ec2 associate-address --region `cat /etc/aws_region` --instance-id `curl http://169.254.169.254/latest/meta-data/instance-id` --allocation-id `cat /etc/eip_allocation_id`
323
326
  EIP_ALLOCATE
324
327
  end
325
328
 
326
- script += "\nservice spot-watcher start" if spot_price && ec2_sns_arn
329
+ script_arr << "service spot-watcher start" if(spot_price && ec2_sns_arn)
327
330
 
328
331
  unless ingress.is_a? Array
329
332
  raise 'ec2: ingress option needs to be an array'
@@ -339,7 +342,7 @@ module Sumomo
339
342
 
340
343
  wait_handle = make 'AWS::CloudFormation::WaitConditionHandle'
341
344
 
342
- user_data = initscript(wait_handle, name, script)
345
+ user_data = initscript(wait_handle, name, call('Fn::Join', "\n", script_arr))
343
346
 
344
347
  role_policy_doc = {
345
348
  'Version' => '2012-10-17',
@@ -407,7 +410,7 @@ module Sumomo
407
410
  launch_config = make 'AWS::AutoScaling::LaunchConfiguration' do
408
411
  AssociatePublicIpAddress has_public_ips
409
412
  KeyName keypair
410
- SecurityGroups [web_sec_group]
413
+ SecurityGroups [web_sec_group] + security_groups
411
414
  ImageId ami_name
412
415
  UserData user_data
413
416
  InstanceType type
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Sumomo
4
- VERSION = '0.8.9'
4
+ VERSION = '0.8.10'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sumomo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.9
4
+ version: 0.8.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Siaw
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-07-14 00:00:00.000000000 Z
11
+ date: 2021-06-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -2548,7 +2548,7 @@ homepage: https://github.com/davidsiaw/sumomo
2548
2548
  licenses: []
2549
2549
  metadata:
2550
2550
  allowed_push_host: https://rubygems.org
2551
- post_install_message:
2551
+ post_install_message:
2552
2552
  rdoc_options: []
2553
2553
  require_paths:
2554
2554
  - lib
@@ -2563,8 +2563,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
2563
2563
  - !ruby/object:Gem::Version
2564
2564
  version: '0'
2565
2565
  requirements: []
2566
- rubygems_version: 3.0.3
2567
- signing_key:
2566
+ rubygems_version: 3.1.2
2567
+ signing_key:
2568
2568
  specification_version: 4
2569
2569
  summary: An advanced infrastructure description language for AWS
2570
2570
  test_files: []