Class: TestLab::Provisioner::Chef::OmniBus
- Inherits:
-
Object
- Object
- TestLab::Provisioner::Chef::OmniBus
- Defined in:
- lib/testlab/provisioners/chef/omni_bus.rb
Overview
OmniBus Provisioner Class
Instance Method Summary collapse
-
#initialize(config = {}, ui = nil) ⇒ OmniBus
constructor
A new instance of OmniBus.
-
#on_container_deprovision(container) ⇒ Boolean
OmniBus: Container Deprovision.
-
#on_container_provision(container) ⇒ Boolean
OmniBus: Container Provision.
Constructor Details
#initialize(config = {}, ui = nil) ⇒ OmniBus
Returns a new instance of OmniBus.
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/testlab/provisioners/chef/omni_bus.rb', line 13 def initialize(config={}, ui=nil) @config = (config || Hash.new) @ui = (ui || TestLab.ui) @config[:chef] ||= Hash.new @config[:chef][:client] ||= Hash.new @config[:chef][:client][:attach_to_container] ||= %(chef-server) @config[:chef][:client][:version] ||= %(latest) @config[:chef][:client][:log_level] ||= :info @config[:chef][:client][:attributes] ||= Hash.new @chef_server = TestLab::Container.first(@config[:chef][:client][:attach_to_container]) @config[:chef][:client][:server_url] ||= %(https://#{@chef_server.ip}) @ui.logger.debug { "config(#{@config.inspect})" } end |
Instance Method Details
#on_container_deprovision(container) ⇒ Boolean
OmniBus: Container Deprovision
62 63 64 65 66 67 68 69 |
# File 'lib/testlab/provisioners/chef/omni_bus.rb', line 62 def on_container_deprovision(container) if @chef_server.state == :running @chef_server.exec(%(knife node delete #{container.id} --yes), :ignore_exit_status => true) @chef_server.exec(%(knife client delete #{container.id} --yes), :ignore_exit_status => true) end true end |
#on_container_provision(container) ⇒ Boolean
OmniBus: 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.
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/testlab/provisioners/chef/omni_bus.rb', line 39 def on_container_provision(container) @config[:chef][:client][:node_name] ||= container.id omnibus_template = File.join(TestLab::Provisioner::Chef.template_dir, 'omni_bus.erb') config = {}.merge!({ :chef_client_cli => chef_client_cli(container), :chef_client_rb => chef_client_rb(container), :validation_pem => validation_pem, :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 }).merge!(@config) container.bootstrap(ZTK::Template.render(omnibus_template, config)) true end |