module ChefProvisioner::Chef
Simple API to access chef server to manage clients and nodes
Public Instance Methods
configure(**kwargs)
click to toggle source
# File lib/chef-provisioner/chef.rb, line 11 def configure(**kwargs) ChefAPI.configure do |config| config.endpoint = kwargs[:endpoint] config.client = kwargs[:client] config.key = kwargs[:key_text] || File.read(kwargs[:key_path]) end end
create_client(name)
click to toggle source
# File lib/chef-provisioner/chef.rb, line 26 def create_client(name) client = ChefAPI::Connection.new.clients.create(name: name) client.private_key rescue => e puts "Failed to create client #{name}" puts e.message end
create_node(name, environment, key, attributes:{}, run_list:[])
click to toggle source
# File lib/chef-provisioner/chef.rb, line 34 def create_node(name, environment, key, attributes:{}, run_list:[]) client_connection = ChefAPI::Connection.new do |connection| connection.client = name connection.key = key end node = client_connection.nodes.create(name: name, run_list: run_list) node.chef_environment = environment node.automatic = attributes['automatic'] || {} node.default = attributes['default'] || {} node.normal = attributes['normal'] || {} node.override = attributes['override'] || {} node.save rescue => e puts "Failed to create node #{name}" puts e.message end
delete_client(name)
click to toggle source
# File lib/chef-provisioner/chef.rb, line 51 def delete_client(name) ChefAPI::Connection.new.clients.destroy(name) rescue => e puts "Failed to delete client #{name}" puts e.message end
delete_node(name)
click to toggle source
# File lib/chef-provisioner/chef.rb, line 58 def delete_node(name) ChefAPI::Connection.new.nodes.destroy(name) rescue => e puts "Failed to delete node #{name}" puts e.message end
init_server(name, environment: '_default', attributes:{}, run_list:[], force: false)
click to toggle source
# File lib/chef-provisioner/chef.rb, line 19 def init_server(name, environment: '_default', attributes:{}, run_list:[], force: false) nuke(name) if force key = create_client(name) create_node(name, environment, key, attributes: attributes, run_list: run_list) key end
nuke(name)
click to toggle source
# File lib/chef-provisioner/chef.rb, line 65 def nuke(name) delete_client(name) delete_node(name) end