hetzner-bootstrap 1.0.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: d36bf429c8c67652f1e5887e8f99db50574d4cc8398ea718f634dc14acac31fb
4
+ data.tar.gz: df374d346e10b4af10624878a6dc0821dc30ecd106c84920fb44c449e1a3508c
5
+ SHA512:
6
+ metadata.gz: f1e5c12ee923b2798351be615267e4b76ba101fe21abf5f5ef3ef092b4a89e727ec864d051532d13b21de483c5b7c4e7f26771d9adbb0842b2e27cc5367b3bcb
7
+ data.tar.gz: 20724e0ec289640e9f40416de839f40cd8fba8a9d5eed81d42e3371afd4d856fc4fb4eb63630c5f25128c34d6c491c7dd4d2ced896acde379dc935300a72e8d9
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
data/.rubocop.yml ADDED
@@ -0,0 +1,21 @@
1
+ AllCops:
2
+ TargetRubyVersion: 3.0
3
+ NewCops: enable
4
+
5
+ Layout/LineLength:
6
+ Enabled: false
7
+
8
+ Metrics/MethodLength:
9
+ Enabled: false
10
+
11
+ Naming/FileName:
12
+ Enabled: false
13
+
14
+ Style/Documentation:
15
+ Enabled: false
16
+
17
+ Metrics/ClassLength:
18
+ Enabled: false
19
+
20
+ Metrics/AbcSize:
21
+ Enabled: false
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 3.0.0
data/Gemfile CHANGED
@@ -1,4 +1,6 @@
1
- source "http://rubygems.org"
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in hetzner.gemspec
4
6
  gemspec
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2011 Moriz GmbH, Roland Moriz, http://moriz.de/
1
+ Copyright (c) 2019 Moriz GmbH, Roland Moriz, http://moriz.de/
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -3,6 +3,8 @@ hetzner-bootstrap
3
3
 
4
4
  hetzner-bootstrap allows you to bootstrap a provisioned EQ Server from hetzner.de
5
5
 
6
+ [![Gem Version](https://badge.fury.io/rb/hetzner-bootstrap.png)](http://badge.fury.io/rb/hetzner-bootstrap)
7
+
6
8
  What it does:
7
9
  -------------
8
10
 
@@ -38,6 +40,117 @@ Example:
38
40
 
39
41
  Warning: All existing data on the system will be lost!
40
42
 
43
+
44
+
45
+ ```ruby
46
+
47
+ #!/usr/bin/env ruby
48
+ require 'hetzner-bootstrap'
49
+
50
+ bs = Hetzner::Bootstrap.new(api: Hetzner::API.new(ENV['ROBOT_USER'], ENV['ROBOT_PASSWORD']))
51
+
52
+ template = <<EOT
53
+ # see https://github.com/hetzneronline/installimage/
54
+ DRIVE1 /dev/sda
55
+ DRIVE2 /dev/sdb
56
+
57
+ ## activate software RAID? < 0 | 1 >
58
+ SWRAID 1
59
+
60
+ ## Choose the level for the software RAID < 0 | 1 >
61
+ SWRAIDLEVEL 1
62
+
63
+ ## which bootloader should be used? < lilo | grub >
64
+ BOOTLOADER grub
65
+
66
+ HOSTNAME <%= hostname %>
67
+
68
+ ## PART <mountpoint/lvm> <filesystem/VG> <size in MB>
69
+ ##
70
+ ## * <mountpoint/lvm> mountpoint for this filesystem *OR* keyword 'lvm'
71
+ ## to use this PART as volume group (VG) for LVM
72
+ ## * <filesystem/VG> can be ext2, ext3, reiserfs, xfs, swap *OR* name
73
+ ## of the LVM volume group (VG), if this PART is a VG
74
+ ## * <size> you can use the keyword 'all' to assign all the
75
+ ## remaining space of the drive to the *last* partition.
76
+ ## you can use M/G/T for unit specification in MIB/GIB/TIB
77
+ ##
78
+ ## notes:
79
+ ## - extended partitions are created automatically
80
+ ## - '/boot' cannot be on a xfs filesystem!
81
+ ## - '/boot' cannot be on LVM!
82
+ ## - when using software RAID 0, you need a '/boot' partition
83
+
84
+ PART /boot ext3 1G
85
+ PART lvm host 75G
86
+ PART lvm guest all
87
+
88
+ #LV <VG> <name> <mount> <filesystem> <size>
89
+ LV host root / ext4 50G
90
+ LV host swap swap swap 5G
91
+
92
+
93
+ ## ========================
94
+ ## OPERATING SYSTEM IMAGE:
95
+ ## ========================
96
+
97
+ ## full path to the operating system image
98
+ ## supported image sources: local dir, ftp, http, nfs
99
+ ## supported image types: tar, tar.gz, tar.bz, tar.bz2, tgz, tbz
100
+ ## examples:
101
+ #
102
+ # local: /path/to/image/filename.tar.gz
103
+ # ftp: ftp://<user>:<password>@hostname/path/to/image/filename.tar.bz2
104
+ # http: http://<user>:<password>@hostname/path/to/image/filename.tbz
105
+ # https: https://<user>:<password>@hostname/path/to/image/filename.tbz
106
+ # nfs: hostname:/path/to/image/filename.tgz
107
+
108
+ # Default images provided by hetzner as of October 2014:
109
+ # Archlinux-2014-64-minmal.tar.gz
110
+ # CentOS-65-32-minimal.tar.gz
111
+ # CentOS-65-64-cpanel.tar.gz
112
+ # CentOS-65-64-minimal.tar.gz
113
+ # CentOS-70-64-minimal.tar.gz
114
+ # Debian-76-wheezy-32-minimal.tar.gz
115
+ # Debian-76-wheezy-64-LAMP.tar.gz
116
+ # Debian-76-wheezy-64-minimal.tar.gz
117
+ # openSUSE-131-64-minimal.tar.gz
118
+ # Ubuntu-1204-precise-64-minimal.tar.gz
119
+ # Ubuntu-1404-trusty-64-minimal.tar.gz
120
+
121
+
122
+ IMAGE /root/images/Ubuntu-1404-trusty-64-minimal.tar.gz
123
+
124
+ EOT
125
+
126
+ # the post_install hook is a great place to setup further software/system provisioning
127
+ #
128
+ post_install = <<EOT
129
+ # knife bootstrap <%= ip %> -N <%= hostname %> "role[base],role[kvm_host]"
130
+ EOT
131
+
132
+ bs << {
133
+ ip: '1.2.3.4',
134
+ template: template, # string will be parsed by erubis
135
+ hostname: 'server100.example.com', # will be used for setting the systems' hostname
136
+ public_keys: "~/.ssh/id_dsa.pub", # will be copied over to the freshly bootstrapped system
137
+ post_install: post_install # will be called locally at the end and can be used e.g. to run a chef bootstrap
138
+ }
139
+
140
+ bs << {
141
+ ip: '1.2.3.5',
142
+ template: template, # string will be parsed by erubis
143
+ hostname: 'server101.example.com', # will be used for setting the systems' hostname
144
+ public_keys: "~/.ssh/id_dsa.pub", # will be copied over to the freshly bootstrapped system
145
+ post_install: post_install # will be called locally at the end and can be used e.g. to run a chef bootstrap
146
+ }
147
+
148
+ ...
149
+ bs.bootstrap!
150
+
151
+
152
+ ```
153
+
41
154
  Installation:
42
155
  -------------
43
156
 
@@ -47,20 +160,13 @@ Warnings:
47
160
  ---------
48
161
 
49
162
  * All existing data on the system will be wiped on bootstrap!
50
- * This is not an official Hetzner AG project.
51
- * The gem and the author are not related to Hetzner AG!
163
+ * This is not an official Hetzner Online GmbH project.
164
+ * The gem and the author are not related to Hetzner Online GmbH !
52
165
 
53
166
  **Use at your very own risk. Satisfaction is NOT guaranteed.**
54
167
 
55
- Commercial Support available through:
56
- -------------------------------------
57
-
58
- [![Moriz GmbH](https://moriz.de/images/logo.png)](http://moriz.de/)
59
-
60
- [Moriz GmbH, München](http://moriz.de/)
61
-
62
168
 
63
169
  Copyright
64
170
  ---------
65
171
 
66
- Copyright (c) 2011 Moriz GmbH, Roland Moriz. See LICENSE file for details.
172
+ Copyright © 2019 [Roland Moriz](https://roland.io), [Moriz GmbH](https://moriz.de/)
data/Rakefile CHANGED
@@ -1,2 +1,4 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bundler'
2
4
  Bundler::GemHelper.install_tasks
data/example.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
- require "rubygems"
3
- require "hetzner-bootstrap"
2
+ # frozen_string_literal: true
3
+
4
+ require 'rubygems'
5
+ require 'hetzner-bootstrap'
4
6
 
5
7
  # get your API login from Hetzner's customer panel at: https://robot.your-server.de/
6
8
  # assign env variables:
@@ -10,105 +12,102 @@ require "hetzner-bootstrap"
10
12
  # rbenv-tip: checkout rbenv-vars, it's awesome!
11
13
  # https://github.com/sstephenson/rbenv-vars/
12
14
 
13
- bs = Hetzner::Bootstrap.new :api => Hetzner::API.new(ENV['ROBOT_USER'], ENV['ROBOT_PASSWORD'])
15
+ bs = Hetzner::Bootstrap.new(api: Hetzner::API.new(
16
+ ENV['ROBOT_USER'],
17
+ ENV['ROBOT_PASSWORD']
18
+ ))
14
19
 
15
20
  # 2 disks, software raid 1, etc.
16
- template = <<EOT
17
- DRIVE1 /dev/sda
18
- DRIVE2 /dev/sdb
19
- FORMATDRIVE2 0
20
-
21
- ## ===============
22
- ## SOFTWARE RAID:
23
- ## ===============
24
-
25
- ## activate software RAID? < 0 | 1 >
26
- SWRAID 1
27
-
28
- ## Choose the level for the software RAID < 0 | 1 >
29
- SWRAIDLEVEL 1
30
-
31
- ## which bootloader should be used? < lilo | grub >
32
- BOOTLOADER grub
33
-
34
- HOSTNAME <%= hostname %>
35
-
36
- ## PART <mountpoint/lvm> <filesystem/VG> <size in MB>
37
- ##
38
- ## * <mountpoint/lvm> mountpoint for this filesystem *OR* keyword 'lvm'
39
- ## to use this PART as volume group (VG) for LVM
40
- ## * <filesystem/VG> can be ext2, ext3, reiserfs, xfs, swap *OR* name
41
- ## of the LVM volume group (VG), if this PART is a VG
42
- ## * <size> you can use the keyword 'all' to assign all the
43
- ## remaining space of the drive to the *last* partition.
44
- ## you can use M/G/T for unit specification in MIB/GIB/TIB
45
- ##
46
- ## notes:
47
- ## - extended partitions are created automatically
48
- ## - '/boot' cannot be on a xfs filesystem!
49
- ## - '/boot' cannot be on LVM!
50
- ## - when using software RAID 0, you need a '/boot' partition
51
-
52
- PART /boot ext2 1G
53
- PART lvm host 75G
54
- PART lvm guest all
55
-
56
- #LV <VG> <name> <mount> <filesystem> <size>
57
- LV host root / ext3 50G
58
- LV host swap swap swap 5G
59
-
60
-
61
- ## ========================
62
- ## OPERATING SYSTEM IMAGE:
63
- ## ========================
64
-
65
- ## full path to the operating system image
66
- ## supported image sources: local dir, ftp, http, nfs
67
- ## supported image types: tar, tar.gz, tar.bz, tar.bz2, tgz, tbz
68
- ## examples:
69
- #
70
- # local: /path/to/image/filename.tar.gz
71
- # ftp: ftp://<user>:<password>@hostname/path/to/image/filename.tar.bz2
72
- # http: http://<user>:<password>@hostname/path/to/image/filename.tbz
73
- # https: https://<user>:<password>@hostname/path/to/image/filename.tbz
74
- # nfs: hostname:/path/to/image/filename.tgz
75
-
76
- # Default images provided by hetzner as of August 2012:
77
- # CentOS-58-32-minimal.tar.gz
78
- # CentOS-58-64-minimal.tar.gz
79
- # CentOS-62-32-minimal.tar.gz
80
- # CentOS-62-64-cpanel.tar.gz
81
- # CentOS-62-64-minimal.tar.gz
82
- # CentOS-63-32-minimal.tar.gz
83
- # CentOS-63-64-cpanel.tar.gz
84
- # CentOS-63-64-minimal.tar.gz
85
- # Debian-60-squeeze-32-minimal.tar.gz
86
- # Debian-60-squeeze-64-LAMP.tar.gz
87
- # Debian-60-squeeze-64-minimal.tar.gz
88
- # openSUSE-121-32-minimal.tar.gz
89
- # openSUSE-121-64-minimal.tar.gz
90
- # Ubuntu-1004-lucid-32-minimal.tar.gz
91
- # Ubuntu-1004-lucid-64-minimal.tar.gz
92
- # Ubuntu-1204-precise-32-minimal.tar.gz
93
- # Ubuntu-1204-precise-64-minimal.tar.gz
94
-
95
-
96
- IMAGE /root/images/Ubuntu-1204-precise-64-minimal.tar.gz
97
-
98
- EOT
99
-
100
- # the post_install hook is a great place to setup further software/system provisioning
21
+ template = <<~END_OF_TEMPLATE
22
+ DRIVE1 /dev/sda
23
+ DRIVE2 /dev/sdb
24
+ FORMATDRIVE2 0
25
+
26
+ ## ===============
27
+ ## SOFTWARE RAID:
28
+ ## ===============
29
+
30
+ ## activate software RAID? < 0 | 1 >
31
+ SWRAID 1
32
+
33
+ ## Choose the level for the software RAID < 0 | 1 >
34
+ SWRAIDLEVEL 1
35
+
36
+ ## which bootloader should be used? < lilo | grub >
37
+ BOOTLOADER grub
38
+
39
+ HOSTNAME <%= hostname %>
40
+
41
+ ## PART <mountpoint/lvm> <filesystem/VG> <size in MB>
42
+ ##
43
+ ## * <mountpoint/lvm> mountpoint for this filesystem *OR* keyword 'lvm'
44
+ ## to use this PART as volume group (VG) for LVM
45
+ ## * <filesystem/VG> can be ext2, ext3, reiserfs, xfs, swap *OR* name
46
+ ## of the LVM volume group (VG), if this PART is a VG
47
+ ## * <size> you can use the keyword 'all' to assign all the
48
+ ## remaining space of the drive to the *last* partition.
49
+ ## you can use M/G/T for unit specification in MIB/GIB/TIB
50
+ ##
51
+ ## notes:
52
+ ## - extended partitions are created automatically
53
+ ## - '/boot' cannot be on a xfs filesystem!
54
+ ## - '/boot' cannot be on LVM!
55
+ ## - when using software RAID 0, you need a '/boot' partition
56
+
57
+ PART /boot ext2 1G
58
+ PART lvm host 75G
59
+ PART lvm guest all
60
+
61
+ #LV <VG> <name> <mount> <filesystem> <size>
62
+ LV host root / ext3 50G
63
+ LV host swap swap swap 5G
64
+
65
+
66
+ ## ========================
67
+ ## OPERATING SYSTEM IMAGE:
68
+ ## ========================
69
+
70
+ ## full path to the operating system image
71
+ ## supported image sources: local dir, ftp, http, nfs
72
+ ## supported image types: tar, tar.gz, tar.bz, tar.bz2, tgz, tbz
73
+ ## examples:
74
+ #
75
+ # local: /path/to/image/filename.tar.gz
76
+ # ftp: ftp://<user>:<password>@hostname/path/to/image/filename.tar.bz2
77
+ # http: http://<user>:<password>@hostname/path/to/image/filename.tbz
78
+ # https: https://<user>:<password>@hostname/path/to/image/filename.tbz
79
+ # nfs: hostname:/path/to/image/filename.tgz
80
+
81
+ # Default images provided by hetzner as of October 2014:
82
+ # Archlinux-2014-64-minmal.tar.gz
83
+ # CentOS-65-32-minimal.tar.gz
84
+ # CentOS-65-64-cpanel.tar.gz
85
+ # CentOS-65-64-minimal.tar.gz
86
+ # CentOS-70-64-minimal.tar.gz
87
+ # Debian-76-wheezy-32-minimal.tar.gz
88
+ # Debian-76-wheezy-64-LAMP.tar.gz
89
+ # Debian-76-wheezy-64-minimal.tar.gz
90
+ # openSUSE-131-64-minimal.tar.gz
91
+ # Ubuntu-1204-precise-64-minimal.tar.gz
92
+ # Ubuntu-1404-trusty-64-minimal.tar.gz
93
+
94
+
95
+ IMAGE /root/images/Ubuntu-1204-precise-64-minimal.tar.gz
96
+
97
+ END_OF_TEMPLATE
98
+
99
+ # the post_install hook is a great place to setup further
100
+ # software/system provisioning
101
101
  #
102
- post_install = <<EOT
102
+ post_install = <<END_OF_POST_INSTALL
103
103
  # knife bootstrap <%= ip %> -N <%= hostname %> "role[base],role[kvm_host]"
104
- EOT
104
+ END_OF_POST_INSTALL
105
105
 
106
106
  # duplicate entry for each system
107
- bs << { :ip => "1.2.3.4",
108
- :template => template, # string will be parsed by erubis
109
- :hostname => 'server100.example.com', # will be used for setting the systems' hostname
110
- :public_keys => "~/.ssh/id_dsa.pub", # will be copied over to the freshly bootstrapped system
111
- :post_install => post_install } # will be called locally at the end and can be used e.g. to run a chef bootstrap
107
+ bs << { ip: '1.2.3.4',
108
+ template: template, # string will be parsed by erubis
109
+ hostname: 'server100', # sets hostname
110
+ public_keys: '~/.ssh/id_dsa.pub', # will be copied to your system
111
+ post_install: post_install } # will be executed *locally* at the end
112
112
 
113
113
  bs.bootstrap!
114
-
@@ -1,26 +1,32 @@
1
- # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
3
- require "hetzner/bootstrap/version"
1
+ # frozen_string_literal: true
2
+
3
+ $LOAD_PATH.push File.expand_path('lib', __dir__)
4
+ require 'hetzner/bootstrap/version'
4
5
 
5
6
  Gem::Specification.new do |s|
6
- s.name = "hetzner-bootstrap"
7
+ s.name = 'hetzner-bootstrap'
7
8
  s.version = Hetzner::Bootstrap::VERSION
8
9
  s.platform = Gem::Platform::RUBY
9
- s.authors = ["Roland Moriz"]
10
- s.email = ["roland@moriz.de"]
11
- s.homepage = "http://moriz.de/opensource/hetzner-api"
12
- s.summary = %q{Easy bootstrapping of hetzner.de rootservers using hetzner-api}
13
- s.description = %q{Easy bootstrapping of hetzner.de rootservers using hetzner-api}
10
+ s.authors = ['Roland Moriz']
11
+ s.email = ['roland@moriz.de']
12
+ s.homepage = 'https://github.com/rmoriz/hetzner-bootstrap'
13
+ s.summary = 'Easy bootstrapping of hetzner.de rootservers using hetzner-api'
14
+ s.description = 'Easy bootstrapping of hetzner.de rootservers using hetzner-api'
14
15
 
15
- s.add_dependency 'hetzner-api', '>= 1.0.1'
16
- s.add_dependency 'net-ssh', '>= 2.1.0'
17
- s.add_dependency 'erubis', '>= 2.6.6'
16
+ s.required_ruby_version = '~> 3.0'
17
+ s.add_dependency 'erubis', '>= 2.7.0'
18
+ s.add_dependency 'hetzner-api', '>= 1.1.0'
19
+ s.add_dependency 'net-ssh', '~> 6.1'
20
+ s.add_dependency 'rexml'
18
21
 
19
- s.add_development_dependency "rspec", ">= 2.4.0"
20
- s.add_development_dependency "rake"
22
+ s.add_development_dependency 'rake'
23
+ s.add_development_dependency 'rspec', '~> 3.4.0'
24
+ s.add_development_dependency 'rubocop', '~> 1.10'
25
+ s.add_development_dependency 'rubocop-rake'
26
+ s.add_development_dependency 'rubocop-rspec'
21
27
 
22
28
  s.files = `git ls-files`.split("\n")
23
29
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
24
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
25
- s.require_paths = ["lib"]
30
+ s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
31
+ s.require_paths = ['lib']
26
32
  end