From 52a55e3cf44c44d75783b27383b164084cf37559 Mon Sep 17 00:00:00 2001 From: tphoney Date: Tue, 26 Mar 2019 10:36:52 +0000 Subject: [PATCH 1/2] (feat) provisioning lists of images from a file --- lib/puppet_litmus/rake_tasks.rb | 35 +++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/lib/puppet_litmus/rake_tasks.rb b/lib/puppet_litmus/rake_tasks.rb index 8418da2a..9758200f 100644 --- a/lib/puppet_litmus/rake_tasks.rb +++ b/lib/puppet_litmus/rake_tasks.rb @@ -83,6 +83,28 @@ def run_local_command(command) end end + desc "provision list of machines from provision.yaml file. 'bundle exec rake 'litmus:provision_list[default]'" + task :provision_list, [:key] do |_task, args| + provision_hash = YAML.load_file('./provision.yaml') + provisioner = provision_hash['default']['provisioner'] + provision_hash[args[:key]]['images'].each do |image| + include PuppetLitmus + Rake::Task['spec_prep'].invoke + config_data = { 'modulepath' => File.join(Dir.pwd, 'spec', 'fixtures', 'modules') } + raise "the provision module was not found in #{config_data['modulepath']}, please amend the .fixtures.yml file" unless File.directory?(File.join(config_data['modulepath'], 'provision')) + + params = { 'action' => 'provision', 'platform' => image, 'inventory' => Dir.pwd } + results = run_task("provision::#{provisioner}", 'localhost', params, config: config_data, inventory: nil) + results.each do |result| + if result['status'] != 'success' + puts "Failed on #{result['node']}\n#{result}" + else + puts "Provisioned #{result['result']['node_name']}" + end + end + end + end + desc "provision container/VM - abs/docker/vmpooler eg 'bundle exec rake 'litmus:provision[vmpooler, ubuntu-1604-x86_64]'" task :provision, [:provisioner, :platform] do |_task, args| include PuppetLitmus @@ -173,15 +195,12 @@ def run_local_command(command) run_local_command("bundle exec bolt file upload #{module_tar} /tmp/#{File.basename(module_tar)} --nodes #{target_string} --inventoryfile inventory.yaml") install_module_command = "puppet module install /tmp/#{File.basename(module_tar)}" result = run_command(install_module_command, target_nodes, config: nil, inventory: inventory_hash) - # rubocop:disable Style/GuardClause - if result.is_a?(Array) - result.each do |node| - puts "#{node['node']} failed #{node['result']}" if node['status'] != 'success' - end - else - raise "Failed trying to run '#{install_module_command}' against inventory." + raise "Failed trying to run '#{install_module_command}' against inventory." unless result.is_a?(Array) + + result.each do |node| + puts "#{node['node']} failed #{node['result']}" if node['status'] != 'success' end - # rubocop:enable Style/GuardClause + puts 'Installed' end From dbdd2fa9ceb5968cf4d58daeb987a2df3e6e2153 Mon Sep 17 00:00:00 2001 From: TP Honey Date: Fri, 29 Mar 2019 15:38:31 +0000 Subject: [PATCH 2/2] typo for provisioner --- lib/puppet_litmus/rake_tasks.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/puppet_litmus/rake_tasks.rb b/lib/puppet_litmus/rake_tasks.rb index 9758200f..84d4d7d2 100644 --- a/lib/puppet_litmus/rake_tasks.rb +++ b/lib/puppet_litmus/rake_tasks.rb @@ -86,7 +86,7 @@ def run_local_command(command) desc "provision list of machines from provision.yaml file. 'bundle exec rake 'litmus:provision_list[default]'" task :provision_list, [:key] do |_task, args| provision_hash = YAML.load_file('./provision.yaml') - provisioner = provision_hash['default']['provisioner'] + provisioner = provision_hash[args[:key]]['provisioner'] provision_hash[args[:key]]['images'].each do |image| include PuppetLitmus Rake::Task['spec_prep'].invoke