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 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