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