Skip to content

Commit 48d4151

Browse files
author
Himani Anil Deshpande
committed
Add DevSettings/DisableUserData for Image Builder
1 parent b75a2b0 commit 48d4151

File tree

3 files changed

+22
-9
lines changed

3 files changed

+22
-9
lines changed

cli/src/pcluster/config/imagebuilder_config.py

+2
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,7 @@ class ImagebuilderDevSettings(BaseDevSettings):
237237
def __init__(
238238
self,
239239
disable_pcluster_component: bool = None,
240+
disable_user_data: bool = None,
240241
distribution_configuration: DistributionConfiguration = None,
241242
terminate_instance_on_failure: bool = None,
242243
disable_validate_and_test: bool = None,
@@ -247,6 +248,7 @@ def __init__(
247248
):
248249
super().__init__(**kwargs)
249250
self.disable_pcluster_component = Resource.init_param(disable_pcluster_component, default=False)
251+
self.disable_user_data = Resource.init_param(disable_user_data, default=True)
250252
self.distribution_configuration = distribution_configuration
251253
self.terminate_instance_on_failure = Resource.init_param(terminate_instance_on_failure, default=True)
252254
self.disable_validate_and_test = Resource.init_param(disable_validate_and_test, default=True)

cli/src/pcluster/schemas/imagebuilder_schema.py

+1
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,7 @@ class ImagebuilderDevSettingsSchema(BaseDevSettingsSchema):
239239
"""Represent the schema of the ImageBuilder Dev Setting."""
240240

241241
disable_pcluster_component = fields.Bool()
242+
disable_user_data = fields.Bool()
242243
distribution_configuration = fields.Nested(DistributionConfigurationSchema)
243244
terminate_instance_on_failure = fields.Bool()
244245
disable_validate_and_test = fields.Bool()

cli/src/pcluster/templates/imagebuilder_stack.py

+19-9
Original file line numberDiff line numberDiff line change
@@ -366,8 +366,26 @@ def _add_imagebuilder_distribution_configuration(self, ami_tags, build_tags, lam
366366

367367
return distribution_configuration_resource
368368

369+
def _add_imagebuilder_user_data_override(self):
370+
disable_user_data = (
371+
self.config.dev_settings.disable_user_data
372+
if self.config.dev_settings and self.config.dev_settings.disable_user_data
373+
else False
374+
)
375+
additional_instance_configuration_property = None
376+
if not disable_user_data:
377+
imagebuilder_user_data = os.path.join(imagebuilder_utils.get_resources_directory(), "imagebuilder", "user_data.sh")
378+
with open(imagebuilder_user_data, "r", encoding="utf-8") as user_data_file:
379+
user_data_content = user_data_file.read()
380+
381+
additional_instance_configuration_property=imagebuilder.CfnImageRecipe.AdditionalInstanceConfigurationProperty(
382+
user_data_override=Fn.base64(user_data_content)
383+
)
384+
return additional_instance_configuration_property
385+
369386
def _add_imagebuilder_image_recipe(self, build_tags, components, lambda_cleanup_policy_statements):
370387
# ImageBuilderImageRecipe
388+
371389
image_recipe_resource = imagebuilder.CfnImageRecipe(
372390
self,
373391
"ImageRecipe",
@@ -376,9 +394,7 @@ def _add_imagebuilder_image_recipe(self, build_tags, components, lambda_cleanup_
376394
tags=build_tags,
377395
parent_image=self.config.build.parent_image,
378396
components=components,
379-
additional_instance_configuration=imagebuilder.CfnImageRecipe.AdditionalInstanceConfigurationProperty(
380-
user_data_override=self._add_imgaebuilder_user_data_override()
381-
),
397+
additional_instance_configuration=self._add_imagebuilder_user_data_override(),
382398
block_device_mappings=[
383399
imagebuilder.CfnImageRecipe.InstanceBlockDeviceMappingProperty(
384400
device_name=self._get_root_device_name(),
@@ -401,12 +417,6 @@ def _add_imagebuilder_image_recipe(self, build_tags, components, lambda_cleanup_
401417

402418
return image_recipe_resource
403419

404-
def _add_imgaebuilder_user_data_override(self):
405-
imagebuilder_user_data = os.path.join(imagebuilder_utils.get_resources_directory(), "imagebuilder", "user_data.sh")
406-
with open(imagebuilder_user_data, "r", encoding="utf-8") as user_data_file:
407-
user_data_content = user_data_file.read()
408-
409-
return Fn.base64(Fn.sub(user_data_content))
410420

411421
def _add_imagebuilder_components(self, build_tags, lambda_cleanup_policy_statements):
412422
imagebuilder_resources_dir = os.path.join(imagebuilder_utils.get_resources_directory(), "imagebuilder")

0 commit comments

Comments
 (0)