seira 0.3.1 → 0.3.2
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/lib/seira.rb +4 -3
- data/lib/seira/setup.rb +44 -10
- data/lib/seira/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: c324b547f1bcefcdf4273e878da27dacf362c79a
|
4
|
+
data.tar.gz: 740dbe2c8657affa050e6642d927fb82fa983bb5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: becbc4ed3755d1ec7c151ee9e1cf3da0df292e5c6cf9be9c2898342cf7c33f9b668b429a3cd727c1b513ae3048e3c78955dae24f5202e4a73cc0dfd473ca821c
|
7
|
+
data.tar.gz: 0c8e1d381d3b043b56b78c13483280d379c66617492f94f779946260a62b9d687e1a6fcb94cae8f316534ceedb707caf46f80d515cd282a72b185b3719f9ec31
|
data/lib/seira.rb
CHANGED
@@ -60,6 +60,7 @@ module Seira
|
|
60
60
|
elsif ARGV[0] == 'setup'
|
61
61
|
@category = reversed_args.pop
|
62
62
|
cluster = reversed_args.pop
|
63
|
+
@args = reversed_args.reverse
|
63
64
|
else
|
64
65
|
cluster = reversed_args.pop
|
65
66
|
@app = reversed_args.pop
|
@@ -69,13 +70,13 @@ module Seira
|
|
69
70
|
end
|
70
71
|
|
71
72
|
@cluster =
|
72
|
-
if category == 'setup'
|
73
|
+
if category == 'setup'
|
73
74
|
cluster
|
74
75
|
else
|
75
76
|
@settings.full_cluster_name_for_shorthand(cluster)
|
76
77
|
end
|
77
78
|
|
78
|
-
unless category == 'setup'
|
79
|
+
unless category == 'setup'
|
79
80
|
@project = @settings.project_for_cluster(@cluster)
|
80
81
|
end
|
81
82
|
end
|
@@ -85,7 +86,7 @@ module Seira
|
|
85
86
|
run_base_help
|
86
87
|
exit(0)
|
87
88
|
elsif category == 'setup'
|
88
|
-
Seira::Setup.new(
|
89
|
+
Seira::Setup.new(target: cluster, args: args, settings: settings).run
|
89
90
|
exit(0)
|
90
91
|
end
|
91
92
|
|
data/lib/seira/setup.rb
CHANGED
@@ -5,10 +5,11 @@ module Seira
|
|
5
5
|
class Setup
|
6
6
|
SUMMARY = "Set up your local CLI with the right project and cluster configuration.".freeze
|
7
7
|
|
8
|
-
attr_reader :
|
8
|
+
attr_reader :target, :args, :settings
|
9
9
|
|
10
|
-
def initialize(
|
11
|
-
@
|
10
|
+
def initialize(target:, args:, settings:)
|
11
|
+
@target = target
|
12
|
+
@args = args
|
12
13
|
@settings = settings
|
13
14
|
end
|
14
15
|
|
@@ -17,16 +18,19 @@ module Seira
|
|
17
18
|
def run
|
18
19
|
ensure_software_installed
|
19
20
|
|
20
|
-
if
|
21
|
+
if target == 'status'
|
22
|
+
run_status
|
23
|
+
exit(0)
|
24
|
+
elsif target == 'all'
|
21
25
|
puts "We will now set up gcloud and kubectl for each project. We use a distinct GCP Project for each environment, which are specified in .seira.yml."
|
22
26
|
settings.valid_cluster_names.each do |cluster|
|
23
27
|
setup_cluster(cluster)
|
24
28
|
end
|
25
|
-
elsif settings.valid_cluster_names.include?(
|
26
|
-
puts "We will now set up gcloud and kubectl for #{
|
27
|
-
setup_cluster(
|
29
|
+
elsif settings.valid_cluster_names.include?(target)
|
30
|
+
puts "We will now set up gcloud and kubectl for #{target}"
|
31
|
+
setup_cluster(target)
|
28
32
|
else
|
29
|
-
puts "Please specify a valid cluster name or 'all'. Got #{
|
33
|
+
puts "Please specify a valid cluster name or 'all'. Got #{target}"
|
30
34
|
exit(1)
|
31
35
|
end
|
32
36
|
|
@@ -40,6 +44,10 @@ module Seira
|
|
40
44
|
|
41
45
|
private
|
42
46
|
|
47
|
+
def use_service_account_auth?
|
48
|
+
args.include?('--service-account')
|
49
|
+
end
|
50
|
+
|
43
51
|
def setup_cluster(cluster_name)
|
44
52
|
cluster_metadata = settings.clusters[cluster_name]
|
45
53
|
|
@@ -51,8 +59,23 @@ module Seira
|
|
51
59
|
end
|
52
60
|
|
53
61
|
system("gcloud config configurations activate #{cluster_name}")
|
54
|
-
|
55
|
-
|
62
|
+
|
63
|
+
# For automation and scripting, us a service account. For personal CLI use google auth based
|
64
|
+
# workflow which is much easier.
|
65
|
+
if use_service_account_auth?
|
66
|
+
puts "First, set up a service account in the #{cluster_metadata['project']} project and download the credentials for it. You may do so by accessing the below link. Save the file in a safe location."
|
67
|
+
puts "https://console.cloud.google.com/iam-admin/serviceaccounts/project?project=#{cluster_metadata['project']}&organizationId=#{settings.organization_id}"
|
68
|
+
puts "Then, set up an IAM user that it will inherit the permissions for."
|
69
|
+
|
70
|
+
puts "Please enter the path of your JSON key:"
|
71
|
+
filename = STDIN.gets
|
72
|
+
puts "Activating service account..."
|
73
|
+
system("gcloud auth activate-service-account --key-file #{filename}")
|
74
|
+
else
|
75
|
+
puts "Authenticating in order to set the auth for project #{cluster_name}. You will be directed to a google login page."
|
76
|
+
system("gcloud auth login")
|
77
|
+
end
|
78
|
+
|
56
79
|
system("gcloud config set project #{cluster_metadata['project']}")
|
57
80
|
system("gcloud config set compute/zone #{settings.default_zone}")
|
58
81
|
puts "Your new gcloud setup for #{cluster_name}:"
|
@@ -85,5 +108,16 @@ module Seira
|
|
85
108
|
system('brew install kubernetes-helm')
|
86
109
|
end
|
87
110
|
end
|
111
|
+
|
112
|
+
def run_status
|
113
|
+
puts "Your gcloud CLI auths (which can be used for many projects):"
|
114
|
+
system("gcloud auth list")
|
115
|
+
puts "Your gcloud CLI configurations (which allow for switching between GCP projects):"
|
116
|
+
system("gcloud config configurations list")
|
117
|
+
puts "Your kubectl contexts (which allow for switching between clusters):"
|
118
|
+
system("kubectl config view -o jsonpath='{.contexts[*].name}'")
|
119
|
+
|
120
|
+
puts "Seira is configured using .seira.yml in the root folder."
|
121
|
+
end
|
88
122
|
end
|
89
123
|
end
|
data/lib/seira/version.rb
CHANGED