Module: ChefProvisioner::Chef
Overview
Simple API to access chef server to manage clients and nodes
Instance Method Summary collapse
- #configure(**kwargs) ⇒ Object
- #create_client(name) ⇒ Object
- #create_node(name, environment, key, attributes: {}, run_list: []) ⇒ Object
- #delete_client(name) ⇒ Object
- #delete_node(name) ⇒ Object
- #init_server(name, environment: '_default', attributes: {}, run_list: [], force: false) ⇒ Object
- #nuke(name) ⇒ Object
Instance Method Details
#configure(**kwargs) ⇒ Object
11 12 13 14 15 16 17 |
# 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) ⇒ Object
26 27 28 29 30 31 32 |
# 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. end |
#create_node(name, environment, key, attributes: {}, run_list: []) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# 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.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. end |
#delete_client(name) ⇒ Object
50 51 52 53 54 55 |
# File 'lib/chef-provisioner/chef.rb', line 50 def delete_client(name) ChefAPI::Connection.new.clients.destroy(name) rescue => e puts "Failed to delete client #{name}" puts e. end |
#delete_node(name) ⇒ Object
57 58 59 60 61 62 |
# File 'lib/chef-provisioner/chef.rb', line 57 def delete_node(name) ChefAPI::Connection.new.nodes.destroy(name) rescue => e puts "Failed to delete node #{name}" puts e. end |
#init_server(name, environment: '_default', attributes: {}, run_list: [], force: false) ⇒ Object
19 20 21 22 23 24 |
# 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) ⇒ Object
64 65 66 67 |
# File 'lib/chef-provisioner/chef.rb', line 64 def nuke(name) delete_client(name) delete_node(name) end |