Class: TestLab::Provisioner::Chef::RubyGemServer

Inherits:
Object
  • Object
show all
Defined in:
lib/testlab/provisioners/chef/ruby_gem_server.rb

Overview

RubyGemServer Provisioner Class

Author:

  • Zachary Patten <zachary AT jovelabs DOT com>

Instance Method Summary collapse

Constructor Details

#initialize(config = {}, ui = nil) ⇒ RubyGemServer

Returns a new instance of RubyGemServer.



14
15
16
17
18
19
20
21
22
23
24
# File 'lib/testlab/provisioners/chef/ruby_gem_server.rb', line 14

def initialize(config={}, ui=nil)
  @config = (config || Hash.new)
  @ui     = (ui || TestLab.ui)

  @config[:chef] ||= Hash.new
  @config[:chef][:server] ||= Hash.new
  @config[:chef][:server][:version]     ||= %(10.24.0)
  @config[:chef][:server][:server_url]  ||= "https://127.0.0.1"

  @ui.logger.debug { "config(#{@config.inspect})" }
end

Instance Method Details

#on_container_provision(container) ⇒ Boolean

RubyGemServer: Container Provision

Renders the defined script to a temporary file on the target container and proceeds to execute said script as root via lxc-attach.

Parameters:

Returns:

  • (Boolean)

    True if successful.



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/testlab/provisioners/chef/ruby_gem_server.rb', line 34

def on_container_provision(container)
  rubygemserver_template = File.join(TestLab::Provisioner.template_dir, 'chef', 'ruby_gem_server.erb')

  config = {}.merge!({
    :server_name => container.ip,
    :chef_solo_attributes => build_chef_solo_attributes(container),
    :chef_validator => '/etc/chef/validation.pem',
    :chef_webui => '/etc/chef/webui.pem',
    :chef_admin => '/etc/chef/admin.pem',
    :default_password => "p@ssw01d",
    :local_user => ENV['USER'],
    :sudo_user => container.primary_user.username,
    :sudo_uid => container.primary_user.uid,
    :sudo_gid => container.primary_user.gid,
    :home_dir => container.primary_user.home_dir,
    :chef_gems => %w(chef chef-solr chef-expander chef-server-api chef-server-webui),
    :chef_services => %w(couchdb rabbitmq-server chef-solr chef-expander chef-server chef-server-webui apache2)
  }).merge!(@config)

  container.bootstrap(ZTK::Template.render(rubygemserver_template, config))

  true
end