hashicorptools 0.0.7 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +5 -1
- data/Gemfile +12 -14
- data/README.md +1 -2
- data/Rakefile +4 -4
- data/VERSION +1 -1
- data/hashicorptools.gemspec +58 -58
- data/lib/hashicorptools.rb +0 -1
- data/lib/hashicorptools/ami_configs/standard-ami.json +60 -0
- data/lib/hashicorptools/auto_scaling_group.rb +19 -9
- data/lib/hashicorptools/code_deploy.rb +13 -3
- data/lib/hashicorptools/ec2_utilities.rb +6 -12
- data/lib/hashicorptools/packer.rb +60 -9
- data/lib/hashicorptools/update_launch_configuration.rb +4 -1
- data/lib/hashicorptools/variables.rb +8 -6
- data/spec/hashicorptools_spec.rb +1 -0
- metadata +59 -36
- data/Gemfile.lock +0 -124
- data/data/standard-ami.json +0 -48
- data/lib/hashicorptools/terraform.rb +0 -344
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 75178f2878dffffbcca566e4ed6fa81c9cc612f55b601adf82a5a31da8492e74
|
4
|
+
data.tar.gz: 47fef27c27f49f242188b474872ef4b57128e8998e9a277de2c19f6752a74759
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 75d5ca009f079b41864ec1e5d66b1d6a2e88dcbab943ee2aff7f7cb869a41e667ef32483c0de2c865fe885f5c9d726c6c32122d79a3f7077fa7eec418de111de
|
7
|
+
data.tar.gz: d346e24bc5ae25eb45e9406894701d96095d75eec0b40838cd85e647943b6c21a019913a21bb4ba51f9426d9bfa56fbee0cd0b80e90bf0b2bf73b75d62f24996
|
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
hashicorptools
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby-2.6.6
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
@@ -3,21 +3,19 @@ source "http://rubygems.org"
|
|
3
3
|
# try to slowly migrate to v2 of the aws api
|
4
4
|
gem 'aws-sdk', '~> 2'
|
5
5
|
|
6
|
-
gem 'dynect_rest'
|
6
|
+
gem 'dynect_rest', '= 0.4.6'
|
7
7
|
|
8
|
-
gem 'aws-sdk-v1'
|
9
|
-
gem 'dotenv'
|
10
|
-
gem 'thor'
|
11
|
-
gem 'activesupport'
|
12
|
-
gem 'byebug'
|
13
|
-
gem 'git'
|
8
|
+
gem 'aws-sdk-v1', '~> 1.67'
|
9
|
+
gem 'dotenv', '~> 2.2', '>= 2.2.1'
|
10
|
+
gem 'thor', '= 0.20.0'
|
11
|
+
gem 'activesupport', '~> 5.1', '>= 5.1.4'
|
12
|
+
gem 'byebug', '~> 10.0', '>= 10.0.2'
|
13
|
+
gem 'git', '~> 1.3'
|
14
14
|
|
15
|
-
# Add dependencies to develop your gem here.
|
16
|
-
# Include everything needed to run rake, tests, features, etc.
|
17
15
|
group :development do
|
18
|
-
gem
|
19
|
-
gem
|
20
|
-
gem
|
21
|
-
gem
|
22
|
-
gem
|
16
|
+
gem 'rspec', '~> 3.7'
|
17
|
+
gem 'rdoc', '~> 3.12'
|
18
|
+
gem 'bundler', '~> 2.0'
|
19
|
+
gem 'juwelier', '~> 2.4', '>= 2.4.7'
|
20
|
+
gem 'simplecov', '>= 0'
|
23
21
|
end
|
data/README.md
CHANGED
@@ -11,8 +11,7 @@ Wraps the packer product from hashicorp with standard configuration.
|
|
11
11
|
|
12
12
|
## terraform wrapper
|
13
13
|
|
14
|
-
Wraps the terraform product from hashicorp with
|
15
|
-
and staging environments.
|
14
|
+
Wraps the terraform product from hashicorp with segmented production and staging environments.
|
16
15
|
|
17
16
|
|
18
17
|
Copyright (c) 2015 ChangeSprout Inc. See LICENSE for
|
data/Rakefile
CHANGED
@@ -11,8 +11,8 @@ rescue Bundler::BundlerError => e
|
|
11
11
|
end
|
12
12
|
require 'rake'
|
13
13
|
|
14
|
-
require '
|
15
|
-
|
14
|
+
require 'juwelier'
|
15
|
+
Juwelier::Tasks.new do |gem|
|
16
16
|
# gem is a Gem::Specification... see http://guides.rubygems.org/specification-reference/ for more options
|
17
17
|
gem.name = "hashicorptools"
|
18
18
|
gem.homepage = "http://github.com/woodhull/hashicorptools"
|
@@ -21,10 +21,10 @@ Jeweler::Tasks.new do |gem|
|
|
21
21
|
gem.description = %Q{Wrappers for terraform and packer}
|
22
22
|
gem.email = "systems@controlshiftlabs.com"
|
23
23
|
gem.authors = ["Nathan Woodhull"]
|
24
|
-
gem.executables = ['ec2_host']
|
24
|
+
gem.executables = ['ec2_host']
|
25
25
|
# dependencies defined in Gemfile
|
26
26
|
end
|
27
|
-
|
27
|
+
Juwelier::RubygemsDotOrgTasks.new
|
28
28
|
|
29
29
|
require 'rspec/core'
|
30
30
|
require 'rspec/core/rake_task'
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0
|
1
|
+
0.3.0
|
data/hashicorptools.gemspec
CHANGED
@@ -1,98 +1,98 @@
|
|
1
|
-
# Generated by
|
1
|
+
# Generated by juwelier
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit
|
3
|
+
# Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: hashicorptools 0.0
|
5
|
+
# stub: hashicorptools 0.3.0 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
|
-
s.name = "hashicorptools"
|
9
|
-
s.version = "0.0
|
8
|
+
s.name = "hashicorptools".freeze
|
9
|
+
s.version = "0.3.0"
|
10
10
|
|
11
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
|
-
s.require_paths = ["lib"]
|
13
|
-
s.authors = ["Nathan Woodhull"]
|
14
|
-
s.date = "
|
15
|
-
s.description = "Wrappers for terraform and packer"
|
16
|
-
s.email = "systems@controlshiftlabs.com"
|
17
|
-
s.executables = ["ec2_host"]
|
11
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
12
|
+
s.require_paths = ["lib".freeze]
|
13
|
+
s.authors = ["Nathan Woodhull".freeze]
|
14
|
+
s.date = "2020-06-18"
|
15
|
+
s.description = "Wrappers for terraform and packer".freeze
|
16
|
+
s.email = "systems@controlshiftlabs.com".freeze
|
17
|
+
s.executables = ["ec2_host".freeze]
|
18
18
|
s.extra_rdoc_files = [
|
19
19
|
"LICENSE",
|
20
20
|
"README.md"
|
21
21
|
]
|
22
22
|
s.files = [
|
23
|
+
".ruby-gemset",
|
24
|
+
".ruby-version",
|
23
25
|
".travis.yml",
|
24
26
|
"Gemfile",
|
25
|
-
"Gemfile.lock",
|
26
27
|
"LICENSE",
|
27
28
|
"README.md",
|
28
29
|
"Rakefile",
|
29
30
|
"VERSION",
|
30
31
|
"bin/ec2_host",
|
31
|
-
"data/standard-ami.json",
|
32
32
|
"hashicorptools.gemspec",
|
33
33
|
"lib/hashicorptools.rb",
|
34
|
+
"lib/hashicorptools/ami_configs/standard-ami.json",
|
34
35
|
"lib/hashicorptools/auto_scaling_group.rb",
|
35
36
|
"lib/hashicorptools/code_deploy.rb",
|
36
37
|
"lib/hashicorptools/ec2_utilities.rb",
|
37
38
|
"lib/hashicorptools/host.rb",
|
38
39
|
"lib/hashicorptools/packer.rb",
|
39
|
-
"lib/hashicorptools/terraform.rb",
|
40
40
|
"lib/hashicorptools/update_launch_configuration.rb",
|
41
41
|
"lib/hashicorptools/variables.rb",
|
42
42
|
"spec/hashicorptools_spec.rb",
|
43
43
|
"spec/spec_helper.rb"
|
44
44
|
]
|
45
|
-
s.homepage = "http://github.com/woodhull/hashicorptools"
|
46
|
-
s.licenses = ["MIT"]
|
47
|
-
s.rubygems_version = "
|
48
|
-
s.summary = "Wrappers for terraform and packer"
|
45
|
+
s.homepage = "http://github.com/woodhull/hashicorptools".freeze
|
46
|
+
s.licenses = ["MIT".freeze]
|
47
|
+
s.rubygems_version = "3.0.3".freeze
|
48
|
+
s.summary = "Wrappers for terraform and packer".freeze
|
49
49
|
|
50
50
|
if s.respond_to? :specification_version then
|
51
51
|
s.specification_version = 4
|
52
52
|
|
53
53
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
54
|
-
s.add_runtime_dependency(%q<aws-sdk
|
55
|
-
s.add_runtime_dependency(%q<dynect_rest
|
56
|
-
s.add_runtime_dependency(%q<aws-sdk-v1
|
57
|
-
s.add_runtime_dependency(%q<dotenv
|
58
|
-
s.add_runtime_dependency(%q<thor
|
59
|
-
s.add_runtime_dependency(%q<activesupport
|
60
|
-
s.add_runtime_dependency(%q<byebug
|
61
|
-
s.add_runtime_dependency(%q<git
|
62
|
-
s.add_development_dependency(%q<rspec
|
63
|
-
s.add_development_dependency(%q<rdoc
|
64
|
-
s.add_development_dependency(%q<bundler
|
65
|
-
s.add_development_dependency(%q<
|
66
|
-
s.add_development_dependency(%q<simplecov
|
54
|
+
s.add_runtime_dependency(%q<aws-sdk>.freeze, ["~> 2"])
|
55
|
+
s.add_runtime_dependency(%q<dynect_rest>.freeze, ["= 0.4.6"])
|
56
|
+
s.add_runtime_dependency(%q<aws-sdk-v1>.freeze, ["~> 1.67"])
|
57
|
+
s.add_runtime_dependency(%q<dotenv>.freeze, ["~> 2.2", ">= 2.2.1"])
|
58
|
+
s.add_runtime_dependency(%q<thor>.freeze, ["= 0.20.0"])
|
59
|
+
s.add_runtime_dependency(%q<activesupport>.freeze, ["~> 5.1", ">= 5.1.4"])
|
60
|
+
s.add_runtime_dependency(%q<byebug>.freeze, ["~> 10.0", ">= 10.0.2"])
|
61
|
+
s.add_runtime_dependency(%q<git>.freeze, ["~> 1.3"])
|
62
|
+
s.add_development_dependency(%q<rspec>.freeze, ["~> 3.7"])
|
63
|
+
s.add_development_dependency(%q<rdoc>.freeze, ["~> 3.12"])
|
64
|
+
s.add_development_dependency(%q<bundler>.freeze, ["~> 2.0"])
|
65
|
+
s.add_development_dependency(%q<juwelier>.freeze, ["~> 2.4", ">= 2.4.7"])
|
66
|
+
s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
|
67
67
|
else
|
68
|
-
s.add_dependency(%q<aws-sdk
|
69
|
-
s.add_dependency(%q<dynect_rest
|
70
|
-
s.add_dependency(%q<aws-sdk-v1
|
71
|
-
s.add_dependency(%q<dotenv
|
72
|
-
s.add_dependency(%q<thor
|
73
|
-
s.add_dependency(%q<activesupport
|
74
|
-
s.add_dependency(%q<byebug
|
75
|
-
s.add_dependency(%q<git
|
76
|
-
s.add_dependency(%q<rspec
|
77
|
-
s.add_dependency(%q<rdoc
|
78
|
-
s.add_dependency(%q<bundler
|
79
|
-
s.add_dependency(%q<
|
80
|
-
s.add_dependency(%q<simplecov
|
68
|
+
s.add_dependency(%q<aws-sdk>.freeze, ["~> 2"])
|
69
|
+
s.add_dependency(%q<dynect_rest>.freeze, ["= 0.4.6"])
|
70
|
+
s.add_dependency(%q<aws-sdk-v1>.freeze, ["~> 1.67"])
|
71
|
+
s.add_dependency(%q<dotenv>.freeze, ["~> 2.2", ">= 2.2.1"])
|
72
|
+
s.add_dependency(%q<thor>.freeze, ["= 0.20.0"])
|
73
|
+
s.add_dependency(%q<activesupport>.freeze, ["~> 5.1", ">= 5.1.4"])
|
74
|
+
s.add_dependency(%q<byebug>.freeze, ["~> 10.0", ">= 10.0.2"])
|
75
|
+
s.add_dependency(%q<git>.freeze, ["~> 1.3"])
|
76
|
+
s.add_dependency(%q<rspec>.freeze, ["~> 3.7"])
|
77
|
+
s.add_dependency(%q<rdoc>.freeze, ["~> 3.12"])
|
78
|
+
s.add_dependency(%q<bundler>.freeze, ["~> 2.0"])
|
79
|
+
s.add_dependency(%q<juwelier>.freeze, ["~> 2.4", ">= 2.4.7"])
|
80
|
+
s.add_dependency(%q<simplecov>.freeze, [">= 0"])
|
81
81
|
end
|
82
82
|
else
|
83
|
-
s.add_dependency(%q<aws-sdk
|
84
|
-
s.add_dependency(%q<dynect_rest
|
85
|
-
s.add_dependency(%q<aws-sdk-v1
|
86
|
-
s.add_dependency(%q<dotenv
|
87
|
-
s.add_dependency(%q<thor
|
88
|
-
s.add_dependency(%q<activesupport
|
89
|
-
s.add_dependency(%q<byebug
|
90
|
-
s.add_dependency(%q<git
|
91
|
-
s.add_dependency(%q<rspec
|
92
|
-
s.add_dependency(%q<rdoc
|
93
|
-
s.add_dependency(%q<bundler
|
94
|
-
s.add_dependency(%q<
|
95
|
-
s.add_dependency(%q<simplecov
|
83
|
+
s.add_dependency(%q<aws-sdk>.freeze, ["~> 2"])
|
84
|
+
s.add_dependency(%q<dynect_rest>.freeze, ["= 0.4.6"])
|
85
|
+
s.add_dependency(%q<aws-sdk-v1>.freeze, ["~> 1.67"])
|
86
|
+
s.add_dependency(%q<dotenv>.freeze, ["~> 2.2", ">= 2.2.1"])
|
87
|
+
s.add_dependency(%q<thor>.freeze, ["= 0.20.0"])
|
88
|
+
s.add_dependency(%q<activesupport>.freeze, ["~> 5.1", ">= 5.1.4"])
|
89
|
+
s.add_dependency(%q<byebug>.freeze, ["~> 10.0", ">= 10.0.2"])
|
90
|
+
s.add_dependency(%q<git>.freeze, ["~> 1.3"])
|
91
|
+
s.add_dependency(%q<rspec>.freeze, ["~> 3.7"])
|
92
|
+
s.add_dependency(%q<rdoc>.freeze, ["~> 3.12"])
|
93
|
+
s.add_dependency(%q<bundler>.freeze, ["~> 2.0"])
|
94
|
+
s.add_dependency(%q<juwelier>.freeze, ["~> 2.4", ">= 2.4.7"])
|
95
|
+
s.add_dependency(%q<simplecov>.freeze, [">= 0"])
|
96
96
|
end
|
97
97
|
end
|
98
98
|
|
data/lib/hashicorptools.rb
CHANGED
@@ -13,7 +13,6 @@ require_relative 'hashicorptools/variables'
|
|
13
13
|
require_relative 'hashicorptools/ec2_utilities'
|
14
14
|
require_relative 'hashicorptools/auto_scaling_group'
|
15
15
|
require_relative 'hashicorptools/packer'
|
16
|
-
require_relative 'hashicorptools/terraform'
|
17
16
|
require_relative 'hashicorptools/host'
|
18
17
|
require_relative 'hashicorptools/update_launch_configuration'
|
19
18
|
require_relative 'hashicorptools/code_deploy'
|
@@ -0,0 +1,60 @@
|
|
1
|
+
{
|
2
|
+
"builders": [
|
3
|
+
{
|
4
|
+
"access_key": "{{user `aws_access_key`}}",
|
5
|
+
"ami_name": "{{user `ami_tag`}} {{timestamp}}",
|
6
|
+
"associate_public_ip_address": true,
|
7
|
+
"ena_support": true,
|
8
|
+
"instance_type": "c5.large",
|
9
|
+
"launch_block_device_mappings": [
|
10
|
+
{
|
11
|
+
"delete_on_termination": true,
|
12
|
+
"device_name": "/dev/sda1",
|
13
|
+
"volume_size": 8,
|
14
|
+
"volume_type": "gp2"
|
15
|
+
}
|
16
|
+
],
|
17
|
+
"region": "us-east-1",
|
18
|
+
"ami_regions": ["us-east-1", "eu-central-1"],
|
19
|
+
"run_tags": {
|
20
|
+
"kind": "packer",
|
21
|
+
"role": "AMI builder"
|
22
|
+
},
|
23
|
+
"secret_key": "{{user `aws_secret_key`}}",
|
24
|
+
"source_ami": "{{user `source_ami`}}",
|
25
|
+
"ssh_interface": "public_ip",
|
26
|
+
"ssh_username": "ubuntu",
|
27
|
+
"subnet_id": "{{user `subnet_id`}}",
|
28
|
+
"tags": {
|
29
|
+
"Name": "{{user `ami_tag`}}",
|
30
|
+
"created_at": "{{isotime}}",
|
31
|
+
"parent_ami": "{{user `source_ami`}}"
|
32
|
+
},
|
33
|
+
"type": "amazon-ebs",
|
34
|
+
"vpc_id": "{{user `vpc_id`}}"
|
35
|
+
}
|
36
|
+
],
|
37
|
+
"post-processors": [],
|
38
|
+
"provisioners": [
|
39
|
+
{
|
40
|
+
"cookbook_paths": [
|
41
|
+
"cookbooks",
|
42
|
+
"site-cookbooks"
|
43
|
+
],
|
44
|
+
"run_list": [
|
45
|
+
"{{user `cookbook_name`}}"
|
46
|
+
],
|
47
|
+
"skip_install": true,
|
48
|
+
"type": "chef-solo"
|
49
|
+
}
|
50
|
+
],
|
51
|
+
"variables": {
|
52
|
+
"ami_tag": "",
|
53
|
+
"aws_access_key": "",
|
54
|
+
"aws_secret_key": "",
|
55
|
+
"cookbook_name": "",
|
56
|
+
"source_ami": "",
|
57
|
+
"subnet_id": "",
|
58
|
+
"vpc_id": ""
|
59
|
+
}
|
60
|
+
}
|
@@ -2,7 +2,7 @@ require "timeout"
|
|
2
2
|
|
3
3
|
module Hashicorptools
|
4
4
|
class AutoScalingGroup
|
5
|
-
attr_accessor :name
|
5
|
+
attr_accessor :name, :region
|
6
6
|
|
7
7
|
def initialize(attrs = {})
|
8
8
|
attrs.each do |key,value|
|
@@ -24,12 +24,13 @@ module Hashicorptools
|
|
24
24
|
end
|
25
25
|
|
26
26
|
puts "waiting for scaling events to finish"
|
27
|
-
|
28
|
-
|
27
|
+
wait_for_activities_to_complete(group)
|
28
|
+
puts "all scaling activities finished."
|
29
|
+
|
30
|
+
if desired_instances > 0
|
31
|
+
wait_until_instances_ready
|
32
|
+
puts "all #{desired_instances} instances ready."
|
29
33
|
end
|
30
|
-
puts "all #{desired_instances} scaling activities successful."
|
31
|
-
wait_until_instances_ready
|
32
|
-
puts "all #{desired_instances} instances ready."
|
33
34
|
end
|
34
35
|
|
35
36
|
def wait_until_instances_ready
|
@@ -89,6 +90,15 @@ module Hashicorptools
|
|
89
90
|
end
|
90
91
|
end
|
91
92
|
|
93
|
+
def verify_all_instances_using_correct_ami
|
94
|
+
launch_configuration = Aws::AutoScaling::LaunchConfiguration.new(name: group.launch_configuration_name, client: autoscaling)
|
95
|
+
image_id = launch_configuration.image_id
|
96
|
+
group.instances.each do |i|
|
97
|
+
instance = Aws::EC2::Instance.new(i.instance_id, client: ec2)
|
98
|
+
raise "#{i.instance_id} has the incorrect AMI, not #{image_id} from current LaunchConfig" if instance.image_id != image_id
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
92
102
|
private
|
93
103
|
|
94
104
|
def wait_for_activities_to_complete(group)
|
@@ -105,15 +115,15 @@ module Hashicorptools
|
|
105
115
|
end
|
106
116
|
|
107
117
|
def autoscaling
|
108
|
-
@autoscaling ||= Aws::AutoScaling::Client.new(region:
|
118
|
+
@autoscaling ||= Aws::AutoScaling::Client.new(region: region)
|
109
119
|
end
|
110
120
|
|
111
121
|
def ec2
|
112
|
-
@ec2 ||= Aws::EC2::Client.new(region:
|
122
|
+
@ec2 ||= Aws::EC2::Client.new(region: region)
|
113
123
|
end
|
114
124
|
|
115
125
|
def elb
|
116
|
-
@elb ||= Aws::ElasticLoadBalancing::Client.new(region:
|
126
|
+
@elb ||= Aws::ElasticLoadBalancing::Client.new(region: region)
|
117
127
|
end
|
118
128
|
|
119
129
|
def groups
|
@@ -11,11 +11,21 @@ module Hashicorptools
|
|
11
11
|
|
12
12
|
desc 'deploy', 'deploy latest code to environment'
|
13
13
|
option :environment, :required => true
|
14
|
-
option :branch
|
14
|
+
option :branch
|
15
|
+
option :aws_region, default: 'us-east-1'
|
15
16
|
option :commit
|
16
17
|
def deploy
|
17
18
|
g = Git.open('..')
|
18
19
|
|
20
|
+
# TODO restore defaulting branch to the default branch (and remove below check)
|
21
|
+
# once all the repos have the same default branch name of `main`
|
22
|
+
# Currently, `agra` is using `master` while other apps are using `main`.
|
23
|
+
# and we are unable to detect what the default branch is
|
24
|
+
# via the git client here.
|
25
|
+
if options[:commit].nil? && options[:branch].nil?
|
26
|
+
raise 'You must supply either commit or branch to deploy'
|
27
|
+
end
|
28
|
+
|
19
29
|
commit = if options[:commit].present?
|
20
30
|
g.gcommit(options[:commit])
|
21
31
|
else
|
@@ -34,7 +44,7 @@ module Hashicorptools
|
|
34
44
|
def create_deployment(commit_id, commit_message = nil)
|
35
45
|
Dotenv.load
|
36
46
|
|
37
|
-
client = Aws::CodeDeploy::Client.new
|
47
|
+
client = Aws::CodeDeploy::Client.new(region: options[:aws_region])
|
38
48
|
response = client.create_deployment({
|
39
49
|
application_name: application_name,
|
40
50
|
deployment_group_name: "#{application_name}-#{options[:environment]}",
|
@@ -48,7 +58,7 @@ module Hashicorptools
|
|
48
58
|
description: (commit_message || "commit #{commit_id}").slice(0,99)
|
49
59
|
})
|
50
60
|
puts "created deployment #{response.deployment_id}"
|
51
|
-
puts "https://console.aws.amazon.com/codedeploy/home?region=#{
|
61
|
+
puts "https://console.aws.amazon.com/codedeploy/home?region=#{options[:aws_region]}#/deployments/#{response.deployment_id}"
|
52
62
|
end
|
53
63
|
|
54
64
|
def application_name
|
@@ -5,17 +5,19 @@ module Hashicorptools
|
|
5
5
|
end
|
6
6
|
|
7
7
|
def amis(tag = tag_name)
|
8
|
-
sort_by_created_at( ec2.images.with_owner('self').
|
8
|
+
sort_by_created_at( ec2.images.with_owner('self').with_tag('Name', tag).to_a )
|
9
9
|
end
|
10
10
|
|
11
11
|
def ec2
|
12
|
+
return @_ec2 unless @_ec2.nil?
|
13
|
+
|
12
14
|
reg = if self.methods.include?(:region)
|
13
15
|
self.region
|
14
16
|
else
|
15
17
|
'us-east-1'
|
16
18
|
end
|
17
19
|
|
18
|
-
AWS::EC2.new(region: reg)
|
20
|
+
@_ec2 = AWS::EC2.new(region: reg)
|
19
21
|
end
|
20
22
|
|
21
23
|
def vpc_with_name(name)
|
@@ -28,16 +30,8 @@ module Hashicorptools
|
|
28
30
|
igs.first
|
29
31
|
end
|
30
32
|
|
31
|
-
def
|
32
|
-
|
33
|
-
image.tags.to_h[tag].to_i
|
34
|
-
else
|
35
|
-
0
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
def sort_by_created_at(collection, tag = tag_name)
|
40
|
-
collection.sort{|a, b| self.image_created_at(b, tag) <=> self.image_created_at(a, tag) }
|
33
|
+
def sort_by_created_at(collection)
|
34
|
+
collection.sort{|a, b| b.creation_date <=> a.creation_date }
|
41
35
|
end
|
42
36
|
end
|
43
37
|
end
|