rehai 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. data/.gitignore +1 -0
  2. data/README.md +9 -0
  3. data/bin/rehai +93 -0
  4. data/rehai.gemspec +13 -0
  5. metadata +51 -0
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ rehai-*.gem
data/README.md ADDED
@@ -0,0 +1,9 @@
1
+ Rehai
2
+ =====
3
+
4
+ A chef tool which reloads ohai information without a full chef run!
5
+
6
+ Usage
7
+ =====
8
+
9
+ $ /usr/local/bin/rehai
data/bin/rehai ADDED
@@ -0,0 +1,93 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'chef'
4
+ require 'chef/application'
5
+ begin
6
+ # Had to add this because there is a bug in chef where the chef/application uses it but doesn't require it (11.8.2)
7
+ require 'chef/config_fetcher'
8
+ rescue LoadError
9
+ end
10
+
11
+
12
+ class Chef::Application::Rehai < Chef::Application
13
+
14
+ # config options nicked from Chef::Application::Client
15
+ option :config_file,
16
+ :short => "-c CONFIG",
17
+ :long => "--config CONFIG",
18
+ :default => "/etc/chef/client.rb",
19
+ :description => "The configuration file to use"
20
+ option :log_level,
21
+ :short => "-l LEVEL",
22
+ :long => "--log_level LEVEL",
23
+ :description => "Set the log level (debug, info, warn, error, fatal)",
24
+ :proc => lambda { |l| l.to_sym }
25
+ option :log_location,
26
+ :short => "-L LOGLOCATION",
27
+ :long => "--logfile LOGLOCATION",
28
+ :description => "Set the log file location, defaults to STDOUT - recommended for daemonizing",
29
+ :proc => nil
30
+ option :help,
31
+ :short => "-h",
32
+ :long => "--help",
33
+ :description => "Show this message",
34
+ :on => :tail,
35
+ :boolean => true,
36
+ :show_options => true,
37
+ :exit => 0
38
+ option :node_name,
39
+ :short => "-N NODE_NAME",
40
+ :long => "--node-name NODE_NAME",
41
+ :description => "The node name for this client",
42
+ :proc => nil
43
+ option :chef_server_url,
44
+ :short => "-S CHEFSERVERURL",
45
+ :long => "--server CHEFSERVERURL",
46
+ :description => "The chef server URL",
47
+ :proc => nil
48
+ option :client_key,
49
+ :short => "-k KEY_FILE",
50
+ :long => "--client_key KEY_FILE",
51
+ :description => "Set the client key file location",
52
+ :proc => nil
53
+ attr_reader :chef_client_json
54
+
55
+ # pull configuration settings from the config file(s), most
56
+ # likely in /etc/chef/client.rb
57
+ def setup_application
58
+ parse_options
59
+ ::File::open(config[:config_file]) { |f|
60
+ Chef::Config.from_file(f.path)
61
+ Chef::Config.merge!(config)
62
+ }
63
+ end
64
+
65
+ # The meat of our task, do an ohai run and update the
66
+ # nodes attributes then post back to
67
+ def run_application
68
+
69
+ # Do an ohai run to find the current system state
70
+ ohai = Ohai::System.new
71
+ ohai.all_plugins
72
+
73
+ # Create a reference to the node
74
+ node_name = Chef::Config[:node_name] || ohai[:fqdn] || ohai[:hostname]
75
+ Chef::Config[:node_name] = node_name
76
+ node = Chef::Node.find_or_create(node_name)
77
+
78
+ # Clear out existing attributes, some of these may have been deleted
79
+ node.reset_defaults_and_overrides
80
+
81
+ # Set the new attributes, the second argument here is the list of user
82
+ # supplied attributes from the command line or possibly a config file
83
+ node.consume_external_attrs(ohai.data, {})
84
+
85
+ # Write back to the server
86
+ node.save
87
+ # puts Chef::JSONCompat.to_json(node)
88
+ end
89
+
90
+ end
91
+
92
+ rehai = Chef::Application::Rehai.new()
93
+ rehai.run()
data/rehai.gemspec ADDED
@@ -0,0 +1,13 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = 'rehai'
3
+ s.version = '0.0.1'
4
+ s.date = '2014-07-06'
5
+ s.summary = "Rehai - a chef tool which reloads ohai information without a full chef run!"
6
+ s.description = s.summary
7
+ s.authors = ["John Goulah"]
8
+ s.email = 'jgoulah@gmail.com'
9
+ s.files = `git ls-files`.split("\n")
10
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
11
+ s.homepage = 'https://github.com/jgoulah/rehai'
12
+ s.license = 'MIT'
13
+ end
metadata ADDED
@@ -0,0 +1,51 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rehai
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - John Goulah
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-07-06 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: Rehai - a chef tool which reloads ohai information without a full chef
15
+ run!
16
+ email: jgoulah@gmail.com
17
+ executables:
18
+ - rehai
19
+ extensions: []
20
+ extra_rdoc_files: []
21
+ files:
22
+ - .gitignore
23
+ - README.md
24
+ - bin/rehai
25
+ - rehai.gemspec
26
+ homepage: https://github.com/jgoulah/rehai
27
+ licenses:
28
+ - MIT
29
+ post_install_message:
30
+ rdoc_options: []
31
+ require_paths:
32
+ - lib
33
+ required_ruby_version: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ required_rubygems_version: !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ requirements: []
46
+ rubyforge_project:
47
+ rubygems_version: 1.8.24
48
+ signing_key:
49
+ specification_version: 3
50
+ summary: Rehai - a chef tool which reloads ohai information without a full chef run!
51
+ test_files: []