knife-block 0.0.6 → 0.0.7
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/README.md +7 -4
- data/lib/chef/knife/block.rb +25 -1
- data/lib/knife-block/version.rb +1 -1
- data/libpeerconnection.log +0 -0
- metadata +3 -2
data/README.md
CHANGED
@@ -6,7 +6,7 @@ The knife block plugin has been created to enable the use of multiple knife.rb f
|
|
6
6
|
|
7
7
|
The premise is that you have a "block" in which you store all your "knives" and you can choose the one best suited to the task.
|
8
8
|
|
9
|
-
## Requirements
|
9
|
+
## Requirements
|
10
10
|
|
11
11
|
At present, knife-block requires ruby 1.9.2 or above. This is owing to the use of "Dir.home()" to find a user's home directory.
|
12
12
|
|
@@ -18,7 +18,7 @@ At present, knife-block requires ruby 1.9.2 or above. This is owing to the use
|
|
18
18
|
|
19
19
|
Knife looks for knife.rb in ~/.chef - all this script does is create a symlink from the required configuration to knife.rb so that knife can act on the appropriate server.
|
20
20
|
|
21
|
-
Create a knife-<service_name>.rb configuration file in your ~/.chef directory for each Chef server that you wish to connect to.
|
21
|
+
Create a knife-<service_name>.rb configuration file in your ~/.chef directory for each Chef server that you wish to connect to.
|
22
22
|
|
23
23
|
**Please note - this script will check to see if knife.rb exists and whether it is a symlink or not.**
|
24
24
|
|
@@ -28,14 +28,14 @@ Create a knife-<service_name>.rb configuration file in your ~/.chef directory fo
|
|
28
28
|
(This command will also tell you which server is currently selected)
|
29
29
|
|
30
30
|
knife block list
|
31
|
-
|
31
|
+
|
32
32
|
The available chef servers are:
|
33
33
|
* local-testing [ Currently Selected ]
|
34
34
|
* opscode-hosted-chef
|
35
35
|
|
36
36
|
#### Change to a new server
|
37
37
|
knife block use <server_name>
|
38
|
-
|
38
|
+
|
39
39
|
You are asking to change from local-testing to opscode-hosted-chef. Are you sure? (Y/N) y
|
40
40
|
The knife configuration has been updated to use opscode-hosted-chef
|
41
41
|
|
@@ -45,6 +45,9 @@ Create a knife-<service_name>.rb configuration file in your ~/.chef directory fo
|
|
45
45
|
knife block new <friendlyname>
|
46
46
|
|
47
47
|
|
48
|
+
### Berkshelf integration
|
49
|
+
Knife block supports Berkshelf, however, the berkshelf config files must be manually created and named "config-<block>.json" and put in the Berkshelf directory (typically ~/.berkshelf). In the future, these files could be automatically created by knife block.
|
50
|
+
|
48
51
|
|
49
52
|
These knife plugins are supplied without any warranty or guarantees regarding suitability for purpose.
|
50
53
|
|
data/lib/chef/knife/block.rb
CHANGED
@@ -22,9 +22,16 @@ module GreenAndSecure
|
|
22
22
|
end
|
23
23
|
module_function :printable_server
|
24
24
|
|
25
|
+
# Returns path to berkshelf
|
26
|
+
def berkshelf_path
|
27
|
+
@berkshelf_path ||= ENV['BERKSHELF_PATH'] || File.expand_path('~/.berkshelf')
|
28
|
+
end
|
29
|
+
module_function :berkshelf_path
|
30
|
+
|
25
31
|
class Block < Chef::Knife
|
26
32
|
banner "knife block"
|
27
33
|
def run
|
34
|
+
GreenAndSecure::check_block_setup
|
28
35
|
list = GreenAndSecure::BlockList.new
|
29
36
|
if name_args.size == 1 and list.servers.include?(name_args[0])
|
30
37
|
use = GreenAndSecure::BlockUse.new
|
@@ -45,7 +52,7 @@ module GreenAndSecure
|
|
45
52
|
@current_server = nil
|
46
53
|
def current_server
|
47
54
|
GreenAndSecure::check_block_setup
|
48
|
-
|
55
|
+
|
49
56
|
@current_server ||= if File.exists?(::Chef::Knife::chef_config_dir+"/knife.rb") then
|
50
57
|
GreenAndSecure::printable_server(File.readlink(::Chef::Knife::chef_config_dir+"/knife.rb"))
|
51
58
|
else
|
@@ -63,6 +70,7 @@ module GreenAndSecure
|
|
63
70
|
|
64
71
|
# list the available environments
|
65
72
|
def run
|
73
|
+
GreenAndSecure::check_block_setup
|
66
74
|
puts "The available chef servers are:"
|
67
75
|
servers.each do |server|
|
68
76
|
if server == current_server then
|
@@ -94,6 +102,19 @@ module GreenAndSecure
|
|
94
102
|
File.symlink(::Chef::Knife::chef_config_dir+"/knife-#{new_server}.rb",
|
95
103
|
::Chef::Knife::chef_config_dir+"/knife.rb")
|
96
104
|
puts "The knife configuration has been updated to use #{new_server}"
|
105
|
+
|
106
|
+
# update berkshelf
|
107
|
+
berks = GreenAndSecure::berkshelf_path+"/config.json"
|
108
|
+
berks_new = GreenAndSecure::berkshelf_path+"/config-#{new_server}.json"
|
109
|
+
if File.exists?(berks_new)
|
110
|
+
if File.exists?(berks)
|
111
|
+
File.unlink(berks)
|
112
|
+
end
|
113
|
+
File.symlink(berks_new, berks)
|
114
|
+
puts "The berkshelf configuration has been updated to use #{new_server}"
|
115
|
+
else
|
116
|
+
puts "Berkshelf configuration for #{new_server} not found"
|
117
|
+
end
|
97
118
|
else
|
98
119
|
puts "Knife configuration for #{new_server} not found, aborting switch"
|
99
120
|
end
|
@@ -111,12 +132,15 @@ module GreenAndSecure
|
|
111
132
|
end
|
112
133
|
|
113
134
|
@chef_server = ui.ask_question("Please enter the url to your Chef Server: ")
|
135
|
+
@client_name = ui.ask_question("Please enter the name of the Chef client: ")
|
114
136
|
require 'ohai'
|
115
137
|
require 'chef/knife/configure'
|
116
138
|
GreenAndSecure::check_block_setup
|
117
139
|
knife_config = Chef::Knife::Configure.new
|
118
140
|
knife_config.config[:config_file] = "#{::Chef::Knife::chef_config_dir}/knife-#{@config_name}.rb"
|
119
141
|
knife_config.config[:chef_server_url] = @chef_server
|
142
|
+
knife_config.config[:node_name] = @client_name
|
143
|
+
knife_config.config[:client_key] = "#{::Chef::Knife::chef_config_dir}/#{@client_name}-#{@config_name}.pem"
|
120
144
|
knife_config.run
|
121
145
|
puts "#{::Chef::Knife::chef_config_dir}/knife-#{@config_name}.rb has been sucessfully created"
|
122
146
|
GreenAndSecure::BlockList.new.run
|
data/lib/knife-block/version.rb
CHANGED
File without changes
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: knife-block
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-07-30 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Create and manage knife.rb files for OpsCodes' Chef
|
15
15
|
email:
|
@@ -27,6 +27,7 @@ files:
|
|
27
27
|
- lib/chef/knife/block.rb
|
28
28
|
- lib/knife-block.rb
|
29
29
|
- lib/knife-block/version.rb
|
30
|
+
- libpeerconnection.log
|
30
31
|
- test/unit/knifeblock_test.rb
|
31
32
|
homepage: ''
|
32
33
|
licenses: []
|