kontena-cli 0.12.3 → 0.13.0

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.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/bin/kontena +6 -4
  4. data/lib/kontena/cli/apps/common.rb +21 -7
  5. data/lib/kontena/cli/apps/deploy_command.rb +11 -4
  6. data/lib/kontena/cli/apps/docker_helper.rb +12 -0
  7. data/lib/kontena/cli/apps/logs_command.rb +0 -2
  8. data/lib/kontena/cli/apps/remove_command.rb +23 -14
  9. data/lib/kontena/cli/bytes_helper.rb +40 -0
  10. data/lib/kontena/cli/container_command.rb +0 -1
  11. data/lib/kontena/cli/grid_command.rb +4 -6
  12. data/lib/kontena/cli/grids/logs_command.rb +0 -2
  13. data/lib/kontena/cli/grids/trusted_subnet_command.rb +12 -0
  14. data/lib/kontena/cli/grids/trusted_subnets/add_command.rb +16 -0
  15. data/lib/kontena/cli/grids/trusted_subnets/list_command.rb +17 -0
  16. data/lib/kontena/cli/grids/trusted_subnets/remove_command.rb +20 -0
  17. data/lib/kontena/cli/grids/user_command.rb +12 -0
  18. data/lib/kontena/cli/grids/{add_user_command.rb → users/add_command.rb} +4 -4
  19. data/lib/kontena/cli/grids/{list_users_command.rb → users/list_command.rb} +4 -4
  20. data/lib/kontena/cli/grids/{remove_user_command.rb → users/remove_command.rb} +4 -4
  21. data/lib/kontena/cli/login_command.rb +4 -3
  22. data/lib/kontena/cli/master/aws/create_command.rb +3 -1
  23. data/lib/kontena/cli/master/current_command.rb +17 -0
  24. data/lib/kontena/cli/master/digital_ocean/create_command.rb +5 -3
  25. data/lib/kontena/cli/master/users/role_command.rb +10 -0
  26. data/lib/kontena/cli/master/users/{add_role_command.rb → roles/add_command.rb} +4 -4
  27. data/lib/kontena/cli/master/users/{remove_role_command.rb → roles/remove_command.rb} +4 -4
  28. data/lib/kontena/cli/master/users_command.rb +2 -4
  29. data/lib/kontena/cli/master_command.rb +2 -0
  30. data/lib/kontena/cli/node_command.rb +2 -4
  31. data/lib/kontena/cli/nodes/label_command.rb +14 -0
  32. data/lib/kontena/cli/nodes/{add_label_command.rb → labels/add_command.rb} +2 -2
  33. data/lib/kontena/cli/nodes/{remove_label_command.rb → labels/remove_command.rb} +2 -2
  34. data/lib/kontena/cli/nodes/list_command.rb +2 -1
  35. data/lib/kontena/cli/nodes/show_command.rb +19 -2
  36. data/lib/kontena/cli/registry_command.rb +0 -1
  37. data/lib/kontena/cli/service_command.rb +4 -11
  38. data/lib/kontena/cli/services/create_command.rb +10 -2
  39. data/lib/kontena/cli/services/env_command.rb +12 -0
  40. data/lib/kontena/cli/services/{add_env_command.rb → envs/add_command.rb} +4 -4
  41. data/lib/kontena/cli/services/{envs_command.rb → envs/list_command.rb} +5 -5
  42. data/lib/kontena/cli/services/{remove_env_command.rb → envs/remove_command.rb} +4 -4
  43. data/lib/kontena/cli/services/list_command.rb +3 -2
  44. data/lib/kontena/cli/services/logs_command.rb +0 -2
  45. data/lib/kontena/cli/services/secret_command.rb +10 -0
  46. data/lib/kontena/cli/services/{add_secret_command.rb → secrets/link_command.rb} +4 -4
  47. data/lib/kontena/cli/services/{remove_secret_command.rb → secrets/unlink_command.rb} +4 -4
  48. data/lib/kontena/cli/services/services_helper.rb +35 -8
  49. data/lib/kontena/cli/services/stats_command.rb +6 -1
  50. data/lib/kontena/cli/services/update_command.rb +4 -0
  51. data/lib/kontena/cli/user/forgot_password_command.rb +16 -0
  52. data/lib/kontena/cli/user/reset_password_command.rb +23 -0
  53. data/lib/kontena/cli/user/verify_command.rb +22 -0
  54. data/lib/kontena/cli/user_command.rb +13 -0
  55. data/lib/kontena/cli/vault/list_command.rb +1 -1
  56. data/lib/kontena/cli/vpn_command.rb +0 -1
  57. data/lib/kontena/cli/whoami_command.rb +17 -3
  58. data/lib/kontena/machine/aws/cloudinit_master.yml +13 -4
  59. data/lib/kontena/machine/aws/common.rb +8 -13
  60. data/lib/kontena/machine/aws/master_provisioner.rb +6 -5
  61. data/lib/kontena/machine/azure/cloudinit_master.yml +0 -2
  62. data/lib/kontena/machine/digital_ocean.rb +1 -0
  63. data/lib/kontena/machine/digital_ocean/cloudinit.yml +0 -22
  64. data/lib/kontena/machine/digital_ocean/cloudinit_master.yml +14 -4
  65. data/lib/kontena/machine/digital_ocean/master_provisioner.rb +12 -9
  66. data/lib/kontena/machine/vagrant/cloudinit.yml +2 -0
  67. data/lib/kontena/scripts/completer +4 -4
  68. data/spec/kontena/cli/app/common_spec.rb +55 -7
  69. data/spec/kontena/cli/app/docker_helper_spec.rb +74 -0
  70. data/spec/kontena/cli/grids/trusted_subnets/add_command_spec.rb +38 -0
  71. data/spec/kontena/cli/grids/trusted_subnets/list_command_spec.rb +31 -0
  72. data/spec/kontena/cli/grids/trusted_subnets/remove_command_spec.rb +38 -0
  73. data/spec/kontena/cli/master/current_command_spec.rb +57 -0
  74. data/spec/kontena/cli/master/users/{add_role_command_spec.rb → roles/add_command_spec.rb} +3 -3
  75. data/spec/kontena/cli/master/users/{remove_role_command_spec.rb → roles/remove_command_spec.rb} +3 -3
  76. data/spec/kontena/cli/services/{add_secret_command_spec.rb → secrets/link_command_spec.rb} +4 -3
  77. data/spec/kontena/cli/services/{remove_secret_command_spec.rb → secrets/unlink_command_spec.rb} +4 -3
  78. data/spec/kontena/cli/services/services_helper_spec.rb +44 -0
  79. metadata +45 -26
  80. data/lib/kontena/cli/forgot_password_command.rb +0 -13
  81. data/lib/kontena/cli/reset_password_command.rb +0 -19
  82. data/lib/kontena/cli/users_command.rb +0 -15
  83. data/lib/kontena/cli/verify_account_command.rb +0 -13
@@ -0,0 +1,10 @@
1
+ module Kontena::Cli::Services
2
+
3
+ require_relative 'secrets/link_command'
4
+ require_relative 'secrets/unlink_command'
5
+
6
+ class SecretCommand < Clamp::Command
7
+ subcommand "link", "Link secret from Vault", Secrets::LinkCommand
8
+ subcommand "unlink", "Unlink secret from Vault", Secrets::UnlinkCommand
9
+ end
10
+ end
@@ -1,10 +1,10 @@
1
- require_relative 'services_helper'
1
+ require_relative '../services_helper'
2
2
 
3
- module Kontena::Cli::Services
4
- class AddSecretCommand < Clamp::Command
3
+ module Kontena::Cli::Services::Secrets
4
+ class LinkCommand < Clamp::Command
5
5
  include Kontena::Cli::Common
6
6
  include Kontena::Cli::GridOptions
7
- include ServicesHelper
7
+ include Kontena::Cli::Services::ServicesHelper
8
8
 
9
9
  parameter "NAME", "Service name"
10
10
  parameter "SECRET", "Secret to be added from Vault (format: secret:name:type)"
@@ -1,10 +1,10 @@
1
- require_relative 'services_helper'
1
+ require_relative '../services_helper'
2
2
 
3
- module Kontena::Cli::Services
4
- class RemoveSecretCommand < Clamp::Command
3
+ module Kontena::Cli::Services::Secrets
4
+ class UnlinkCommand < Clamp::Command
5
5
  include Kontena::Cli::Common
6
6
  include Kontena::Cli::GridOptions
7
- include ServicesHelper
7
+ include Kontena::Cli::Services::ServicesHelper
8
8
 
9
9
  parameter "NAME", "Service name"
10
10
  parameter "SECRET", "Secret to be removed (format: secret:name:type)"
@@ -50,8 +50,13 @@ module Kontena
50
50
  puts " scaling: #{service['container_count'] }"
51
51
  puts " strategy: #{service['strategy']}"
52
52
  puts " deploy_opts:"
53
- puts " wait_for_port: #{service['deploy_opts']['wait_for_port'] || '-'}"
54
53
  puts " min_health: #{service['deploy_opts']['min_health']}"
54
+ if service['deploy_opts']['wait_for_port']
55
+ puts " wait_for_port: #{service['deploy_opts']['wait_for_port']}"
56
+ end
57
+ if service['deploy_opts']['interval']
58
+ puts " interval: #{service['deploy_opts']['interval']}"
59
+ end
55
60
  puts " dns: #{service['name']}.#{grid}.kontena.local"
56
61
 
57
62
  if service['affinity'].to_a.size > 0
@@ -276,14 +281,17 @@ module Kontena
276
281
  # @param [String] memory
277
282
  # @return [Integer]
278
283
  def parse_memory(memory)
279
- if memory.end_with?('k')
280
- memory.to_i * 1000
281
- elsif memory.end_with?('m')
282
- memory.to_i * 1000000
283
- elsif memory.end_with?('g')
284
- memory.to_i * 1000000000
285
- else
284
+ case memory
285
+ when /^\d+(k|K)$/
286
+ memory.to_i * 1024
287
+ when /^\d+(m|M)$/
288
+ memory.to_i * 1024 * 1024
289
+ when /^\d+(g|G)$/
290
+ memory.to_i * 1024 * 1024 * 1024
291
+ when /^\d+$/
286
292
  memory.to_i
293
+ else
294
+ raise ArgumentError.new("Invalid memory value: #{memory}")
287
295
  end
288
296
  end
289
297
 
@@ -319,6 +327,25 @@ module Kontena
319
327
  secrets
320
328
  end
321
329
 
330
+ # @param [String] time
331
+ # @return [Integer, NilClass]
332
+ def parse_relative_time(time)
333
+ if time.end_with?('min')
334
+ time.to_i * 60
335
+ elsif time.end_with?('h')
336
+ time.to_i * 60 * 60
337
+ elsif time.end_with?('d')
338
+ time.to_i * 60 * 60 * 24
339
+ else
340
+ time = time.to_i
341
+ if time == 0
342
+ nil
343
+ else
344
+ time
345
+ end
346
+ end
347
+ end
348
+
322
349
  def int_to_filesize(int)
323
350
  {
324
351
  'B' => 1000,
@@ -6,6 +6,10 @@ module Kontena::Cli::Services
6
6
  include Kontena::Cli::GridOptions
7
7
  include ServicesHelper
8
8
 
9
+ MEM_MAX_LIMITS = [
10
+ 1.8446744073709552e+19, 9.223372036854772e+18
11
+ ]
12
+
9
13
  parameter "NAME", "Service name"
10
14
  option ["-t", "--tail"], :flag, "Tail (follow) stats in real time", default: false
11
15
 
@@ -40,7 +44,7 @@ module Kontena::Cli::Services
40
44
 
41
45
  def render_stat_row(stat)
42
46
  memory = stat['memory'].nil? ? 'N/A' : filesize_to_human(stat['memory']['usage'])
43
- if !stat['memory'].nil? && stat['memory']['limit'] != 1.8446744073709552e+19
47
+ if !stat['memory'].nil? && (stat['memory']['limit'] && !MEM_MAX_LIMITS.include?(stat['memory']['limit']))
44
48
  memory_limit = filesize_to_human(stat['memory']['limit'])
45
49
  memory_pct = "#{(stat['memory']['usage'].to_f / stat['memory']['limit'].to_f * 100).round(2)}%"
46
50
  else
@@ -58,6 +62,7 @@ module Kontena::Cli::Services
58
62
  # @param [Integer] size
59
63
  # @return [String]
60
64
  def filesize_to_human(size)
65
+ return '0B' if size.to_f == 0.0
61
66
  units = %w{B K M G T}
62
67
  e = (Math.log(size) / Math.log(1000)).floor
63
68
  s = '%.2f' % (size.to_f / 1000**e)
@@ -28,6 +28,7 @@ module Kontena::Cli::Services
28
28
  option "--deploy-strategy", "STRATEGY", "Deploy strategy to use (ha, daemon, random)"
29
29
  option "--deploy-wait-for-port", "PORT", "Wait for port to respond when deploying"
30
30
  option "--deploy-min-health", "FLOAT", "The minimum percentage (0.0 - 1.0) of healthy instances that do not sacrifice overall service availability while deploying"
31
+ option "--deploy-interval", "TIME", "Auto-deploy with given interval (format: <number><unit>, where unit = min, h, d)"
31
32
  option "--pid", "PID", "Pid namespace to use"
32
33
  option "--secret", "SECRET", "Import secret from Vault (format: <secret>:<name>:<type>)", multivalued: true
33
34
 
@@ -66,6 +67,9 @@ module Kontena::Cli::Services
66
67
  data[:deploy_opts] = {}
67
68
  data[:deploy_opts][:min_health] = deploy_min_health.to_f if deploy_min_health
68
69
  data[:deploy_opts][:wait_for_port] = deploy_wait_for_port.to_i if deploy_wait_for_port
70
+ if deploy_interval
71
+ data[:deploy_opts][:interval] = parse_relative_time(deploy_interval)
72
+ end
69
73
  data.delete(:deploy_opts) if data[:deploy_opts].empty?
70
74
  data[:pid] = pid if pid
71
75
  data
@@ -0,0 +1,16 @@
1
+ module Kontena::Cli::User
2
+ class ForgotPasswordCommand < Clamp::Command
3
+ include Kontena::Cli::Common
4
+
5
+ parameter "EMAIL", "Email address"
6
+
7
+ option "--auth-provider-url", "URL", "Auth provider URL", default: "https://auth.kontena.io/"
8
+
9
+ def execute
10
+ params = {email: email}
11
+ auth_client = Kontena::Client.new(auth_provider_url)
12
+ auth_client.post('user/password_reset', params)
13
+ puts 'Email with password reset instructions is sent to your email address. Please follow the instructions to change your password.'
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,23 @@
1
+ module Kontena::Cli::User
2
+ class ResetPasswordCommand < Clamp::Command
3
+ include Kontena::Cli::Common
4
+
5
+ parameter "TOKEN", "Password reset token"
6
+
7
+ option "--auth-provider-url", "URL", "Auth provider URL", default: "https://auth.kontena.io/"
8
+
9
+ def execute
10
+ require 'highline/import'
11
+
12
+ password = ask("Password: ") { |q| q.echo = "*" }
13
+ password2 = ask("Password again: ") { |q| q.echo = "*" }
14
+ if password != password2
15
+ abort("Passwords don't match")
16
+ end
17
+ params = {token: token, password: password}
18
+ auth_client = Kontena::Client.new(auth_provider_url)
19
+ auth_client.put('user/password_reset', params)
20
+ puts 'Password is now changed. To login with the new password, please run: kontena login'
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,22 @@
1
+ module Kontena::Cli::User
2
+ class VerifyCommand < Clamp::Command
3
+ include Kontena::Cli::Common
4
+
5
+ parameter "TOKEN", "Kontena verify token"
6
+
7
+ option "--auth-provider-url", "URL", "Auth provider URL", default: "https://auth.kontena.io/"
8
+
9
+ def execute
10
+ require_api_url
11
+
12
+ params = {token: token}
13
+ begin
14
+ auth_client = Kontena::Client.new(auth_provider_url)
15
+ auth_client.post('user/email_confirm', params)
16
+ puts 'Account verified'.colorize(:green)
17
+ rescue Kontena::Errors::StandardError
18
+ abort 'Invalid verify token'.colorize(:red)
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,13 @@
1
+ require_relative 'user/verify_command'
2
+ require_relative 'user/forgot_password_command'
3
+ require_relative 'user/reset_password_command'
4
+
5
+ class Kontena::Cli::UserCommand < Clamp::Command
6
+
7
+ subcommand "verify", "Verify user account", Kontena::Cli::User::VerifyCommand
8
+ subcommand "forgot-password", "Request password reset for Kontena account", Kontena::Cli::User::ForgotPasswordCommand
9
+ subcommand "reset-password", "Reset Kontena account password", Kontena::Cli::User::ResetPasswordCommand
10
+
11
+ def execute
12
+ end
13
+ end
@@ -10,7 +10,7 @@ module Kontena::Cli::Vault
10
10
 
11
11
  column_width_paddings = '%-54s %-25.25s'
12
12
  puts column_width_paddings % ['NAME', 'CREATED AT']
13
- result['secrets'].each do |secret|
13
+ result['secrets'].sort_by { |s| s['name'] }.each do |secret|
14
14
  puts column_width_paddings % [secret['name'], secret['created_at']]
15
15
  end
16
16
  end
@@ -8,7 +8,6 @@ class Kontena::Cli::VpnCommand < Clamp::Command
8
8
  subcommand "create", "Create VPN service", Kontena::Cli::Vpn::CreateCommand
9
9
  subcommand "config", "Show/Export VPN config", Kontena::Cli::Vpn::ConfigCommand
10
10
  subcommand ["remove", "rm"], "Remove VPN service", Kontena::Cli::Vpn::RemoveCommand
11
- subcommand "delete", "[DEPRECATED] Delete VPN service", Kontena::Cli::Vpn::DeleteCommand
12
11
 
13
12
  def execute
14
13
  end
@@ -13,9 +13,23 @@ class Kontena::Cli::WhoamiCommand < Clamp::Command
13
13
  puts "Master: #{self.current_master['name']}"
14
14
  puts "URL: #{api_url}"
15
15
  puts "Grid: #{current_grid}"
16
- token = require_token
17
- user = client(token).get('user')
18
- puts "User: #{user['email']}"
16
+ if current_master['email']
17
+ puts "User: #{current_master['email']}"
18
+ else # In case local storage doesn't have the user email yet
19
+ token = require_token
20
+ user = client(token).get('user')
21
+ puts "User: #{user['email']}"
22
+ master = {
23
+ 'name' => current_master['name'],
24
+ 'url' => current_master['url'],
25
+ 'token' => current_master['token'],
26
+ 'email' => user['email'],
27
+ 'grid' => current_master['grid']
28
+ }
29
+
30
+ self.add_master(current_master['name'], master)
31
+ end
32
+
19
33
 
20
34
  end
21
35
 
@@ -30,6 +30,7 @@ write_files:
30
30
  -p 80:80 -p 443:443 kontena/haproxy:latest
31
31
  coreos:
32
32
  units:
33
+ <% unless mongodb_uri -%>
33
34
  - name: kontena-server-mongo.service
34
35
  command: start
35
36
  enable: true
@@ -53,7 +54,7 @@ coreos:
53
54
  ExecStart=/usr/bin/docker run --name=kontena-server-mongo \
54
55
  --volumes-from=kontena-server-mongo-data \
55
56
  mongo:3.0 mongod --smallfiles
56
-
57
+ <% end -%>
57
58
  - name: kontena-server-api.service
58
59
  command: start
59
60
  enable: true
@@ -65,11 +66,13 @@ coreos:
65
66
  After=kontena-server-mongo.service
66
67
  Description=Kontena Master
67
68
  Documentation=http://www.kontena.io/
69
+ Before=kontena-server-haproxy.service
70
+ Wants=kontena-server-haproxy.service
68
71
  Requires=network-online.target
69
72
  Requires=docker.service
73
+ <% unless mongodb_uri -%>
70
74
  Requires=kontena-server-mongo.service
71
- Before=kontena-server-haproxy.service
72
- Wants=kontena-server-haproxy.service
75
+ <% end %>
73
76
 
74
77
  [Service]
75
78
  Restart=always
@@ -79,10 +82,16 @@ coreos:
79
82
  ExecStartPre=-/usr/bin/docker rm kontena-server-api
80
83
  ExecStartPre=/usr/bin/docker pull kontena/server:${KONTENA_VERSION}
81
84
  ExecStart=/usr/bin/docker run --name kontena-server-api \
85
+ <% if mongodb_uri -%>
86
+ -e MONGODB_URI=<%= mongodb_uri %> \
87
+ <% else -%>
82
88
  --link kontena-server-mongo:mongodb \
83
89
  -e MONGODB_URI=mongodb://mongodb:27017/kontena_server \
90
+ <% end -%>
91
+ <% if auth_server %>
92
+ -e AUTH_API_URL=<%= auth_server %> \
93
+ <% end -%>
84
94
  -e VAULT_KEY=${KONTENA_VAULT_KEY} -e VAULT_IV=${KONTENA_VAULT_IV} \
85
- <% if auth_server %>-e AUTH_API_URL=<%= auth_server %><% end %> \
86
95
  kontena/server:${KONTENA_VERSION}
87
96
 
88
97
  - name: kontena-server-haproxy.service
@@ -6,19 +6,14 @@ module Kontena
6
6
  # @param [String] region
7
7
  # @return String
8
8
  def resolve_ami(region)
9
- images = {
10
- 'eu-central-1' => 'ami-fee2fb92',
11
- 'ap-northeast-1' => 'ami-26033d48',
12
- 'us-gov-west-1' => 'ami-bdf04cdc',
13
- 'sa-east-1' => 'ami-10c5457c',
14
- 'ap-southeast-2' => 'ami-dc8baebf',
15
- 'ap-southeast-1' => 'ami-6969a50a',
16
- 'us-east-1' => 'ami-23260749',
17
- 'us-west-2' => 'ami-20927640',
18
- 'us-west-1' => 'ami-c2e490a2',
19
- 'eu-west-1' => 'ami-7e72c70d'
20
- }
21
- images[region]
9
+ response = Excon.get("https://coreos.com/dist/aws/aws-stable.json")
10
+ images = JSON.parse(response.body)
11
+ info = images[region]
12
+ if info
13
+ info['hvm']
14
+ else
15
+ nil
16
+ end
22
17
  end
23
18
 
24
19
  # @param [String] vpc_id
@@ -47,7 +47,8 @@ module Kontena
47
47
  auth_server: opts[:auth_server],
48
48
  version: opts[:version],
49
49
  vault_secret: opts[:vault_secret],
50
- vault_iv: opts[:vault_iv]
50
+ vault_iv: opts[:vault_iv],
51
+ mongodb_uri: opts[:mongodb_uri]
51
52
  }
52
53
 
53
54
  security_group = ensure_security_group(opts[:vpc])
@@ -83,12 +84,12 @@ module Kontena
83
84
  master_url = "https://#{ec2_instance.public_ip_address}"
84
85
  Excon.defaults[:ssl_verify_peer] = false
85
86
  http_client = Excon.new(master_url, :connect_timeout => 10)
86
- ShellSpinner "Waiting for #{name.colorize(:cyan)} to start" do
87
+ ShellSpinner "Waiting for #{name.colorize(:cyan)} to start " do
87
88
  sleep 5 until master_running?(http_client)
88
89
  end
89
90
 
90
91
  puts "Kontena Master is now running at #{master_url}"
91
- puts "Use #{"kontena login #{master_url}".colorize(:light_black)} to complete Kontena Master setup"
92
+ puts "Use #{"kontena login --name=#{name.sub('kontena-master-', '')} #{master_url}".colorize(:light_black)} to complete Kontena Master setup"
92
93
  end
93
94
 
94
95
  ##
@@ -151,7 +152,7 @@ module Kontena
151
152
  end
152
153
 
153
154
  def generate_name
154
- "kontena-master-#{super}-#{rand(1..99)}"
155
+ "kontena-master-#{super}-#{rand(1..9)}"
155
156
  end
156
157
 
157
158
  def master_running?(http_client)
@@ -161,7 +162,7 @@ module Kontena
161
162
  end
162
163
 
163
164
  def erb(template, vars)
164
- ERB.new(template).result(
165
+ ERB.new(template, nil, '%<>-').result(
165
166
  OpenStruct.new(vars).instance_eval { binding }
166
167
  )
167
168
  end
@@ -29,8 +29,6 @@ write_files:
29
29
  -e SSL_CERT="$SSL_CERT" \
30
30
  -p 80:80 -p 443:443 kontena/haproxy:latest
31
31
  coreos:
32
- update:
33
- reboot-strategy: off
34
32
  units:
35
33
  - name: kontena-server-mongo.service
36
34
  command: start
@@ -7,6 +7,7 @@ rescue LoadError
7
7
  end
8
8
 
9
9
  require_relative 'random_name'
10
+ require_relative 'cert_helper'
10
11
  require_relative 'digital_ocean/node_provisioner'
11
12
  require_relative 'digital_ocean/node_destroyer'
12
13
  require_relative 'digital_ocean/master_provisioner'
@@ -24,13 +24,6 @@ write_files:
24
24
  nameserver 172.17.43.1
25
25
  nameserver 8.8.8.8
26
26
  nameserver 8.8.4.4
27
- - path: /opt/bin/floating_ip.sh
28
- permissions: 0755
29
- owner: root
30
- content: |
31
- #!/bin/sh
32
- IP=$(curl -s http://169.254.169.254/metadata/v1/interfaces/public/0/anchor_ipv4/address)
33
- /usr/bin/ip addr add $IP/16 dev eth0
34
27
  coreos:
35
28
  units:
36
29
  - name: 10-weave.network
@@ -41,21 +34,6 @@ coreos:
41
34
  Name=weave*
42
35
 
43
36
  [Network]
44
- - name: floating-ip.service
45
- command: start
46
- enable: true
47
- content: |
48
- [Unit]
49
- Description=floating-ip
50
- After=network-online.target
51
- Description=DigitalOcean Floating IP
52
- Documentation=https://www.digitalocean.com/community/tutorials/how-to-enable-floating-ips-on-an-older-droplet#coreos
53
- Requires=network-online.target
54
-
55
- [Service]
56
- Type=oneshot
57
- RemainAfterExit=yes
58
- ExecStart=/opt/bin/floating_ip.sh
59
37
  - name: kontena-agent.service
60
38
  command: start
61
39
  enable: true