in cli/src/pcluster/templates/imagebuilder_stack.py [0:0]
def _add_imagebuilder_components(self, build_tags, lambda_cleanup_policy_statements):
imagebuilder_resources_dir = os.path.join(imagebuilder_utils.get_resources_directory(), "imagebuilder")
# ImageBuilderComponents
components = []
components_resources = []
if self.config.build and self.config.build.update_os_packages and self.config.build.update_os_packages.enabled:
update_os_component_resource = imagebuilder.CfnComponent(
self,
"UpdateOSComponent",
name=self._build_resource_name(IMAGEBUILDER_RESOURCE_NAME_PREFIX + "-UpdateOS"),
version=utils.get_installed_version(base_version_only=True),
tags=build_tags,
description="Update OS and Reboot",
platform="Linux",
data=Fn.sub(_load_yaml(imagebuilder_resources_dir, "update_and_reboot.yaml")),
)
components.append(
imagebuilder.CfnImageRecipe.ComponentConfigurationProperty(component_arn=Fn.ref("UpdateOSComponent"))
)
components_resources.append(update_os_component_resource)
if not self.custom_cleanup_lambda_role:
self._add_resource_delete_policy(
lambda_cleanup_policy_statements,
["imagebuilder:DeleteComponent"],
[
self.format_arn(
service="imagebuilder",
resource="component",
resource_name="{0}/*".format(
self._build_resource_name(
IMAGEBUILDER_RESOURCE_NAME_PREFIX + "-UpdateOS", to_lower=True
)
),
)
],
)
disable_pcluster_component = (
self.config.dev_settings.disable_pcluster_component
if self.config.dev_settings and self.config.dev_settings.disable_pcluster_component
else False
)
if not disable_pcluster_component:
parallelcluster_component_resource = imagebuilder.CfnComponent(
self,
"ParallelClusterComponent",
name=self._build_resource_name(IMAGEBUILDER_RESOURCE_NAME_PREFIX),
version=utils.get_installed_version(base_version_only=True),
tags=build_tags,
description="Install ParallelCluster software stack",
platform="Linux",
data=Fn.sub(_load_yaml(imagebuilder_resources_dir, "parallelcluster.yaml")),
)
components.append(
imagebuilder.CfnImageRecipe.ComponentConfigurationProperty(
component_arn=Fn.ref("ParallelClusterComponent")
)
)
components_resources.append(parallelcluster_component_resource)
if not self.custom_cleanup_lambda_role:
self._add_resource_delete_policy(
lambda_cleanup_policy_statements,
["imagebuilder:DeleteComponent"],
[
self.format_arn(
service="imagebuilder",
resource="component",
resource_name="{0}/*".format(
self._build_resource_name(IMAGEBUILDER_RESOURCE_NAME_PREFIX, to_lower=True)
),
)
],
)
tag_component_resource = imagebuilder.CfnComponent(
self,
"ParallelClusterTagComponent",
name=self._build_resource_name(IMAGEBUILDER_RESOURCE_NAME_PREFIX + "-Tag"),
version=utils.get_installed_version(base_version_only=True),
tags=build_tags,
description="Tag ParallelCluster AMI",
platform="Linux",
data=_load_yaml(imagebuilder_resources_dir, "parallelcluster_tag.yaml"),
)
components.append(
imagebuilder.CfnImageRecipe.ComponentConfigurationProperty(
component_arn=Fn.ref("ParallelClusterTagComponent")
)
)
components_resources.append(tag_component_resource)
if not self.custom_cleanup_lambda_role:
self._add_resource_delete_policy(
lambda_cleanup_policy_statements,
["imagebuilder:DeleteComponent"],
[
self.format_arn(
service="imagebuilder",
resource="component",
resource_name="{0}/*".format(
self._build_resource_name(IMAGEBUILDER_RESOURCE_NAME_PREFIX + "-Tag", to_lower=True)
),
)
],
)
if self.config.build.components:
self._add_custom_components(components, lambda_cleanup_policy_statements, components_resources)
disable_validate_and_test_component = (
self.config.dev_settings.disable_validate_and_test
if self.config.dev_settings and isinstance(self.config.dev_settings.disable_validate_and_test, bool)
else True
)
if not disable_pcluster_component and not disable_validate_and_test_component:
validate_component_resource = imagebuilder.CfnComponent(
self,
id="ParallelClusterValidateComponent",
name=self._build_resource_name(IMAGEBUILDER_RESOURCE_NAME_PREFIX + "-Validate"),
version=utils.get_installed_version(base_version_only=True),
tags=build_tags,
description="Validate ParallelCluster AMI",
platform="Linux",
data=_load_yaml(imagebuilder_resources_dir, "parallelcluster_validate.yaml"),
)
components.append(
imagebuilder.CfnImageRecipe.ComponentConfigurationProperty(
component_arn=Fn.ref("ParallelClusterValidateComponent")
)
)
components_resources.append(validate_component_resource)
if not self.custom_cleanup_lambda_role:
self._add_resource_delete_policy(
lambda_cleanup_policy_statements,
["imagebuilder:DeleteComponent"],
[
self.format_arn(
service="imagebuilder",
resource="component",
resource_name="{0}/*".format(
self._build_resource_name(
IMAGEBUILDER_RESOURCE_NAME_PREFIX + "-Validate", to_lower=True
)
),
)
],
)
test_component_resource = imagebuilder.CfnComponent(
self,
id="ParallelClusterTestComponent",
name=self._build_resource_name(IMAGEBUILDER_RESOURCE_NAME_PREFIX + "-Test"),
version=utils.get_installed_version(base_version_only=True),
tags=build_tags,
description="Test ParallelCluster AMI",
platform="Linux",
data=_load_yaml(imagebuilder_resources_dir, "parallelcluster_test.yaml"),
)
components.append(
imagebuilder.CfnImageRecipe.ComponentConfigurationProperty(
component_arn=Fn.ref("ParallelClusterTestComponent")
)
)
components_resources.append(test_component_resource)
if not self.custom_cleanup_lambda_role:
self._add_resource_delete_policy(
lambda_cleanup_policy_statements,
["imagebuilder:DeleteComponent"],
[
self.format_arn(
service="imagebuilder",
resource="component",
resource_name="{0}/*".format(
self._build_resource_name(IMAGEBUILDER_RESOURCE_NAME_PREFIX + "-Test", to_lower=True)
),
)
],
)
return components, components_resources