knife-server 0.3.0 → 0.3.1
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.
- data/CHANGELOG.md +23 -2
- data/README.md +19 -2
- data/lib/chef/knife/bootstrap/chef-server-debian.erb +1 -1
- data/lib/chef/knife/server_bootstrap_ec2.rb +3 -4
- data/lib/chef/knife/server_bootstrap_standalone.rb +2 -1
- data/lib/knife/server/version.rb +1 -1
- data/spec/chef/knife/server_bootstrap_ec2_spec.rb +4 -2
- data/spec/chef/knife/server_bootstrap_standalone_spec.rb +17 -2
- metadata +52 -17
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,22 @@
|
|
1
|
-
## 0.3.
|
1
|
+
## 0.3.2.dev (unreleased)
|
2
|
+
|
3
|
+
|
4
|
+
## 0.3.1 (December 12, 2012)
|
5
|
+
|
6
|
+
### Bug fixes
|
7
|
+
|
8
|
+
* Pull request [#7](https://github.com/fnichol/knife-server/pull/11): Fix
|
9
|
+
identity-file flag for bootstrapping. ([@xdissent][])
|
10
|
+
* Pull request [#11](https://github.com/fnichol/knife-server/pull/11): Fix
|
11
|
+
identity-file flag for EC2 bootstrapping. ([@erikh][])
|
12
|
+
* Pull request [#8](https://github.com/fnichol/knife-server/pull/8): Merge
|
13
|
+
server config to Ec2ServerCreate config. ([@stormsilver][])
|
14
|
+
|
15
|
+
### Improvements
|
16
|
+
|
17
|
+
* Pull request [#3](https://github.com/fnichol/knife-server/pull/3): Set
|
18
|
+
server hostname even if /etc/hostname is not present. ([@iafonov][])
|
19
|
+
* Update usage section in README.
|
2
20
|
|
3
21
|
|
4
22
|
## 0.3.0 (July 7, 2012)
|
@@ -49,5 +67,8 @@
|
|
49
67
|
|
50
68
|
The initial release.
|
51
69
|
|
70
|
+
[@erikh]: https://github.com/erikh
|
52
71
|
[@fnichol]: https://github.com/fnichol
|
53
|
-
|
72
|
+
[@iafonov]: https://github.com/iafonov
|
73
|
+
[@stormsilver]: https://github.com/stormsilver
|
74
|
+
[@xdissent]: https://github.com/xdissent
|
data/README.md
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
-
# <a name="title"></a> Knife::Server
|
1
|
+
# <a name="title"></a> Knife::Server
|
2
|
+
|
3
|
+
[](http://travis-ci.org/fnichol/knife-server) [](https://codeclimate.com/github/fnichol/knife-server)
|
2
4
|
|
3
5
|
An Opscode Chef knife plugin to manage Chef Servers. Bootstrap a new Chef
|
4
6
|
Server on Amazon's EC2 or a standalone server. Backup and restore your Chef
|
@@ -43,6 +45,20 @@ Restoring all that data isn't too hard either:
|
|
43
45
|
$ knife server restore
|
44
46
|
```
|
45
47
|
|
48
|
+
Let's say you have all your roles, environments, and data bags in a Git
|
49
|
+
repository (remember, Infrastructure as Code) and you want to build a
|
50
|
+
new Chef Server. Try this:
|
51
|
+
|
52
|
+
```bash
|
53
|
+
$ knife server backup nodes --backup-dir /tmp/old_server
|
54
|
+
$ knife server bootstrap ec2 --ssh-user ubuntu \
|
55
|
+
--node-name chef.example.com
|
56
|
+
$ knife server restore nodes --backup-dir /tmp/old_server
|
57
|
+
```
|
58
|
+
|
59
|
+
Now fire up your cookbooks, roles, environments, and data bags. Good to go!
|
60
|
+
Well except for old client keys on your nodes, but this is being looked into.
|
61
|
+
|
46
62
|
See [below](#subcommands) for more details.
|
47
63
|
|
48
64
|
## <a name="installation"></a> Installation
|
@@ -379,7 +395,8 @@ When no component types are specified, all will be selected for restore.
|
|
379
395
|
This is equivalent to invoking:
|
380
396
|
|
381
397
|
```bash
|
382
|
-
$ knife server restore nodes roles environments data_bags
|
398
|
+
$ knife server restore nodes roles environments data_bags \
|
399
|
+
--backup-dir /my/backup/dir
|
383
400
|
```
|
384
401
|
|
385
402
|
##### --backup-dir DIR (-D)
|
@@ -29,7 +29,7 @@ set_hostname_for_ubuntu() {
|
|
29
29
|
local host_first="$(echo $hostname | cut -d . -f 1)"
|
30
30
|
local hostnames="${hostname} ${host_first}"
|
31
31
|
|
32
|
-
|
32
|
+
echo $hostname > /etc/hostname
|
33
33
|
if egrep -q "^127.0.1.1[[:space:]]" /etc/hosts >/dev/null ; then
|
34
34
|
sed -i "s/^\(127[.]0[.]1[.]1[[:space:]]\+\)/\1${hostnames} /" \
|
35
35
|
/etc/hosts
|
@@ -112,9 +112,7 @@ class Chef
|
|
112
112
|
ENV['WEBUI_PASSWORD'] = config[:webui_password]
|
113
113
|
ENV['AMQP_PASSWORD'] = config[:amqp_password]
|
114
114
|
bootstrap = Chef::Knife::Ec2ServerCreate.new
|
115
|
-
|
116
|
-
:security_groups, :ebs_size, :webui_password, :amqp_password
|
117
|
-
].each { |attr| bootstrap.config[attr] = config[attr] }
|
115
|
+
bootstrap.config.merge!(config)
|
118
116
|
bootstrap.config[:tags] = bootstrap_tags
|
119
117
|
bootstrap.config[:distro] = bootstrap_distro
|
120
118
|
bootstrap
|
@@ -162,7 +160,8 @@ class Chef
|
|
162
160
|
::Knife::Server::SSH.new(
|
163
161
|
:host => server_dns_name,
|
164
162
|
:user => config[:ssh_user],
|
165
|
-
:port => config[:ssh_port]
|
163
|
+
:port => config[:ssh_port],
|
164
|
+
:keys => [config[:identity_file]]
|
166
165
|
)
|
167
166
|
end
|
168
167
|
end
|
data/lib/knife/server/version.rb
CHANGED
@@ -252,8 +252,10 @@ describe Chef::Knife::ServerBootstrapEc2 do
|
|
252
252
|
end
|
253
253
|
|
254
254
|
it "installs a new validation.pem key from the server" do
|
255
|
-
Knife::Server::SSH.should_receive(:new).
|
256
|
-
|
255
|
+
Knife::Server::SSH.should_receive(:new).with({
|
256
|
+
:host => "grapes.wrath", :user => "root",
|
257
|
+
:port => "2345", :keys => ["~/.ssh/mykey_dsa"]
|
258
|
+
})
|
257
259
|
Knife::Server::Credentials.should_receive(:new).
|
258
260
|
with(ssh, "/etc/chef/validation.pem")
|
259
261
|
credentials.should_receive(:install_validation_key)
|
@@ -206,7 +206,7 @@ describe Chef::Knife::ServerBootstrapStandalone do
|
|
206
206
|
it "creates an SSH connection without a password" do
|
207
207
|
Knife::Server::SSH.should_receive(:new).with({
|
208
208
|
:host => "192.168.0.1", :port => "2345",
|
209
|
-
:user => "root", :password => nil
|
209
|
+
:user => "root", :password => nil, :keys => [nil]
|
210
210
|
})
|
211
211
|
|
212
212
|
@knife.run
|
@@ -221,7 +221,22 @@ describe Chef::Knife::ServerBootstrapStandalone do
|
|
221
221
|
it "creates an SSH connection with a password" do
|
222
222
|
Knife::Server::SSH.should_receive(:new).with({
|
223
223
|
:host => "192.168.0.1", :port => "2345",
|
224
|
-
:user => "root", :password => "snoopy"
|
224
|
+
:user => "root", :password => "snoopy", :keys => [nil]
|
225
|
+
})
|
226
|
+
|
227
|
+
@knife.run
|
228
|
+
end
|
229
|
+
end
|
230
|
+
|
231
|
+
context "when an identity file is provided" do
|
232
|
+
before do
|
233
|
+
@knife.config[:identity_file] = "poop.pem"
|
234
|
+
end
|
235
|
+
|
236
|
+
it "creates an SSH connection with an identity file" do
|
237
|
+
Knife::Server::SSH.should_receive(:new).with({
|
238
|
+
:host => "192.168.0.1", :port => "2345",
|
239
|
+
:user => "root", :password => nil, :keys => ["poop.pem"]
|
225
240
|
})
|
226
241
|
|
227
242
|
@knife.run
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: knife-server
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-12-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: fog
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: '1.3'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '1.3'
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: net-ssh
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ! '>='
|
@@ -32,10 +37,15 @@ dependencies:
|
|
32
37
|
version: '0'
|
33
38
|
type: :runtime
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: chef
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
51
|
- - ! '>='
|
@@ -43,10 +53,15 @@ dependencies:
|
|
43
53
|
version: 0.10.10
|
44
54
|
type: :runtime
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.10.10
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
63
|
name: knife-ec2
|
49
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
50
65
|
none: false
|
51
66
|
requirements:
|
52
67
|
- - ~>
|
@@ -54,10 +69,15 @@ dependencies:
|
|
54
69
|
version: 0.5.12
|
55
70
|
type: :runtime
|
56
71
|
prerelease: false
|
57
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 0.5.12
|
58
78
|
- !ruby/object:Gem::Dependency
|
59
79
|
name: rspec
|
60
|
-
requirement:
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
61
81
|
none: false
|
62
82
|
requirements:
|
63
83
|
- - ~>
|
@@ -65,10 +85,15 @@ dependencies:
|
|
65
85
|
version: '2.10'
|
66
86
|
type: :development
|
67
87
|
prerelease: false
|
68
|
-
version_requirements:
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ~>
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '2.10'
|
69
94
|
- !ruby/object:Gem::Dependency
|
70
95
|
name: fakefs
|
71
|
-
requirement:
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
72
97
|
none: false
|
73
98
|
requirements:
|
74
99
|
- - ~>
|
@@ -76,10 +101,15 @@ dependencies:
|
|
76
101
|
version: 0.4.0
|
77
102
|
type: :development
|
78
103
|
prerelease: false
|
79
|
-
version_requirements:
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ~>
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 0.4.0
|
80
110
|
- !ruby/object:Gem::Dependency
|
81
111
|
name: timecop
|
82
|
-
requirement:
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
83
113
|
none: false
|
84
114
|
requirements:
|
85
115
|
- - ~>
|
@@ -87,7 +117,12 @@ dependencies:
|
|
87
117
|
version: 0.3.5
|
88
118
|
type: :development
|
89
119
|
prerelease: false
|
90
|
-
version_requirements:
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ~>
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: 0.3.5
|
91
126
|
description: Chef Knife plugin to bootstrap Chef Servers
|
92
127
|
email:
|
93
128
|
- fnichol@nichol.ca
|
@@ -142,7 +177,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
142
177
|
version: '0'
|
143
178
|
requirements: []
|
144
179
|
rubyforge_project:
|
145
|
-
rubygems_version: 1.8.
|
180
|
+
rubygems_version: 1.8.24
|
146
181
|
signing_key:
|
147
182
|
specification_version: 3
|
148
183
|
summary: Chef Knife plugin to bootstrap Chef Servers
|