Sha256: fb07b6354061a7325b7d48f6e32e160e3512f914c6cfe792c87129a273b1085f

Contents?: true

Size: 1.86 KB

Versions: 3

Compression:

Stored size: 1.86 KB

Contents

Given(/^a local mode chef repo with nodes '(.+?)'(?: with admins '(.+?)')?$/) do |nodelist, adminlist|
  # create the repo directory hierarchy
  %w(cookbooks clients nodes data_bags).each do |dir|
    create_dir dir
  end
  # create a basic knife.rb
  write_file 'knife.rb', <<EOF
local_mode true
chef_repo_path '.'
chef_zero.enabled true
EOF
  # create the admin users and capture their private key we
  # always create an admin called 'admin' because otherwise subsequent
  # steps become annoying to determine who the admin is
  admins = %w(admin)
  admins.push(adminlist.split(/,/)) if adminlist
  admins.flatten.each do |admin|
    create_admin(admin)
  end
  # add the admin key to the knife configuration
  append_to_file 'knife.rb', <<EOF
node_name 'admin'
client_key 'admin.pem'
EOF
  # create the requested nodes
  nodelist.split(/,/).each do |node|
    create_client(node)
    create_node(node)
  end
end

Given(/^I create an admin named '(.+)'$/) do |admin|
  create_admin(admin)
end

Given(/^I delete clients? '(.+)' from the Chef server$/) do |nodelist|
  nodelist.split(/,/).each do |node|
    delete_client(node)
  end
end

Given(/^I regenerate the client key for the node '(.+)'$/) do |node|
  delete_client(node)
  create_client(node)
end

Given(/^I delete nodes? '(.+)' from the Chef server$/) do |nodelist|
  nodelist.split(/,/).each { |node| delete_node(node) }
end

def create_node(name)
  run_simple "knife node create #{name} -z -d -c knife.rb"
end

def create_admin(admin)
  create_client(admin, '-a')
end

def create_client(name, args = nil)
  command = "knife client create #{name} -z -d -c knife.rb #{args} >#{name}.pem"
  run_simple command
  write_file("#{name}.pem", stdout_from(command))
end

def delete_client(name)
  run_simple "knife client delete #{name} -y -z -c knife.rb"
end

def delete_node(name)
  run_simple "knife node delete #{name} -y -z -c knife.rb"
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
chef-vault-2.6.1 features/step_definitions/chef-repo.rb
chef-vault-2.6.0 features/step_definitions/chef-repo.rb
chef-vault-2.5.0 features/step_definitions/chef-repo.rb