hetzner-k3s 0.6.2.pre1 → 0.6.4

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
  SHA256:
3
- metadata.gz: a97992a61bdf146f57c09744881d926bde5c808b6a82bd330ff244c4e27e3f8e
4
- data.tar.gz: b03fbb20e031b39169aab50875581eeebc9ccd038587687b0df603e6bde81d6e
3
+ metadata.gz: 17e2373497278dc7f975158e93d2f0041e2e7b248fc31ba90f9088ad5a0c8b35
4
+ data.tar.gz: 35ff6dee9d6a84dbf7d1265ac4646da142c6ea030815dca4dbe6727528dec6de
5
5
  SHA512:
6
- metadata.gz: 8f9f1267f70b726032d950f77304525e23d8fbc64104786eb90d14f2f961f5e41305b73703489b73e0363b67b58031a2f28d60f50a6a93d2c40070fe8ec9ea09
7
- data.tar.gz: 96bd346cdc5a14f7794d23d2e043612b70b1d329a883c25a6eef09e926cf549a37725b8878dfb85ee71a5cea870739da9f7d21d3a21fa2077ba2e78f7c99007a
6
+ metadata.gz: 3a23e73a53b5cb205609c5b6cdaa17ef70bafcbf0c5783c0fa988fccac9cdae8da20fd12c3f644e47d2ff6d66bf914bcb2b0540ff83ef7a79943e970bd36bc18
7
+ data.tar.gz: 565b8e15b98dba8a0fbd0ef4699b0890fb5536e0f80d99f2dcab19352a26b50389c2923c4658a685a60569fa054b777fbe9d0111f9f9b1b78cd24070dceab96c
data/Gemfile.lock CHANGED
@@ -1,12 +1,12 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- hetzner-k3s (0.6.2.pre1)
4
+ hetzner-k3s (0.6.4)
5
5
  bcrypt_pbkdf
6
6
  childprocess
7
7
  ed25519
8
8
  httparty
9
- net-ssh (= 6.0.2)
9
+ net-ssh
10
10
  sshkey
11
11
  thor
12
12
 
@@ -25,7 +25,7 @@ GEM
25
25
  mime-types-data (~> 3.2015)
26
26
  mime-types-data (3.2022.0105)
27
27
  multi_xml (0.6.0)
28
- net-ssh (6.0.2)
28
+ net-ssh (7.0.1)
29
29
  parallel (1.20.1)
30
30
  parser (3.1.2.1)
31
31
  ast (~> 2.4.1)
data/README.md CHANGED
@@ -58,13 +58,13 @@ Before using the tool, be sure to have kubectl installed as it's required to ins
58
58
  #### With Homebrew
59
59
 
60
60
  ```bash
61
- brew install vitobotta/tap/hetzner-k3s
61
+ brew install vitobotta/tap/hetzner_k3s
62
62
  ```
63
63
 
64
64
  #### Binary installation (Intel)
65
65
 
66
66
  ```bash
67
- wget https://github.com/vitobotta/hetzner-k3s/releases/download/v0.6.1/hetzner-k3s-mac-amd64
67
+ wget https://github.com/vitobotta/hetzner-k3s/releases/download/v0.6.4/hetzner-k3s-mac-amd64
68
68
  chmod +x hetzner-k3s-mac-x64
69
69
  sudo mv hetzner-k3s-mac-x64 /usr/local/bin/hetzner-k3s
70
70
  ```
@@ -72,7 +72,7 @@ sudo mv hetzner-k3s-mac-x64 /usr/local/bin/hetzner-k3s
72
72
  #### Binary installation (Apple Silicon/M1)
73
73
 
74
74
  ```bash
75
- wget https://github.com/vitobotta/hetzner-k3s/releases/download/v0.6.1/hetzner-k3s-mac-arm64
75
+ wget https://github.com/vitobotta/hetzner-k3s/releases/download/v0.6.4/hetzner-k3s-mac-arm64
76
76
  chmod +x hetzner-k3s-mac-arm
77
77
  sudo mv hetzner-k3s-mac-arm /usr/local/bin/hetzner-k3s
78
78
  ```
@@ -82,7 +82,7 @@ NOTE: currently the ARM version still requires [Rosetta](https://support.apple.c
82
82
  ### Linux
83
83
 
84
84
  ```bash
85
- wget https://github.com/vitobotta/hetzner-k3s/releases/download/v0.6.1/hetzner-k3s-linux-x86_64
85
+ wget https://github.com/vitobotta/hetzner-k3s/releases/download/v0.6.4/hetzner-k3s-linux-x86_64
86
86
  chmod +x hetzner-k3s-linux-x86_64
87
87
  sudo mv hetzner-k3s-linux-x86_64 /usr/local/bin/hetzner-k3s
88
88
  ```
@@ -107,7 +107,7 @@ Alternatively, if you don't want to set up a Ruby runtime but have Docker instal
107
107
  docker run --rm -it \
108
108
  -v ${PWD}:/cluster \
109
109
  -v ${HOME}/.ssh:/tmp/.ssh \
110
- vitobotta/hetzner-k3s:v0.6.1 \
110
+ vitobotta/hetzner-k3s:v0.6.4 \
111
111
  create-cluster \
112
112
  --config-file /cluster/test.yaml
113
113
  ```
@@ -138,10 +138,20 @@ schedule_workloads_on_masters: false
138
138
  masters:
139
139
  instance_type: cpx21
140
140
  instance_count: 3
141
+ # labels:
142
+ # purpose: master
143
+ # size: cpx21
144
+ # taints:
145
+ # something: value1:NoSchedule
141
146
  worker_node_pools:
142
147
  - name: small
143
148
  instance_type: cpx21
144
149
  instance_count: 4
150
+ # labels:
151
+ # purpose: worker
152
+ # size: cpx21
153
+ # taints:
154
+ # something: GpuWorkloadsOnly:NoSchedule
145
155
  - name: big
146
156
  instance_type: cpx31
147
157
  instance_count: 2
@@ -15,10 +15,20 @@ schedule_workloads_on_masters: false
15
15
  masters:
16
16
  instance_type: cpx21
17
17
  instance_count: 3
18
+ # labels:
19
+ # purpose: master
20
+ # size: cpx21
21
+ # taints:
22
+ # something: value1:NoSchedule
18
23
  worker_node_pools:
19
24
  - name: small
20
25
  instance_type: cpx21
21
26
  instance_count: 4
27
+ # labels:
28
+ # purpose: worker
29
+ # size: cpx21
30
+ # taints:
31
+ # something: GpuWorkloadsOnly:NoSchedule
22
32
  - name: big
23
33
  instance_type: cpx31
24
34
  instance_count: 2
data/hetzner-k3s.gemspec CHANGED
@@ -24,7 +24,7 @@ Gem::Specification.new do |spec|
24
24
  spec.add_dependency 'childprocess'
25
25
  spec.add_dependency 'ed25519'
26
26
  spec.add_dependency 'httparty'
27
- spec.add_dependency 'net-ssh', '= 6.0.2'
27
+ spec.add_dependency 'net-ssh'
28
28
  spec.add_dependency 'sshkey'
29
29
  spec.add_dependency 'thor'
30
30
  spec.add_development_dependency 'rubocop'
@@ -6,10 +6,6 @@ module Hetzner
6
6
 
7
7
  attr_reader :token
8
8
 
9
- def initialize(token:)
10
- @token = token
11
- end
12
-
13
9
  def get(path)
14
10
  make_request do
15
11
  JSON.parse HTTParty.get(BASE_URI + path, headers: headers).body
@@ -30,6 +26,10 @@ module Hetzner
30
26
 
31
27
  private
32
28
 
29
+ def initialize(token:)
30
+ @token = token
31
+ end
32
+
33
33
  def headers
34
34
  {
35
35
  'Authorization' => "Bearer #{@token}",
@@ -33,8 +33,7 @@ module Hetzner
33
33
  puts 'Deleting firewall...'
34
34
 
35
35
  servers.each do |server|
36
- hetzner_client.post("/firewalls/#{firewall['id']}/actions/remove_from_resources",
37
- remove_targets_config(server['id']))
36
+ hetzner_client.post("/firewalls/#{firewall['id']}/actions/remove_from_resources", remove_targets_config(server['id']))
38
37
  end
39
38
 
40
39
  hetzner_client.delete('/firewalls', firewall['id'])
@@ -33,8 +33,8 @@ module Hetzner
33
33
  puts 'Deleting API load balancer...' unless high_availability
34
34
 
35
35
  hetzner_client.post("/load_balancers/#{load_balancer['id']}/actions/remove_target", remove_targets_config)
36
-
37
36
  hetzner_client.delete('/load_balancers', load_balancer['id'])
37
+
38
38
  puts '...API load balancer deleted.' unless high_availability
39
39
  elsif high_availability
40
40
  puts 'API load balancer no longer exists, skipping.'
@@ -59,30 +59,6 @@ module Hetzner
59
59
  end
60
60
 
61
61
  def user_data
62
- packages = %w[fail2ban wireguard]
63
- packages += additional_packages if additional_packages
64
- packages = "'#{packages.join("', '")}'"
65
-
66
- post_create_commands = [
67
- 'crontab -l > /etc/cron_bkp',
68
- 'echo "@reboot echo true > /etc/ready" >> /etc/cron_bkp',
69
- 'crontab /etc/cron_bkp',
70
- 'sed -i \'s/[#]*PermitRootLogin yes/PermitRootLogin prohibit-password/g\' /etc/ssh/sshd_config',
71
- 'sed -i \'s/[#]*PasswordAuthentication yes/PasswordAuthentication no/g\' /etc/ssh/sshd_config',
72
- 'systemctl restart sshd',
73
- 'systemctl stop systemd-resolved',
74
- 'systemctl disable systemd-resolved',
75
- 'rm /etc/resolv.conf',
76
- 'echo \'nameserver 1.1.1.1\' > /etc/resolv.conf',
77
- 'echo \'nameserver 1.0.0.1\' >> /etc/resolv.conf'
78
- ]
79
-
80
- post_create_commands += additional_post_create_commands if additional_post_create_commands
81
-
82
- post_create_commands += ['shutdown -r now'] if post_create_commands.grep(/shutdown|reboot/).grep_v(/@reboot/).empty?
83
-
84
- post_create_commands = " - #{post_create_commands.join("\n - ")}"
85
-
86
62
  <<~YAML
87
63
  #cloud-config
88
64
  packages: [#{packages}]
@@ -125,5 +101,33 @@ module Hetzner
125
101
 
126
102
  JSON.parse(response_body)['server']
127
103
  end
104
+
105
+ def post_create_commands
106
+ commands = [
107
+ 'crontab -l > /etc/cron_bkp',
108
+ 'echo "@reboot echo true > /etc/ready" >> /etc/cron_bkp',
109
+ 'crontab /etc/cron_bkp',
110
+ 'sed -i \'s/[#]*PermitRootLogin yes/PermitRootLogin prohibit-password/g\' /etc/ssh/sshd_config',
111
+ 'sed -i \'s/[#]*PasswordAuthentication yes/PasswordAuthentication no/g\' /etc/ssh/sshd_config',
112
+ 'systemctl restart sshd',
113
+ 'systemctl stop systemd-resolved',
114
+ 'systemctl disable systemd-resolved',
115
+ 'rm /etc/resolv.conf',
116
+ 'echo \'nameserver 1.1.1.1\' > /etc/resolv.conf',
117
+ 'echo \'nameserver 1.0.0.1\' >> /etc/resolv.conf'
118
+ ]
119
+
120
+ commands += additional_post_create_commands if additional_post_create_commands
121
+
122
+ commands << 'shutdown -r now' if commands.grep(/shutdown|reboot/).grep_v(/@reboot/).empty?
123
+
124
+ " - #{commands.join("\n - ")}"
125
+ end
126
+
127
+ def packages
128
+ packages = %w[fail2ban wireguard]
129
+ packages += additional_packages if additional_packages
130
+ "'#{packages.join("', '")}'"
131
+ end
128
132
  end
129
133
  end