class DockerApp::Provisioner::Chef

Attributes

server[RW]

Public Class Methods

new(_settings) click to toggle source
# File lib/docker_app/provisioner/chef.rb, line 21
def initialize(_settings)
  self.server = _settings

end

Public Instance Methods

build_config() click to toggle source
# File lib/docker_app/provisioner/chef.rb, line 56
def build_config
  res = {}

  attr = settings.properties['attributes']
  res = attr

  #res = settings.all_attributes

  res
end
copy_config_file() click to toggle source
# File lib/docker_app/provisioner/chef.rb, line 28
def copy_config_file
  # config json
  save_config

  # copy to container
  DockerApp::Command.cmd %Q(docker cp #{filename_config} #{settings.container_name}:#{docker_filename_config})

end
docker_filename_config() click to toggle source
# File lib/docker_app/provisioner/chef.rb, line 52
def docker_filename_config
  "/opt/bootstrap/config.json"
end
docker_run_cmd(s) click to toggle source
# File lib/docker_app/provisioner/chef.rb, line 85
def docker_run_cmd(s)
  DockerApp::Command.cmd %Q(docker exec #{settings.container_name} bash -c '#{s}')
end
filename_config() click to toggle source
# File lib/docker_app/provisioner/chef.rb, line 48
def filename_config
  File.join(Config.root_path, 'temp', "bootstrap-#{settings.name}.json")
end
run_recipe_in_container(dir_base, recipe_name) click to toggle source

run recipes

# File lib/docker_app/provisioner/chef.rb, line 69
def run_recipe_in_container(dir_base, recipe_name)

  recipe_name ||= "server::bootstrap"

  # generate config
  copy_config_file


  #
  q = %Q(cd #{dir_base} && chef-client -z -j #{docker_filename_config} --override-runlist "recipe[#{recipe_name}]" )

  # exec
  docker_run_cmd q
end
save_config() click to toggle source
# File lib/docker_app/provisioner/chef.rb, line 37
def save_config
  require 'json'
  filename = filename_config
  FileUtils.mkdir_p(File.dirname(filename))
  File.open(filename,"w+") do |f|
    f.write(build_config.to_json)
  end

  true
end
server=(v) click to toggle source
# File lib/docker_app/provisioner/chef.rb, line 7
def server=(v)
  @server = v
  @server
end
settings() click to toggle source
# File lib/docker_app/provisioner/chef.rb, line 16
def settings
  server
end