hetzner-k3s 0.4.9 → 0.5.3
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/.rubocop.yml +121 -0
- data/Dockerfile +5 -2
- data/Gemfile +5 -3
- data/Gemfile.lock +24 -3
- data/README.md +7 -85
- data/Rakefile +5 -3
- data/bin/build.sh +3 -3
- data/bin/{console → console.sh} +3 -3
- data/bin/{setup → setup.sh} +0 -0
- data/hetzner-k3s.gemspec +25 -21
- data/lib/hetzner/infra/client.rb +17 -15
- data/lib/hetzner/infra/firewall.rb +92 -90
- data/lib/hetzner/infra/load_balancer.rb +62 -59
- data/lib/hetzner/infra/network.rb +31 -30
- data/lib/hetzner/infra/placement_group.rb +25 -21
- data/lib/hetzner/infra/server.rb +37 -31
- data/lib/hetzner/infra/ssh_key.rb +34 -35
- data/lib/hetzner/infra.rb +5 -1
- data/lib/hetzner/k3s/cli.rb +279 -262
- data/lib/hetzner/k3s/cluster.rb +448 -397
- data/lib/hetzner/k3s/version.rb +3 -1
- data/lib/hetzner/utils.rb +42 -38
- data/lib/hetzner.rb +2 -0
- metadata +26 -10
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Hetzner
|
|
2
4
|
class SSHKey
|
|
3
5
|
def initialize(hetzner_client:, cluster_name:)
|
|
@@ -11,34 +13,34 @@ module Hetzner
|
|
|
11
13
|
puts
|
|
12
14
|
|
|
13
15
|
if (public_ssh_key = find_public_ssh_key)
|
|
14
|
-
puts
|
|
16
|
+
puts 'SSH key already exists, skipping.'
|
|
15
17
|
puts
|
|
16
|
-
return public_ssh_key[
|
|
18
|
+
return public_ssh_key['id']
|
|
17
19
|
end
|
|
18
20
|
|
|
19
|
-
puts
|
|
21
|
+
puts 'Creating SSH key...'
|
|
20
22
|
|
|
21
|
-
response = hetzner_client.post(
|
|
23
|
+
response = hetzner_client.post('/ssh_keys', ssh_key_config).body
|
|
22
24
|
|
|
23
|
-
puts
|
|
25
|
+
puts '...SSH key created.'
|
|
24
26
|
puts
|
|
25
27
|
|
|
26
|
-
JSON.parse(response)[
|
|
28
|
+
JSON.parse(response)['ssh_key']['id']
|
|
27
29
|
end
|
|
28
30
|
|
|
29
31
|
def delete(public_ssh_key_path:)
|
|
30
32
|
@public_ssh_key_path = public_ssh_key_path
|
|
31
33
|
|
|
32
34
|
if (public_ssh_key = find_public_ssh_key)
|
|
33
|
-
if public_ssh_key[
|
|
34
|
-
puts
|
|
35
|
-
hetzner_client.delete(
|
|
36
|
-
puts
|
|
35
|
+
if public_ssh_key['name'] == cluster_name
|
|
36
|
+
puts 'Deleting ssh_key...'
|
|
37
|
+
hetzner_client.delete('/ssh_keys', public_ssh_key['id'])
|
|
38
|
+
puts '...ssh_key deleted.'
|
|
37
39
|
else
|
|
38
40
|
puts "The SSH key existed before creating the cluster, so I won't delete it."
|
|
39
41
|
end
|
|
40
42
|
else
|
|
41
|
-
puts
|
|
43
|
+
puts 'SSH key no longer exists, skipping.'
|
|
42
44
|
end
|
|
43
45
|
|
|
44
46
|
puts
|
|
@@ -46,36 +48,33 @@ module Hetzner
|
|
|
46
48
|
|
|
47
49
|
private
|
|
48
50
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
def public_ssh_key
|
|
52
|
-
@public_ssh_key ||= File.read(public_ssh_key_path).chop
|
|
53
|
-
end
|
|
51
|
+
attr_reader :hetzner_client, :cluster_name, :public_ssh_key_path
|
|
54
52
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
public_key: public_ssh_key
|
|
59
|
-
}
|
|
60
|
-
end
|
|
53
|
+
def public_ssh_key
|
|
54
|
+
@public_ssh_key ||= File.read(public_ssh_key_path).chop
|
|
55
|
+
end
|
|
61
56
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
57
|
+
def ssh_key_config
|
|
58
|
+
{
|
|
59
|
+
name: cluster_name,
|
|
60
|
+
public_key: public_ssh_key
|
|
61
|
+
}
|
|
62
|
+
end
|
|
65
63
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
end
|
|
64
|
+
def fingerprint
|
|
65
|
+
@fingerprint ||= ::SSHKey.fingerprint(public_ssh_key)
|
|
66
|
+
end
|
|
70
67
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
end
|
|
68
|
+
def find_public_ssh_key
|
|
69
|
+
key = hetzner_client.get('/ssh_keys')['ssh_keys'].detect do |ssh_key|
|
|
70
|
+
ssh_key['fingerprint'] == fingerprint
|
|
71
|
+
end
|
|
76
72
|
|
|
77
|
-
|
|
73
|
+
key ||= hetzner_client.get('/ssh_keys')['ssh_keys'].detect do |ssh_key|
|
|
74
|
+
ssh_key['name'] == cluster_name
|
|
78
75
|
end
|
|
79
76
|
|
|
77
|
+
key
|
|
78
|
+
end
|
|
80
79
|
end
|
|
81
80
|
end
|