simplygenius-atmos 0.9.3 → 0.9.4
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/CHANGELOG.md +6 -0
- data/README.md +1 -1
- data/lib/simplygenius/atmos/commands/container.rb +11 -11
- data/lib/simplygenius/atmos/providers/aws/container_manager.rb +17 -20
- data/lib/simplygenius/atmos/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 967259ac48e43b57455a18b59e4aa5ce3e8f3c45ce4497a069668d8539191c7d
|
4
|
+
data.tar.gz: 61cc1ca6c174588587b1982f5e6de1ba08c59690610503bffd1a05ee40e9d4bc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 150ea6f5147379574f36df0fc62d8102d9be7e3cab4254c3df9b78d0734b0916f91b715d59b976eeaf8a0643e889b0817b23f5ede32ebfaac11101587f9f7ff7
|
7
|
+
data.tar.gz: cb82a1291212a3b6d2e6cf7642dfc15653f4a5525438041655dee5d95a6e66890c50c40b9d2bcd5381af5939742019b0bf858c14c2f9d4eaf44a3faccaa7e751
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
0.9.4 (03/20/2019)
|
2
|
+
------------------
|
3
|
+
|
4
|
+
* allow deploying the same image to multiple services and make task vs service auto detected [9f841d7](https://github.com/simplygenius/atmos/commit/9f841d7)
|
5
|
+
* fix link [deba98f](https://github.com/simplygenius/atmos/commit/deba98f)
|
6
|
+
|
1
7
|
0.9.3 (02/12/2019)
|
2
8
|
------------------
|
3
9
|
|
data/README.md
CHANGED
@@ -62,7 +62,7 @@ The [terraform docs](https://www.terraform.io/docs/index.html) are excellent.
|
|
62
62
|
|
63
63
|
## Quickstart
|
64
64
|
|
65
|
-
See the [screencast](https://simplygenius.wistia.com/
|
65
|
+
See the [screencast](https://simplygenius.wistia.com/medias/zamoxtlqe0) for a detailed walkthrough (~1 hour) of the quickstart. Or try the [condensed screencast](https://simplygenius.wistia.com/medias/2syql5mnud) if you just want to take a quick look (~7m)
|
66
66
|
|
67
67
|
[Create an AWS account](https://portal.aws.amazon.com/billing/signup)
|
68
68
|
Setup root account access keys, make note of the numeric account id
|
@@ -24,17 +24,14 @@ module SimplyGenius
|
|
24
24
|
option ["-i", "--image"],
|
25
25
|
"IMAGE", "The local container image to deploy\nDefaults to service/task name"
|
26
26
|
|
27
|
-
option ["-t", "--task"],
|
28
|
-
:flag, "Deploy as a task, not a service\n"
|
29
|
-
|
30
27
|
option ["-v", "--revision"],
|
31
28
|
"REVISION", "Use as the remote image revision\n"
|
32
29
|
|
33
|
-
parameter "NAME",
|
34
|
-
"The name of the service (or task) to deploy"
|
30
|
+
parameter "NAME ...",
|
31
|
+
"The name of the service (or task) to deploy\nWhen multiple, the first is the primary, and\nthe rest get deployed with its image"
|
35
32
|
|
36
33
|
def default_image
|
37
|
-
|
34
|
+
name_list.first
|
38
35
|
end
|
39
36
|
|
40
37
|
def execute
|
@@ -42,11 +39,14 @@ module SimplyGenius
|
|
42
39
|
ClimateControl.modify(auth_env) do
|
43
40
|
mgr = Atmos.config.provider.container_manager
|
44
41
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
42
|
+
primary_name = name_list.first
|
43
|
+
|
44
|
+
result = mgr.push(primary_name, image, revision: revision)
|
45
|
+
|
46
|
+
name_list.each do |name|
|
47
|
+
resp = mgr.deploy(cluster, name, result[:remote_image])
|
48
|
+
result[:task_definitions] ||= []
|
49
|
+
result[:task_definitions] << resp[:task_definition]
|
50
50
|
end
|
51
51
|
|
52
52
|
logger.info "Container deployed:\n #{display result}"
|
@@ -40,23 +40,23 @@ module SimplyGenius
|
|
40
40
|
logger.info "Tagging local image '#{local_image}' with #{tags}"
|
41
41
|
tags.each {|t| run("docker", "tag", local_image, "#{ecs_image}:#{t}") }
|
42
42
|
|
43
|
-
logger.info "Pushing tagged image to ECR repo"
|
43
|
+
logger.info "Pushing tagged image to ECR repo #{ecs_image}"
|
44
44
|
tags.each {|t| run("docker", "push", "#{ecs_image}:#{t}") }
|
45
45
|
|
46
46
|
result[:remote_image] = "#{ecs_image}:#{revision}"
|
47
47
|
return result
|
48
48
|
end
|
49
49
|
|
50
|
-
def deploy_task(
|
50
|
+
def deploy_task(name, remote_image)
|
51
51
|
result = {}
|
52
52
|
|
53
53
|
ecs = ::Aws::ECS::Client.new
|
54
54
|
resp = nil
|
55
55
|
|
56
|
-
resp = ecs.list_task_definitions(family_prefix:
|
56
|
+
resp = ecs.list_task_definitions(family_prefix: name, sort: 'DESC')
|
57
57
|
latest_defn_arn = resp.task_definition_arns.first
|
58
58
|
|
59
|
-
logger.info "
|
59
|
+
logger.info "Current task definition for #{name}: #{latest_defn_arn}"
|
60
60
|
|
61
61
|
resp = ecs.describe_task_definition(task_definition: latest_defn_arn)
|
62
62
|
latest_defn = resp.task_definition
|
@@ -71,31 +71,28 @@ module SimplyGenius
|
|
71
71
|
resp = ecs.register_task_definition(**new_defn)
|
72
72
|
result[:task_definition] = resp.task_definition.task_definition_arn
|
73
73
|
|
74
|
-
logger.info "Updated task=#{
|
74
|
+
logger.info "Updated task=#{name} to #{result[:task_definition]} with image #{remote_image}"
|
75
75
|
|
76
76
|
return result
|
77
77
|
end
|
78
78
|
|
79
|
-
def
|
80
|
-
result =
|
79
|
+
def deploy(cluster, name, remote_image)
|
80
|
+
result = deploy_task(name, remote_image)
|
81
|
+
new_taskdef = result[:task_definition]
|
81
82
|
|
83
|
+
# Only trigger restart if name is a service
|
82
84
|
ecs = ::Aws::ECS::Client.new
|
83
|
-
resp =
|
84
|
-
|
85
|
-
# Get current task definition name from service
|
86
|
-
resp = ecs.describe_services(cluster: cluster, services: [service])
|
87
|
-
current_defn_arn = resp.services.first.task_definition
|
88
|
-
defn_name = current_defn_arn.split("/").last.split(":").first
|
89
|
-
|
90
|
-
logger.info "Current task definition (name=#{defn_name}): #{current_defn_arn}"
|
91
|
-
result = deploy_task(defn_name, remote_image)
|
92
|
-
new_taskdef = result[:task_definition]
|
85
|
+
resp = ecs.describe_services(cluster: cluster, services: [name])
|
93
86
|
|
94
|
-
|
87
|
+
if resp.services.size > 0
|
88
|
+
logger.info "Updating service with new task definition: #{new_taskdef}"
|
95
89
|
|
96
|
-
|
90
|
+
resp = ecs.update_service(cluster: cluster, service: name, task_definition: new_taskdef)
|
97
91
|
|
98
|
-
|
92
|
+
logger.info "Updated service=#{name} on cluster=#{cluster} to #{new_taskdef} with image #{remote_image}"
|
93
|
+
else
|
94
|
+
logger.info "#{name} is not a service"
|
95
|
+
end
|
99
96
|
|
100
97
|
return result
|
101
98
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simplygenius-atmos
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Conway
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-03-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|