module ChefProvisioner::Config
Attributes
client[R]
client_key[R]
server[R]
Public Instance Methods
setup(server: nil, client_key: nil, client_key_path: nil, client: nil, listen: nil)
click to toggle source
# File lib/chef-provisioner/config.rb, line 12 def setup(server: nil, client_key: nil, client_key_path: nil, client: nil, listen: nil) @server = server || "http://#{listen || my_ip}:#{get_free_port}" @client_key = client_key || client_key_path || setup_chef_client_file @client = client || 'testing-client' ChefProvisioner::Chef.configure(endpoint: @server, key_path: @client_key, client: @client) end
Private Instance Methods
get_free_port()
click to toggle source
# File lib/chef-provisioner/config.rb, line 21 def get_free_port socket = Socket.new(:INET, :STREAM, 0) socket.bind(Addrinfo.tcp("127.0.0.1", 0)) port = socket.local_address.ip_port socket.close port end
my_ip()
click to toggle source
# File lib/chef-provisioner/config.rb, line 29 def my_ip Socket.ip_address_list.find{|x| x.ipv4? && !x.ipv4_loopback? && !x.ip_address.start_with?('169.254')}.ip_address end
setup_chef_client_file()
click to toggle source
# File lib/chef-provisioner/config.rb, line 33 def setup_chef_client_file client_file = Tempfile.new('chef-provisioner-client') client_file.write(OpenSSL::PKey::RSA.new(2048).to_s) client_file.close client_file.path end