knife-server 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -1,4 +1,22 @@
1
- ## 0.3.1.dev (unreleased)
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 [![Build Status](https://secure.travis-ci.org/fnichol/knife-server.png?branch=master)](http://travis-ci.org/fnichol/knife-server) [![Dependency Status](https://gemnasium.com/fnichol/knife-server.png)](https://gemnasium.com/fnichol/knife-server) [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/fnichol/knife-server)
1
+ # <a name="title"></a> Knife::Server
2
+
3
+ [![Build Status](https://secure.travis-ci.org/fnichol/knife-server.png?branch=master)](http://travis-ci.org/fnichol/knife-server) [![Code Climate](https://codeclimate.com/badge.png)](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
- sed -i "s/^.*$/$hostname/" /etc/hostname
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
- [ :chef_node_name, :ssh_user, :ssh_port, :identity_file,
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
@@ -92,7 +92,8 @@ class Chef
92
92
  :host => config[:host],
93
93
  :user => config[:ssh_user],
94
94
  :password => config[:ssh_password],
95
- :port => config[:ssh_port]
95
+ :port => config[:ssh_port],
96
+ :keys => [config[:identity_file]]
96
97
  )
97
98
  end
98
99
  end
@@ -18,6 +18,6 @@
18
18
 
19
19
  module Knife
20
20
  module Server
21
- VERSION = "0.3.0"
21
+ VERSION = "0.3.1"
22
22
  end
23
23
  end
@@ -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
- with({ :host => "grapes.wrath", :user => "root", :port => "2345" })
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.0
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-07-07 00:00:00.000000000 Z
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: &2164645600 !ruby/object:Gem::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: *2164645600
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: &2164644960 !ruby/object:Gem::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: *2164644960
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: &2164644040 !ruby/object:Gem::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: *2164644040
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: &2164643320 !ruby/object:Gem::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: *2164643320
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: &2164642520 !ruby/object:Gem::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: *2164642520
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: &2164642000 !ruby/object:Gem::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: *2164642000
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: &2164641520 !ruby/object:Gem::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: *2164641520
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.17
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