Ensure meta-data is also included in cloud-init iso
This commit is contained in:
parent
6797b96cae
commit
39a12de38f
@ -1,12 +1,11 @@
|
||||
require 'mime'
|
||||
require "tmpdir"
|
||||
require 'tmpdir'
|
||||
|
||||
module Vagrant
|
||||
module Action
|
||||
module Builtin
|
||||
class CloudInitSetup
|
||||
TEMP_PREFIX = "vagrant-cloud-init-iso-temp-".freeze
|
||||
TEMP_ROOT = "/tmp".freeze
|
||||
|
||||
def initialize(app, env)
|
||||
@app = app
|
||||
@ -94,12 +93,17 @@ module Vagrant
|
||||
iso_path = nil
|
||||
|
||||
if env[:env].host.capability?(:create_iso)
|
||||
# TODO: make temp_root configurable?
|
||||
source_dir = Pathname.new(Dir.mktmpdir(TEMP_PREFIX, TEMP_ROOT))
|
||||
# write a cloud.cfg file with msg.to_s
|
||||
File.open("#{source_dir}/user-data", 'w') { |file| file.write(msg.to_s) }
|
||||
begin
|
||||
source_dir = Pathname.new(Dir.mktmpdir(TEMP_PREFIX))
|
||||
File.open("#{source_dir}/user-data", 'w') { |file| file.write(msg.to_s) }
|
||||
|
||||
iso_path = env[:env].host.capability(:create_iso, env[:env], source_dir)
|
||||
metadata = { "instance-id": "i-#{machine.id.split('-').join}" }
|
||||
File.open("#{source_dir}/meta-data", 'w') { |file| file.write(metadata.to_s) }
|
||||
|
||||
iso_path = env[:env].host.capability(:create_iso, env[:env], source_dir)
|
||||
ensure
|
||||
FileUtils.remove_entry source_dir
|
||||
end
|
||||
else
|
||||
raise Errors::CreateIsoHostCapNotFound
|
||||
end
|
||||
|
||||
@ -9,7 +9,7 @@ describe Vagrant::Action::Builtin::CloudInitSetup do
|
||||
let(:provider) { double("provider") }
|
||||
let(:machine) { double("machine", config: config, provider: provider, name: "machine",
|
||||
provider_name: "provider", data_dir: Pathname.new("/fake/dir"),
|
||||
ui: ui, env: machine_env) }
|
||||
ui: ui, env: machine_env, id: "123-456-789") }
|
||||
let(:host) { double("host") }
|
||||
let(:machine_env) { double("machine_env", root_path: "root", host: host) }
|
||||
let(:env) { { ui: ui, machine: machine, env: machine_env} }
|
||||
@ -109,6 +109,8 @@ 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(FileUtils).to receive(:remove_entry).with(source_dir).and_return(true)
|
||||
allow(host).to receive(:capability).with(:create_iso, machine_env, source_dir).and_return(iso_path)
|
||||
|
||||
subject.write_cfg_iso(machine, env, message)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user