Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions lib/kitchen/driver/oci/instance/compute.rb
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,17 @@ def instance_source_via_boot_volume
def instance_metadata
launch_details.metadata = metadata
end

# Adds the instance_options property to the launch_details to disable legacy IMDS endpoints at launch time.
# This ensures IMDSv2 is enabled from instance creation, which is required by OCI security policies
# that deny instance creation when areLegacyEndpointsDisabled='false'.
def launch_instance_options
opts = config[:instance_options] || {}
opts[:are_legacy_imds_endpoints_disabled] = true unless opts.key?(:are_legacy_imds_endpoints_disabled)
return if opts.empty?

launch_details.instance_options = OCI::Core::Models::InstanceOptions.new(opts)
end
end
end
end
Expand Down
6 changes: 6 additions & 0 deletions spec/spec_helper/compute_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,9 @@
nsg_ids: driver_config[:nsg_ids],
subnet_id: subnet_ocid
)
l.instance_options = OCI::Core::Models::InstanceOptions.new(
are_legacy_imds_endpoints_disabled: true
)
l.freeform_tags = { kitchen: true }
l.defined_tags = {}
l.metadata = instance_metadata
Expand Down Expand Up @@ -83,6 +86,9 @@
nsg_ids: driver_config[:nsg_ids],
subnet_id: subnet_ocid
)
l.instance_options = OCI::Core::Models::InstanceOptions.new(
are_legacy_imds_endpoints_disabled: true
)
l.freeform_tags = { kitchen: true }
l.defined_tags = {}
l.metadata = instance_metadata
Expand Down