knife-role-replace 0.0.2 → 0.0.3
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 +33 -0
- data/lib/chef/knife/replace.rb +24 -12
- data/lib/knife-role-replace/version.rb +1 -1
- metadata +3 -2
data/README.md
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
knife-role-replace
|
2
|
+
=================
|
3
|
+
Rename a Chef role applied to a node
|
4
|
+
|
5
|
+
Install
|
6
|
+
=======
|
7
|
+
|
8
|
+
Copy replace.rb into ~/.chef/plugins/knife
|
9
|
+
|
10
|
+
Gem Install
|
11
|
+
===========
|
12
|
+
|
13
|
+
```
|
14
|
+
gem install knife-role-replace
|
15
|
+
```
|
16
|
+
|
17
|
+
How to use
|
18
|
+
==========
|
19
|
+
|
20
|
+
```
|
21
|
+
knife role replace -s search_role -o old_role_name -n new_role_name
|
22
|
+
```
|
23
|
+
|
24
|
+
Use the search role name to pick nodes that fit your criteria and replace any role on those hosts.
|
25
|
+
|
26
|
+
For example, if you had 20 hosts with the role 'base' and the role 'fake-service' applied and you wanted to change the role 'base'
|
27
|
+
to say 'linux-base' you would run --
|
28
|
+
|
29
|
+
```
|
30
|
+
knife role replace -s fake-service -o base -n linux-base
|
31
|
+
```
|
32
|
+
|
33
|
+
Thats it! The change gets saved to the node and you're ready to go.
|
data/lib/chef/knife/replace.rb
CHANGED
@@ -41,22 +41,34 @@ module TP
|
|
41
41
|
list = @node.run_list
|
42
42
|
ui.msg("Here is the current set of roles on this host: #{list}")
|
43
43
|
|
44
|
-
|
45
|
-
old_role_name = config[:old_role]
|
44
|
+
begin
|
46
45
|
|
47
|
-
|
48
|
-
"
|
49
|
-
|
50
|
-
|
46
|
+
@new_list = list.map do |ele|
|
47
|
+
if rest.get_rest("/roles/#{config[:new_role]}")
|
48
|
+
if ele == "role[#{config[:old_role]}]"
|
49
|
+
"role[#{config[:new_role]}]"
|
50
|
+
else
|
51
|
+
"#{ele}"
|
52
|
+
end
|
53
|
+
end
|
51
54
|
end
|
52
|
-
end
|
53
55
|
|
54
|
-
|
55
|
-
|
56
|
+
ui.msg("Fixing up the run_list!\n")
|
57
|
+
ui.msg("Here is the modified set of roles: #{@new_list}")
|
56
58
|
|
57
|
-
|
58
|
-
|
59
|
-
|
59
|
+
@node.run_list(@new_list)
|
60
|
+
@node.save
|
61
|
+
|
62
|
+
if $?.success?
|
63
|
+
ui.msg("Node run_list has been saved on #{host}.")
|
64
|
+
else
|
65
|
+
ui.fatal("Node run_list has been NOT saved on #{host}!")
|
66
|
+
end
|
67
|
+
|
68
|
+
rescue Net::HTTPServerException
|
69
|
+
ui.fatal("Role: '#{config[:new_role]}' was not found on the server. Did you upload it?")
|
70
|
+
end
|
71
|
+
|
60
72
|
end
|
61
73
|
end
|
62
74
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: knife-role-replace
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
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: 2013-06-
|
12
|
+
date: 2013-06-25 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Replaces roles on a node when given search criteria
|
15
15
|
email:
|
@@ -19,6 +19,7 @@ extensions: []
|
|
19
19
|
extra_rdoc_files: []
|
20
20
|
files:
|
21
21
|
- Gemfile
|
22
|
+
- README.md
|
22
23
|
- knife-role-replace.gemspec
|
23
24
|
- lib/chef/knife/replace.rb
|
24
25
|
- lib/knife-role-replace.rb
|