diff --git a/lib/vagrant/action/builtin/cloud_init_setup.rb b/lib/vagrant/action/builtin/cloud_init_setup.rb index a53b8fc3b..2e9be9b5d 100644 --- a/lib/vagrant/action/builtin/cloud_init_setup.rb +++ b/lib/vagrant/action/builtin/cloud_init_setup.rb @@ -20,7 +20,7 @@ module Vagrant if !user_data_configs.empty? user_data = setup_user_data(machine, env, user_data_configs) - meta_data = { "instance-id": "i-#{machine.id.split('-').join}" } + meta_data = { "instance-id" => "i-#{machine.id.split('-').join}" } write_cfg_iso(machine, env, user_data, meta_data) end @@ -97,7 +97,7 @@ module Vagrant source_dir = Pathname.new(Dir.mktmpdir(TEMP_PREFIX)) File.open("#{source_dir}/user-data", 'w') { |file| file.write(user_data.to_s) } - File.open("#{source_dir}/meta-data", 'w') { |file| file.write(meta_data.to_s) } + File.open("#{source_dir}/meta-data", 'w') { |file| file.write(meta_data.to_yaml) } iso_path = env[:env].host.capability(:create_iso, source_dir, volume_id: "cidata") diff --git a/test/unit/vagrant/action/builtin/cloud_init_setup_test.rb b/test/unit/vagrant/action/builtin/cloud_init_setup_test.rb index 232859751..40607d849 100644 --- a/test/unit/vagrant/action/builtin/cloud_init_setup_test.rb +++ b/test/unit/vagrant/action/builtin/cloud_init_setup_test.rb @@ -25,7 +25,7 @@ describe Vagrant::Action::Builtin::CloudInitSetup do let(:text_cfgs) { [MIME::Text.new("data: true", "cloud-config"), MIME::Text.new("data: false", "cloud-config") ] } - let(:meta_data) { { "instance-id": "i-123456789" } } + let(:meta_data) { { "instance-id" => "i-123456789" } } let(:subject) { described_class.new(app, env) } @@ -96,6 +96,11 @@ describe Vagrant::Action::Builtin::CloudInitSetup do describe "#write_cfg_iso" do let(:iso_path) { Pathname.new("fake/iso/path") } let(:source_dir) { Pathname.new("fake/source/path") } + let(:meta_data_file) { double("meta_data_file") } + + before do + allow(meta_data_file).to receive(:write).and_return(true) + end it "raises an error if the host capability is not supported" do message = subject.generate_cfg_msg(machine, text_cfgs) @@ -109,12 +114,13 @@ describe Vagrant::Action::Builtin::CloudInitSetup do allow(host).to receive(:capability?).with(:create_iso).and_return(true) allow(Dir).to receive(:mktmpdir).and_return(source_dir) expect(File).to receive(:open).with("#{source_dir}/user-data", 'w').and_return(true) - expect(File).to receive(:open).with("#{source_dir}/meta-data", 'w').and_return(true) + expect(File).to receive(:open).with("#{source_dir}/meta-data", 'w').and_yield(meta_data_file) expect(FileUtils).to receive(:remove_entry).with(source_dir).and_return(true) allow(host).to receive(:capability).with(:create_iso, source_dir, volume_id: "cidata").and_return(iso_path) expect(vm.disks).to receive(:each) + expect(meta_data).to receive(:to_yaml) - subject.write_cfg_iso(machine, env, message, {}) + subject.write_cfg_iso(machine, env, message, meta_data) end end