seira 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e46fa5934886e1052121f63de8f24dba8fba6040
4
- data.tar.gz: fa0b097ca466f67d1525fe1b9c4de0fb8b99444e
3
+ metadata.gz: c324b547f1bcefcdf4273e878da27dacf362c79a
4
+ data.tar.gz: 740dbe2c8657affa050e6642d927fb82fa983bb5
5
5
  SHA512:
6
- metadata.gz: a08875e7368cabd964518f47b2e8c7caa62733fe84f7026f126d700c71f9b044c8e4fe3a18e64a75b48abdba0090672116a4399ade0095a3d090758b9e01573d
7
- data.tar.gz: 81fb10e2923140dbd0a8fcea636238528818776c0012b6004d21c1ec94b057d6e8b019cdb89f9190a082f60bf982377ba25dd7df5480d25509da82da2e087e9e
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' && cluster == 'all'
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' && cluster == 'all'
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(arg: cluster, settings: settings).run
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 :arg, :settings
8
+ attr_reader :target, :args, :settings
9
9
 
10
- def initialize(arg:, settings:)
11
- @arg = arg
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 arg == 'all'
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?(arg)
26
- puts "We will now set up gcloud and kubectl for #{arg}"
27
- setup_cluster(arg)
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 #{arg}"
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
- puts "Authenticating in order to set the auth for project #{cluster_name}. You will be directed to a google login page."
55
- system("gcloud auth login")
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
@@ -1,3 +1,3 @@
1
1
  module Seira
2
- VERSION = "0.3.1".freeze
2
+ VERSION = "0.3.2".freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: seira
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Ringwelski