pfab 0.5.0 → 0.6.0
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/VERSION +1 -1
- data/lib/pfab.rb +1 -0
- data/lib/pfab/cli.rb +41 -8
- data/lib/pfab/templates/base.rb +10 -7
- data/lib/pfab/templates/cron.rb +64 -0
- data/lib/pfab/templates/web.rb +1 -1
- data/lib/pfab/yamls.rb +2 -0
- data/pfab.gemspec +4 -3
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d731b1aced5361202684f5f3f782ff6846816818499c0d8ce4892cbcb728661d
|
4
|
+
data.tar.gz: 147ae1a483a6a980b138070ffe858ddea9b0bcca8bd86fc311c63d7693bc39a3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c520165411f2fe9023385c896677032c3decd4552209b9e5fab5af6c852b82bac357bb3fe07bd34bb9a02c05990de193b2101e45f2379b7c32dcd3d7dfa8953c
|
7
|
+
data.tar.gz: f963ee37ca9fcaac8f57b6be715b6d06fbe4ebed20ce06ba6fc768d338cf8f231c7f39f13ddbfc242345f169171aa94786e7eec1b42ac038019e96cf313c1e23
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.6.0
|
data/lib/pfab.rb
CHANGED
data/lib/pfab/cli.rb
CHANGED
@@ -18,8 +18,9 @@ module Pfab
|
|
18
18
|
else
|
19
19
|
raise "I need to be run in a directory with a application.yaml"
|
20
20
|
end
|
21
|
-
|
22
21
|
global_option("--verbose") { $verbose = true }
|
22
|
+
$dryrun = false
|
23
|
+
global_option("--dryrun") { $dryrun = true }
|
23
24
|
$env = :staging
|
24
25
|
global_option("-p") { $env = :production }
|
25
26
|
global_option("-a", "--application_name APP_NAME", "run without prompting for app") do |app_name|
|
@@ -56,6 +57,8 @@ module Pfab
|
|
56
57
|
c.syntax = "pfab shipit"
|
57
58
|
c.summary = "build, generate, apply"
|
58
59
|
c.action do
|
60
|
+
app_name = get_app_name(all: true)
|
61
|
+
puts "Shipping #{app_name}"
|
59
62
|
success = cmd_build
|
60
63
|
if success
|
61
64
|
cmd_generate_yaml
|
@@ -82,6 +85,24 @@ module Pfab
|
|
82
85
|
end
|
83
86
|
end
|
84
87
|
|
88
|
+
command :exec do |c|
|
89
|
+
c.syntax = "pfab exec"
|
90
|
+
c.summary = "kubectl exec into a pod"
|
91
|
+
c.description = "CLI to the Cloud"
|
92
|
+
c.example "exec into the first pod in staging",
|
93
|
+
"pfab exec"
|
94
|
+
c.example "exec into the first pod in production",
|
95
|
+
"ezp -p exec"
|
96
|
+
c.action do
|
97
|
+
set_kube_context
|
98
|
+
app_name = get_app_name
|
99
|
+
|
100
|
+
first_pod = get_first_pod app_name
|
101
|
+
|
102
|
+
puts_and_system "kubectl exec -it #{first_pod} -- /bin/bash"
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
85
106
|
command :status do |c|
|
86
107
|
c.syntax = "pfab status"
|
87
108
|
c.summary = "status of an app"
|
@@ -119,9 +140,10 @@ module Pfab
|
|
119
140
|
|
120
141
|
def cmd_apply
|
121
142
|
set_kube_context
|
122
|
-
|
123
|
-
|
124
|
-
|
143
|
+
get_apps.each do |app_name|
|
144
|
+
puts_and_system("kubectl apply -f .application-k8s-#{$env}-#{app_name}.yaml")
|
145
|
+
puts_and_system("git tag release-#{$env}-#{app_name}-#{Time.now.strftime("%Y-%m-%d-%H-%M-%S")} HEAD")
|
146
|
+
end
|
125
147
|
end
|
126
148
|
|
127
149
|
def cmd_build(force: false)
|
@@ -151,7 +173,7 @@ module Pfab
|
|
151
173
|
|
152
174
|
say "No image #{full_image_name} present, building"
|
153
175
|
|
154
|
-
prebuild = @application_yaml["prebuild"]
|
176
|
+
prebuild = @application_yaml["prebuild"] || ""
|
155
177
|
if prebuild.empty?
|
156
178
|
say "No prebuild task"
|
157
179
|
else
|
@@ -208,7 +230,11 @@ module Pfab
|
|
208
230
|
|
209
231
|
def puts_and_system cmd
|
210
232
|
puts cmd
|
211
|
-
|
233
|
+
if $dryrun
|
234
|
+
puts "dry run, didn't run that"
|
235
|
+
else
|
236
|
+
system cmd
|
237
|
+
end
|
212
238
|
end
|
213
239
|
|
214
240
|
def apps
|
@@ -245,9 +271,16 @@ module Pfab
|
|
245
271
|
JSON.parse(pods_str)
|
246
272
|
end
|
247
273
|
|
248
|
-
def get_app_name
|
274
|
+
def get_app_name(all: false)
|
249
275
|
return $app_name unless $app_name.nil?
|
250
|
-
|
276
|
+
apps = @apps.keys
|
277
|
+
apps << "all" if all
|
278
|
+
$app_name = choose("which app?", *apps)
|
279
|
+
end
|
280
|
+
|
281
|
+
def get_apps
|
282
|
+
name = get_app_name(all: true)
|
283
|
+
(name == "all") ? @apps.keys : [name]
|
251
284
|
end
|
252
285
|
end
|
253
286
|
end
|
data/lib/pfab/templates/base.rb
CHANGED
@@ -47,13 +47,8 @@ module Pfab
|
|
47
47
|
|
48
48
|
env_vars = [
|
49
49
|
{ name: "DEPLOYED_NAME", value: @data['deployed_name'] },
|
50
|
-
{ name: "DOGSTATSD_HOST_IP",
|
51
|
-
valueFrom: {
|
52
|
-
fieldRef: { fieldPath: "status.hostIP" }
|
53
|
-
}
|
54
|
-
},
|
55
50
|
]
|
56
|
-
|
51
|
+
|
57
52
|
load_env_vars(env_vars, @data["application_yaml"][:environment])
|
58
53
|
load_env_vars(env_vars, @data["application_yaml"][@data["env"]][:environment])
|
59
54
|
|
@@ -65,7 +60,15 @@ module Pfab
|
|
65
60
|
|
66
61
|
def load_env_vars(env_vars, hash)
|
67
62
|
(hash || {}).each do |env_var_name, v|
|
68
|
-
|
63
|
+
if v.start_with? "field/"
|
64
|
+
(_, field_name) = v.split("/")
|
65
|
+
env_vars << { name: env_var_name, valueFrom: {
|
66
|
+
fieldRef: { fieldPath: field_name }
|
67
|
+
} }
|
68
|
+
else
|
69
|
+
env_vars << { name: env_var_name, value: v }
|
70
|
+
end
|
71
|
+
|
69
72
|
end
|
70
73
|
end
|
71
74
|
|
@@ -0,0 +1,64 @@
|
|
1
|
+
module Pfab
|
2
|
+
module Templates
|
3
|
+
class Cron < Base
|
4
|
+
def write_to(f)
|
5
|
+
f << YAML.dump(job.deep_stringify_keys)
|
6
|
+
end
|
7
|
+
|
8
|
+
def job
|
9
|
+
{
|
10
|
+
apiVersion: "batch/v1beta1",
|
11
|
+
kind: "CronJob",
|
12
|
+
metadata: {
|
13
|
+
name: "#{@data['deployed_name']}-#{@data['sha']}",
|
14
|
+
namespace: @data['env'],
|
15
|
+
labels: {
|
16
|
+
application: @data['application'],
|
17
|
+
"deployed-name" => @data['deployed_name'],
|
18
|
+
"application-type" => "job",
|
19
|
+
}
|
20
|
+
},
|
21
|
+
spec: {
|
22
|
+
schedule: get("schedule"),
|
23
|
+
jobTemplate: {
|
24
|
+
metadata: {
|
25
|
+
name: "#{@data['deployed_name']}-#{@data['sha']}",
|
26
|
+
namespace: @data['env'],
|
27
|
+
labels: {
|
28
|
+
application: @data['application'],
|
29
|
+
"deployed-name" => @data['deployed_name'],
|
30
|
+
"application-type" => "cron",
|
31
|
+
},
|
32
|
+
},
|
33
|
+
spec: {
|
34
|
+
template: {
|
35
|
+
metadata: {
|
36
|
+
labels: {
|
37
|
+
application: @data['application'],
|
38
|
+
"deployed-name" => @data['deployed_name'],
|
39
|
+
"application-type" => "cron",
|
40
|
+
},
|
41
|
+
},
|
42
|
+
spec: {
|
43
|
+
|
44
|
+
containers: [
|
45
|
+
{
|
46
|
+
image: image_name,
|
47
|
+
name: @data['deployed_name'],
|
48
|
+
command: app_vars["command"].split(" "),
|
49
|
+
env: env_vars,
|
50
|
+
resources: resources,
|
51
|
+
},
|
52
|
+
],
|
53
|
+
restartPolicy: "Never",
|
54
|
+
},
|
55
|
+
},
|
56
|
+
backoffLimit: 2,
|
57
|
+
},
|
58
|
+
},
|
59
|
+
},
|
60
|
+
}
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
data/lib/pfab/templates/web.rb
CHANGED
data/lib/pfab/yamls.rb
CHANGED
data/pfab.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: pfab 0.
|
5
|
+
# stub: pfab 0.6.0 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "pfab".freeze
|
9
|
-
s.version = "0.
|
9
|
+
s.version = "0.6.0"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib".freeze]
|
13
13
|
s.authors = ["Jeff Dwyer".freeze]
|
14
|
-
s.date = "2019-01-
|
14
|
+
s.date = "2019-01-08"
|
15
15
|
s.description = "k8s helper".freeze
|
16
16
|
s.email = "jdwyer@prefab.cloud".freeze
|
17
17
|
s.executables = ["pfab".freeze]
|
@@ -32,6 +32,7 @@ Gem::Specification.new do |s|
|
|
32
32
|
"lib/pfab.rb",
|
33
33
|
"lib/pfab/cli.rb",
|
34
34
|
"lib/pfab/templates/base.rb",
|
35
|
+
"lib/pfab/templates/cron.rb",
|
35
36
|
"lib/pfab/templates/daemon.rb",
|
36
37
|
"lib/pfab/templates/job.rb",
|
37
38
|
"lib/pfab/templates/web.rb",
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pfab
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeff Dwyer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-01-
|
11
|
+
date: 2019-01-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: commander
|
@@ -143,6 +143,7 @@ files:
|
|
143
143
|
- lib/pfab.rb
|
144
144
|
- lib/pfab/cli.rb
|
145
145
|
- lib/pfab/templates/base.rb
|
146
|
+
- lib/pfab/templates/cron.rb
|
146
147
|
- lib/pfab/templates/daemon.rb
|
147
148
|
- lib/pfab/templates/job.rb
|
148
149
|
- lib/pfab/templates/web.rb
|