knife-ipmi 0.0.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/.gitignore +1 -0
- data/README.md +17 -0
- data/knife-ipmi.gemspec +12 -0
- data/lib/chef/knife/ipmi_base.rb +49 -0
- data/lib/chef/knife/ipmi_power_off.rb +33 -0
- data/lib/chef/knife/ipmi_power_on.rb +33 -0
- data/lib/chef/knife/ipmi_power_reset.rb +33 -0
- data/lib/chef/knife/ipmi_power_soft.rb +33 -0
- data/lib/chef/knife/ipmi_power_status.rb +33 -0
- data/lib/knife-ipmi/version.rb +5 -0
- metadata +55 -0
data/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
*.gem
|
data/README.md
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
# Knife IPMI
|
2
|
+
|
3
|
+
This plugin provides basic IPMI controls through knife. It requires that your nodes have populated IPMI information such as that provided by the ohai-ipmi plugin.
|
4
|
+
|
5
|
+
## Requirements
|
6
|
+
`ruby-ipmitool`
|
7
|
+
`ohai-ipmi` - In order to populate IPMI data on the Chef::Node
|
8
|
+
|
9
|
+
## What can it do?
|
10
|
+
|
11
|
+
The plugin currently provides power controls 'on', 'off', 'status', 'reset', 'soft' which equate directly to their IPMI namesakes.
|
12
|
+
|
13
|
+
knife ipmi power on NODE
|
14
|
+
knife ipmi power off NODE
|
15
|
+
knife ipmi power status NODE
|
16
|
+
knife ipmi power reset NODE
|
17
|
+
knife ipmi power soft NODE
|
data/knife-ipmi.gemspec
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
Gem::Specification.new do |gem|
|
2
|
+
gem.authors = ["Paul Thomas"]
|
3
|
+
gem.email = ["gems@paulthomas.eu"]
|
4
|
+
gem.description = %q{Interact with ruby-ipmitool using knife}
|
5
|
+
gem.summary = %q{Interact with ruby-ipmitool using knife}
|
6
|
+
gem.homepage = "http://github.com/Afterglow/knife-ipmi"
|
7
|
+
|
8
|
+
gem.files = `git ls-files`.split($\)
|
9
|
+
gem.name = "knife-ipmi"
|
10
|
+
gem.require_paths = ["lib"]
|
11
|
+
gem.version = "0.0.1"
|
12
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Paul Thomas (<paul@paulthomas.eu>)
|
3
|
+
# Copyright:: Copyright (c) 2012 Paul Thomas
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
require 'chef/knife'
|
20
|
+
require 'chef/search/query'
|
21
|
+
require 'ruby-ipmitool'
|
22
|
+
|
23
|
+
class Chef
|
24
|
+
class Knife
|
25
|
+
module IpmiBase
|
26
|
+
def ipmi
|
27
|
+
unless name_args.size == 1
|
28
|
+
puts "You need to specify a node to act on"
|
29
|
+
show_usage
|
30
|
+
exit 1
|
31
|
+
end
|
32
|
+
unless defined? config[:ipmi_user]
|
33
|
+
puts "Please set your IPMI username in knife.rb"
|
34
|
+
exit 1
|
35
|
+
end
|
36
|
+
unless defined? config[:ipmi_user]
|
37
|
+
puts "Please set your IPMI password in knife.rb"
|
38
|
+
exit 1
|
39
|
+
end
|
40
|
+
|
41
|
+
node = Chef::Node.load(name_args[0])
|
42
|
+
unless node.has_key? 'ipmi'
|
43
|
+
puts "Node had no IPMI details (is it running ohai-ipmi plugin?)"
|
44
|
+
end
|
45
|
+
@conn = Ipmitool.new(:host => node.ipmi.address, :user => Chef::Config[:knife][:ipmi_user], :password => Chef::Config[:knife][:ipmi_pass])
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Paul Thomas (<paul@paulthomas.eu>)
|
3
|
+
# Copyright:: Copyright (c) 2012 Paul Thomas
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
require 'chef/knife/ipmi_base'
|
20
|
+
|
21
|
+
class Chef
|
22
|
+
class Knife
|
23
|
+
class IpmiPowerOff < Knife
|
24
|
+
include Knife::IpmiBase
|
25
|
+
|
26
|
+
banner "knife ipmi power off NODE"
|
27
|
+
|
28
|
+
def run
|
29
|
+
puts ipmi.power("off")
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Paul Thomas (<paul@paulthomas.eu>)
|
3
|
+
# Copyright:: Copyright (c) 2012 Paul Thomas
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
require 'chef/knife/ipmi_base'
|
20
|
+
|
21
|
+
class Chef
|
22
|
+
class Knife
|
23
|
+
class IpmiPowerOn < Knife
|
24
|
+
include Knife::IpmiBase
|
25
|
+
|
26
|
+
banner "knife ipmi power on NODE"
|
27
|
+
|
28
|
+
def run
|
29
|
+
puts ipmi.power("on")
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Paul Thomas (<paul@paulthomas.eu>)
|
3
|
+
# Copyright:: Copyright (c) 2012 Paul Thomas
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
require 'chef/knife/ipmi_base'
|
20
|
+
|
21
|
+
class Chef
|
22
|
+
class Knife
|
23
|
+
class IpmiPowerReset < Knife
|
24
|
+
include Knife::IpmiBase
|
25
|
+
|
26
|
+
banner "knife ipmi power reset NODE"
|
27
|
+
|
28
|
+
def run
|
29
|
+
puts ipmi.power("reset")
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Paul Thomas (<paul@paulthomas.eu>)
|
3
|
+
# Copyright:: Copyright (c) 2012 Paul Thomas
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
require 'chef/knife/ipmi_base'
|
20
|
+
|
21
|
+
class Chef
|
22
|
+
class Knife
|
23
|
+
class IpmiPowerSoft < Knife
|
24
|
+
include Knife::IpmiBase
|
25
|
+
|
26
|
+
banner "knife ipmi power soft NODE"
|
27
|
+
|
28
|
+
def run
|
29
|
+
puts ipmi.power("soft")
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Paul Thomas (<paul@paulthomas.eu>)
|
3
|
+
# Copyright:: Copyright (c) 2012 Paul Thomas
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
require 'chef/knife/ipmi_base'
|
20
|
+
|
21
|
+
class Chef
|
22
|
+
class Knife
|
23
|
+
class IpmiPowerStatus < Knife
|
24
|
+
include Knife::IpmiBase
|
25
|
+
|
26
|
+
banner "knife ipmi power status NODE"
|
27
|
+
|
28
|
+
def run
|
29
|
+
puts ipmi.power("status")
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
metadata
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: knife-ipmi
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Paul Thomas
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-11-05 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
14
|
+
description: Interact with ruby-ipmitool using knife
|
15
|
+
email:
|
16
|
+
- gems@paulthomas.eu
|
17
|
+
executables: []
|
18
|
+
extensions: []
|
19
|
+
extra_rdoc_files: []
|
20
|
+
files:
|
21
|
+
- .gitignore
|
22
|
+
- README.md
|
23
|
+
- knife-ipmi.gemspec
|
24
|
+
- lib/chef/knife/ipmi_base.rb
|
25
|
+
- lib/chef/knife/ipmi_power_off.rb
|
26
|
+
- lib/chef/knife/ipmi_power_on.rb
|
27
|
+
- lib/chef/knife/ipmi_power_reset.rb
|
28
|
+
- lib/chef/knife/ipmi_power_soft.rb
|
29
|
+
- lib/chef/knife/ipmi_power_status.rb
|
30
|
+
- lib/knife-ipmi/version.rb
|
31
|
+
homepage: http://github.com/Afterglow/knife-ipmi
|
32
|
+
licenses: []
|
33
|
+
post_install_message:
|
34
|
+
rdoc_options: []
|
35
|
+
require_paths:
|
36
|
+
- lib
|
37
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
39
|
+
requirements:
|
40
|
+
- - ! '>='
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '0'
|
43
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
44
|
+
none: false
|
45
|
+
requirements:
|
46
|
+
- - ! '>='
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0'
|
49
|
+
requirements: []
|
50
|
+
rubyforge_project:
|
51
|
+
rubygems_version: 1.8.24
|
52
|
+
signing_key:
|
53
|
+
specification_version: 3
|
54
|
+
summary: Interact with ruby-ipmitool using knife
|
55
|
+
test_files: []
|