knife-server 0.3.3 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml CHANGED
@@ -1,6 +1,16 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 1.9.3
4
- - 1.9.2
5
- - 1.8.7
6
- - ree
3
+ - 1.9.3
4
+ - 1.9.2
5
+ - ruby-head
6
+ - 1.8.7
7
+ - ree
8
+
9
+ env:
10
+ - "CHEF_VERSION=11.4.0"
11
+ - "CHEF_VERSION=10.24.0"
12
+ - "CHEF_VERSION=0.10.10"
13
+
14
+ matrix:
15
+ allow_failures:
16
+ - rvm: ruby-head
data/CHANGELOG.md CHANGED
@@ -1,7 +1,47 @@
1
- ## 0.3.4.dev (unreleased)
1
+ ## 1.0.0 / 2013-02-28
2
2
 
3
+ ### Breaking Changes
3
4
 
4
- ## 0.3.3 (December 24, 2012)
5
+ * Default Chef Server installed is the latest Chef 11 (erchef) version from
6
+ Omnibus packages via the `"chef11/omnibus"` template. All platform supported
7
+ by the Omnibus packages should work out of the box. Chef Server 10 is still
8
+ supported by setting the --bootstrap-version flag to "10". ([@fnichol][])
9
+ * WebUI is no longer configured to start up by default (--enable-webui flag
10
+ introduced to re-enable). For more details, please read
11
+ http://lists.opscode.com/sympa/arc/chef-dev/2013-02/msg00023.html.
12
+ ([@fnichol][])
13
+ * The knife-ec2 gem is no longer a direct dependency; you must add install this
14
+ gem or add it to your Gemfile in order to use `knife server bootstrap ec2`.
15
+ ([@fnichol][])
16
+
17
+ ### New features
18
+
19
+ * First class support for RHEL platform family nodes including CentOS,
20
+ Scientific, RHEL, Amazon Linux, etc. Seriously, this is huge. ([@danryan][],
21
+ [@erikh][])
22
+ * Support for installing Chef 11 (erchef) servers from Omnibus packages.
23
+ ([@fnicho][])
24
+ * Add --log-level flag to help debug bootstrap template output. ([@fnichol][])
25
+ * Support all relevant options from `Chef::Knife::Bootstrap` and
26
+ `Chef::Knife::Ec2ServerCreate` in the standalone and ec2 subcommands. This
27
+ includes --bootstrap-version, ssh options, ebs options, etc. ([@fnichol][])
28
+ * An auto mode (set via --platform auto) which will detect the node's platform
29
+ and run the appropriate template for Chef 10 servers. Currently only
30
+ supported with standalone subcommand. ([@erikh][])
31
+
32
+ ### Improvements
33
+
34
+ * Ensure config parameters are applied in the right order for Chef 10/11.
35
+ ([@fnichol][])
36
+ * Add matrix build support to TravisCI for multiple versions of Chef.
37
+ ([@fnichol][])
38
+ * Update README badges (better consistency). ([@fnichol][])
39
+ * Update CHANGLOG format headings for Vandamme/Gemnasium compatability.
40
+ ([@fnichol][])
41
+ * Update README documentation with 1.0.0 changes. ([@fnichol][])
42
+
43
+
44
+ ## 0.3.3 / 2012-12-24
5
45
 
6
46
  ### Bug fixes
7
47
 
@@ -9,7 +49,7 @@
9
49
  identity-file when `nil` is passed in. ([@erikh][])
10
50
 
11
51
 
12
- ## 0.3.2 (December 19, 2012)
52
+ ## 0.3.2 / 2012-12-19
13
53
 
14
54
  ### Improvements
15
55
 
@@ -23,7 +63,7 @@
23
63
  users of this gem. ([@fnichol][])
24
64
 
25
65
 
26
- ## 0.3.1 (December 12, 2012)
66
+ ## 0.3.1 / 2012-12-12
27
67
 
28
68
  ### Bug fixes
29
69
 
@@ -41,7 +81,7 @@
41
81
  * Update usage section in README.
42
82
 
43
83
 
44
- ## 0.3.0 (July 7, 2012)
84
+ ## 0.3.0 / 2012-07-07
45
85
 
46
86
  ### New features
47
87
 
@@ -50,7 +90,7 @@
50
90
  ([@fnichol][])
51
91
 
52
92
 
53
- ## 0.2.2 (July 4, 2012)
93
+ ## 0.2.2 / 2012-07-04
54
94
 
55
95
  ### New features
56
96
 
@@ -62,7 +102,7 @@
62
102
  * Add Code Climate badge to README. ([@fnichol][])
63
103
 
64
104
 
65
- ## 0.2.1 (July 3, 2012)
105
+ ## 0.2.1 / 2012-07-03
66
106
 
67
107
  ### Improvements
68
108
 
@@ -70,7 +110,7 @@
70
110
  http://wiki.opscode.com/display/chef/Knife+Plugins. ([@fnichol][])
71
111
 
72
112
 
73
- ## 0.2.0 (July 3, 2012)
113
+ ## 0.2.0 / 2012-07-03
74
114
 
75
115
  ### Bug fixes
76
116
 
@@ -85,10 +125,11 @@
85
125
  ([@fnichol][])
86
126
 
87
127
 
88
- ## 0.1.0 (June 23, 2012)
128
+ ## 0.1.0 / 2012-06-23
89
129
 
90
130
  The initial release.
91
131
 
132
+ [@danryan]: https://github.com/danryan
92
133
  [@erikh]: https://github.com/erikh
93
134
  [@fnichol]: https://github.com/fnichol
94
135
  [@iafonov]: https://github.com/iafonov
data/Gemfile CHANGED
@@ -5,4 +5,7 @@ gemspec
5
5
 
6
6
  group :test do
7
7
  gem 'rake', '~> 0.9'
8
+
9
+ # allow CI to override the version of Chef for matrix testing
10
+ gem 'chef', (ENV['CHEF_VERSION'] || '>= 0.10.10')
8
11
  end
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # <a name="title"></a> Knife::Server
2
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)
3
+ [![Build Status](https://secure.travis-ci.org/fnichol/knife-server.png?branch=master)](http://travis-ci.org/fnichol/knife-server)
4
+ [![Code Climate](https://codeclimate.com/github/fnichol/knife-server.png)](https://codeclimate.com/github/fnichol/knife-server)
4
5
 
5
6
  An Opscode Chef knife plugin to manage Chef Servers. Bootstrap a new Chef
6
7
  Server on Amazon's EC2 or a standalone server. Backup and restore your Chef
@@ -12,8 +13,27 @@ Follow the [installation](#installation) instructions, then you are ready
12
13
  to create your very own Chef Server running Ubuntu on Amazon's EC2 service:
13
14
 
14
15
  ```bash
15
- $ knife server bootstrap ec2 --ssh-user ubuntu \
16
- --node-name chefapalooza.example.com
16
+ $ knife server bootstrap ec2 \
17
+ --node-name chefapalooza.example.com \
18
+ --aws-access-key-id $AWS_ACCESS_KEY_ID \
19
+ --aws-secret-access-key $AWS_SECRET_ACCESS_KEY \
20
+ --region us-east-1 \
21
+ --availability-zone us-east-1b \
22
+ --image ami-de0d9eb7 \
23
+ --ssh-user ubuntu \
24
+ --flavor m1.small \
25
+ --ssh-key id_rsa-aws \
26
+ --identity-file ~/.ssh/id_rsa-aws
27
+ ```
28
+
29
+ Be sure to substitute with your access key id, secret access key, ssh key id,
30
+ and identity file (private SSH key). If you have most of these settings set
31
+ up in a `knife.rb` file, it becomes much shorter:
32
+
33
+ ```bash
34
+ $ knife server bootstrap ec2 \
35
+ --node-name chefapalooza.example.com \
36
+ --ssh-user ubuntu
17
37
  ```
18
38
 
19
39
  Or maybe you want to try out a Chef Server using [Vagrant][vagrant_site]?
@@ -23,13 +43,16 @@ $ cat <<VAGRANTFILE > Vagrantfile
23
43
  Vagrant::Config.run do |config|
24
44
  config.vm.box = "precise64"
25
45
  config.vm.box_url = "http://files.vagrantup.com/precise64.box"
26
- config.vm.network :hostonly, "192.168.33.11"
46
+ config.vm.network :hostonly, "192.168.33.10"
27
47
  config.vm.customize ["modifyvm", :id, "--memory", 2048]
28
48
  end
29
49
  VAGRANTFILE
30
50
  $ vagrant up
31
- $ knife server bootstrap standalone --ssh-user vagrant \
32
- --node-name chefapalooza.example.com --host 192.168.33.11
51
+ $ knife server bootstrap standalone \
52
+ --node-name chefapalooza.example.com \
53
+ --host 192.168.33.10 \
54
+ --ssh-user vagrant \
55
+ --ssh--password vagrant
33
56
  ```
34
57
 
35
58
  Taking a backup of all node, role, data bag, and environment data is also a
@@ -69,7 +92,14 @@ Add this line to your application's Gemfile:
69
92
  gem 'knife-server'
70
93
  ```
71
94
 
72
- And then execute:
95
+ **Note** If you want to use the `bootstrap ec2` subcommand you will need to
96
+ explicitly add this to your Gemfile with:
97
+
98
+ ```ruby
99
+ gem 'knife-ec2'
100
+ ```
101
+
102
+ Finally execute:
73
103
 
74
104
  ```bash
75
105
  $ bundle
@@ -81,6 +111,9 @@ Or install it yourself as:
81
111
  $ gem install knife-server
82
112
  ```
83
113
 
114
+ (Don't forget a `gem install knife-ec2` if using the `bootstrap ec2`
115
+ subcommand).
116
+
84
117
  Next, you **must** set up a [knife.rb configuration](#installation-knife) so
85
118
  that the shipped Knife subcommands know where to place and modify key files,
86
119
  backup directories, etc.
@@ -141,23 +174,26 @@ These subcommands will install and configure an Open Source Chef Server on
141
174
  several different clouds/environments. The high level step taken are as
142
175
  follows:
143
176
 
144
- 1. Provision or use a node and install the Chef Server software fronted by
145
- an Apache2 instance handling SSL for the API port (TCP/443) and the
146
- WebUI web application (TCP/444).
177
+ 1. Provision or use a node and install the Chef Server software. If it is a
178
+ Chef 10 server, configure an Apache2 instance to front the server instance
179
+ handling SSL for the API port (TCP/443) and the WebUI web application
180
+ (TCP/444, if enabled).
147
181
  2. Fetch the validation key from the server and install it onto the
148
182
  workstation issuing the knife subcommand. The validation key will be
149
183
  installed at the path defined in the knife `validation_key` variable.
150
184
  If a key already exists at that path a backup copy will be made in the
151
185
  same directory.
152
- 3. Create an initial admin client key called `root` in the root user's account
186
+ 3. Create an initial admin user key called `root` in the root user's account
153
187
  on the server which can be used for local administration of the Chef
154
- Server.
155
- 4. Create an admin client key with the name defined in the knife
188
+ Server. If it is a Chef 10 installation, an admin client key will be
189
+ generated instead.
190
+ 4. Create an admin user key with the name defined in the knife
156
191
  `node_name` configuration variable and install it onto the workstation
157
- issuing the knife subcommand. The client key will be installed at the
192
+ issuing the knife subcommand. The user key will be installed at the
158
193
  path defined in the knife `client_key` configuration variable. If a key
159
194
  already exists at that path a backup copy will be made in the same
160
- directory.
195
+ directory. If it is a Chef 10 installation, an admin client key will be
196
+ generated instead.
161
197
 
162
198
  **Note** `knife server bootstrap` can not be invoked directly; a subcommand
163
199
  must be selected which determines the provisioning strategy.
@@ -178,7 +214,9 @@ The platform type that will be bootstrapped. By convention a bootstrap
178
214
  template of `chef-server-#{platform}.erb` will be searched for in the
179
215
  template lookup locations (gems, .chef directory, etc.).
180
216
 
181
- The default value is `"debian"` which support Debian and Ubuntu platforms.
217
+ The default value is `"omnibus"` which supports all platforms for which Omnibus
218
+ packages have been created. For more details, visit the [Install
219
+ Chef][install_chef] page and click on *"Chef Server"*.
182
220
 
183
221
  ##### --ssh-user USER (-x)
184
222
 
@@ -194,9 +232,15 @@ The SSH port used when bootstrapping the Chef Server node.
194
232
 
195
233
  The default value is `"22"`.
196
234
 
235
+ ##### --[no-]host-key-verify
236
+
237
+ Verify and cache SSH host key when connecting.
238
+
239
+ The default value is `true`
240
+
197
241
  ##### --identity-file IDENTITY\_FILE (-i)
198
242
 
199
- The SSH identity file used for authentication.
243
+ The SSH identity file (private SSH key) used for authentication.
200
244
 
201
245
  ##### --prerelease
202
246
 
@@ -204,7 +248,9 @@ Installs a pre-release Chef gem rather than a stable release version.
204
248
 
205
249
  ##### --bootstrap-version VERSION
206
250
 
207
- The version of Chef to install.
251
+ The version of Chef to install. For Chef 11 installations (the default), you
252
+ can provide the version of Omnibus package you want installed. To install a
253
+ Chef 10 server, set this value to `"10"`.
208
254
 
209
255
  ##### --template-file TEMPLATE
210
256
 
@@ -214,11 +260,18 @@ The full path to location of template to use.
214
260
 
215
261
  Bootstraps the Chef Server using a particular bootstrap template.
216
262
 
217
- The default is `"chef-server-#{platform}"`.
263
+ The default is `"chef11/#{platform}"`.
264
+
265
+ ##### --[no-]webui-enable
266
+
267
+ Whether or no the WebUI interface will be installed and enabled.
268
+
269
+ The default value is `false`.
218
270
 
219
271
  ##### --webui-password PASSWORD
220
272
 
221
- The initial password for the WebUI admin account.
273
+ The initial password for the WebUI admin account, root user account, and
274
+ workstation user account.
222
275
 
223
276
  The default value is `"chefchef"`.
224
277
 
@@ -230,6 +283,10 @@ The default value is `"chefchef"`.
230
283
 
231
284
  ### <a name="knife-server-bootstrap-ec2"></a> knife server bootstrap ec2
232
285
 
286
+ **Note:** You must install the [knife-ec2 gem][knife-ec2] to use this
287
+ subcommand. This was done to keep the dependencies of this library lighter and
288
+ to make future cloud adapter support easier to add.
289
+
233
290
  Provisions an EC2 instance on the Amazon Web Services (AWS) cloud and sets
234
291
  up an Open Source Chef Server as described [above](#knife-server-bootstrap).
235
292
  In addition, the following steps are taken initially:
@@ -242,6 +299,16 @@ In addition, the following steps are taken initially:
242
299
 
243
300
  #### Configuration
244
301
 
302
+ This subcommand imports all relavent options from the knife-ec2 gem. For
303
+ detailed documentation relating to these options, please visit the [docs
304
+ page][docs_knife_ec2].
305
+
306
+ ##### --availability-zone ZONE (-Z)
307
+
308
+ The availability zone for the EC2 instance.
309
+
310
+ The default value is `"us-east-1b"`.
311
+
245
312
  ##### --aws-access-key-id KEY (-A)
246
313
 
247
314
  Your AWS access key ID.
@@ -254,16 +321,17 @@ Your AWS API secret access key.
254
321
 
255
322
  This option is **required**.
256
323
 
257
- ##### --region REGION
324
+ ##### --ebs-optimized
258
325
 
259
- The desired AWS region, such as `"us-east-1"` or `"us-west-2"`.
326
+ Enabled optimized EBS I/O.
260
327
 
261
- The default value is `"us-east-1"` but is strongly encouraged to be set
262
- explicitly.
328
+ ##### --ebs-size SIZE
263
329
 
264
- ##### --ssh-key KEY (-S)
330
+ The size of the EBS volume in GB, for EBS-backed instances.
265
331
 
266
- The AWS SSH key id.
332
+ ##### --ebs-no-delete-on-term
333
+
334
+ Do not delete EBS volumn on instance termination.
267
335
 
268
336
  ##### --flavor FLAVOR (-f)
269
337
 
@@ -271,21 +339,30 @@ The flavor of EC2 instance (m1.small, m1.medium, etc).
271
339
 
272
340
  The default value is `"m1.small"`.
273
341
 
342
+ ##### --groups X,Y,Z (-G)
343
+
344
+ The security groups for this EC2 instance.
345
+
346
+ The default value is `"infrastructure"`.
347
+
274
348
  ##### --image IMAGE (-I)
275
349
 
276
350
  The AMI for the EC2 instance.
277
351
 
278
- ##### --availability-zone ZONE (-Z)
352
+ ##### --region REGION
279
353
 
280
- The availability zone for the EC2 instance.
354
+ The desired AWS region, such as `"us-east-1"` or `"us-west-2"`.
281
355
 
282
- The default value is `"us-east-1b"`.
356
+ The default value is `"us-east-1"` but is strongly encouraged to be set
357
+ explicitly.
283
358
 
284
- ##### --groups X,Y,Z (-G)
359
+ ##### --subnet SUBNET-ID (-s)
285
360
 
286
- The security groups for this EC2 instance.
361
+ Create node in this Virtual Private Cloud Subnet ID (implies VPC mode).
287
362
 
288
- The default value is `"infrastructure"`.
363
+ ##### --ssh-key KEY (-S)
364
+
365
+ The AWS SSH key id.
289
366
 
290
367
  ##### --tags T=V\[,T=V,...\] (-T)
291
368
 
@@ -296,15 +373,8 @@ The resulting set will include:
296
373
  * `"Node=#{config[:chef_node_name]}"`
297
374
  * `"Role=chef_server"`
298
375
 
299
- ##### --ebs-size SIZE
300
-
301
- The size of the EBS volume in GB, for EBS-backed instances.
302
-
303
- ##### --ebs-no-delete-on-term
304
-
305
- Do not delete EBS volumn on instance termination.
306
-
307
376
  ### <a name="knife-server-bootstrap-standalone"></a> knife server bootstrap standalone
377
+
308
378
  Provisions a standalone server that is reachable on the network and sets up
309
379
  an Open Source Chef Server as described [above](#knife-server-bootstrap). You
310
380
  are responsible for providing the server so it could be a physical machine,
@@ -462,7 +532,9 @@ Apache License, Version 2.0 (see [LICENSE][license])
462
532
  [chef_bootstrap_knife_rb]: https://github.com/fnichol/chef-bootstrap-repo/blob/master/.chef/knife.rb
463
533
  [chef_bootstrap_repo]: https://github.com/fnichol/chef-bootstrap-repo/
464
534
  [docs_knife]: http://docs.opscode.com/config_rb_knife.html
535
+ [docs_knife_ec2]: http://docs.opscode.com/plugin_knife_ec2.html
465
536
  [jtimberman]: https://github.com/jtimberman
537
+ [install_chef]: http://www.opscode.com/chef/install/
466
538
  [knife-ec2]: https://github.com/opscode/knife-ec2
467
539
  [stevendanna]: https://github.com/stevendanna
468
540
  [vagrant_site]: http://vagrantup.com/
data/knife-server.gemspec CHANGED
@@ -18,7 +18,8 @@ Gem::Specification.new do |gem|
18
18
  gem.add_dependency "fog", "~> 1.3"
19
19
  gem.add_dependency "net-ssh"
20
20
  gem.add_dependency "chef", ">= 0.10.10"
21
- gem.add_dependency "knife-ec2", ">= 0.5.12"
21
+
22
+ gem.add_development_dependency "knife-ec2", ">= 0.5.12"
22
23
 
23
24
  gem.add_development_dependency "rspec", "~> 2.10"
24
25
  gem.add_development_dependency "fakefs", "~> 0.4.0"
@@ -0,0 +1,24 @@
1
+ #
2
+ # Partial: _common.sh
3
+ #
4
+ # Common functions used by the rest of the program.
5
+ #
6
+
7
+ banner() { echo "-----> $*" ; }
8
+ info() { echo " $*" ; }
9
+ warn() { echo ">>>>>> $*" >&2 ; }
10
+
11
+ report_bug() {
12
+ warn "Please file a bug report at https://github.com/fnichol/knife-server/issues"
13
+ warn " "
14
+ warn "Please detail your operating system, version and any other relevant details"
15
+ }
16
+
17
+ exists() {
18
+ if command -v $1 &>/dev/null
19
+ then
20
+ return 0
21
+ else
22
+ return 1
23
+ fi
24
+ }