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
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ CHANGELOG
stop the compute fleet. It's now possible to update them by setting `Scheduling/SlurmSettings/QueueUpdateStrategy`
to TERMINATE. ParallelCluster will terminate only the nodes removed during a resize of the cluster capacity
performed through a cluster update.
- Add support for RHEL9.
- Add support for Rocky Linux 9 as `CustomAmi` created through `build-image` process. No public official ParallelCluster Rocky9 Linux AMI is made available at this time.
- Remove `CommunicationParameters` from the Custom Slurm Settings deny list.
- Add `DeploymentSettings/DisableSudoAccessForDefaultUser` parameter to disable sudo access of default user in supported OSes.

Expand Down
2 changes: 1 addition & 1 deletion cli/src/pcluster/cli/commands/dcv_util.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,6 @@ def get_supported_dcv_os(architecture):
"""Return a list of all the operating system supported by DCV."""
architectures_dict = {
"x86_64": SUPPORTED_OSES,
"arm64": ["alinux2", "centos7", "rhel8", "rocky8"],
"arm64": ["alinux2", "centos7", "rhel8", "rocky8", "rhel9", "rocky9"],
}
return architectures_dict.get(architecture, [])
6 changes: 5 additions & 1 deletion cli/src/pcluster/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@

SUPPORTED_SCHEDULERS = ["slurm", "awsbatch"]
SCHEDULERS_SUPPORTING_IMDS_SECURED = ["slurm"]
SUPPORTED_OSES = ["alinux2", "centos7", "ubuntu2004", "ubuntu2204", "rhel8", "rocky8"]
SUPPORTED_OSES = ["alinux2", "centos7", "ubuntu2004", "ubuntu2204", "rhel8", "rocky8", "rhel9", "rocky9"]
SUPPORTED_OSES_FOR_SCHEDULER = {"slurm": SUPPORTED_OSES, "awsbatch": ["alinux2"]}
DELETE_POLICY = "Delete"
RETAIN_POLICY = "Retain"
Expand All @@ -42,6 +42,8 @@
"ubuntu2204": {"user": "ubuntu"},
"rhel8": {"user": "ec2-user"},
"rocky8": {"user": "rocky"},
"rhel9": {"user": "ec2-user"},
"rocky9": {"user": "rocky"},
}

OS_TO_IMAGE_NAME_PART_MAP = {
Expand All @@ -51,6 +53,8 @@
"ubuntu2204": "ubuntu-2204-lts-hvm",
"rhel8": "rhel8-hvm",
"rocky8": "rocky8-hvm",
"rhel9": "rhel9-hvm",
"rocky9": "rocky9-hvm",
}
# We do not publicly publish/release Parallelcluster AMI of below OSSes
PRIVATE_OSES = ["rocky8"]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,10 @@ phases:
OS='rhel8'
elif [ `echo "${!RELEASE}" | grep '^rocky\.8'` ]; then
OS='rocky8'
elif [ `echo "${!RELEASE}" | grep '^rhel\.9'` ]; then
OS='rhel9'
elif [ `echo "${!RELEASE}" | grep '^rocky\.9'` ]; then
OS='rocky9'
else
echo "Operating System '${!RELEASE}' is not supported. Failing build."
exit {{ FailExitCode }}
Expand Down Expand Up @@ -153,10 +157,10 @@ phases:
exit {{ FailExitCode }}
fi

# This component only supports aarch64 CPUs on Amazon Linux 2, Ubuntu2004, Ubuntu2204, Centos7, RHEL8 and Rocky8
# This component only supports aarch64 CPUs on Amazon Linux 2, Ubuntu2004, Ubuntu2204, Centos7, RHEL8, Rocky8, RHEL9 and Rocky9
ARCH=$(uname -m)
if [[ `echo ${!ARCH}` == 'aarch64' ]]; then
if [ `echo "${!RELEASE}" | grep -Ev '^(amzn\.2|centos\.7|ubuntu\.20\.04|ubuntu\.22\.04|rhel\.8|rocky\.8)'` ]; then
if [ `echo "${!RELEASE}" | grep -Ev '^(amzn\.2|centos\.7|ubuntu\.20\.04|ubuntu\.22\.04|rhel\.8|rocky\.8|rhel\.9|rocky\.9)'` ]; then
echo "This component does not support '${!RELEASE}' on ARM64 CPUs. Failing build."
exit {{ FailExitCode }}
fi
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,10 @@ phases:
OS='rhel8'
elif [ $(echo "${RELEASE}" | grep '^rocky\.8') ]; then
OS='rocky8'
elif [ $(echo "${RELEASE}" | grep '^rhel\.9') ]; then
OS='rhel9'
elif [ $(echo "${RELEASE}" | grep '^rocky\.9') ]; then
OS='rocky9'
fi

echo ${OS}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,10 @@ phases:
OS='rhel8'
elif [ `echo "${RELEASE}" | grep '^rocky\.8'` ]; then
OS='rocky8'
elif [ `echo "${RELEASE}" | grep '^rhel\.9'` ]; then
OS='rhel9'
elif [ `echo "${RELEASE}" | grep '^rocky\.9'` ]; then
OS='rocky9'
else
echo "Operating System '${RELEASE}' is not supported. Failing build." && exit 1
fi
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,10 @@ phases:
OS='rhel8'
elif [ `echo "${RELEASE}" | grep '^rocky\.8'` ]; then
OS='rocky8'
elif [ `echo "${RELEASE}" | grep '^rhel\.9'` ]; then
OS='rhel9'
elif [ `echo "${RELEASE}" | grep '^rocky\.9'` ]; then
OS='rocky9'
else
echo "Operating System '${RELEASE}' is not supported. Failing build." && exit 1
fi
Expand Down Expand Up @@ -126,7 +130,7 @@ phases:
set -v
ARCHITECTURE='{{ validate.OperatingSystemArchitecture.outputs.stdout }}'
OS='{{ validate.OperatingSystemName.outputs.stdout }}'
if [ ${ARCHITECTURE} == 'arm64' ] && [[ ${OS} =~ ^(ubuntu(20|22)04|alinux2|rhel8|rocky8)$ ]] || [ ${ARCHITECTURE} == 'x86_64' ]; then
if [ ${ARCHITECTURE} == 'arm64' ] && [[ ${OS} =~ ^(ubuntu(20|22)04|alinux2|rhel8|rocky8|rhel9|rocky9)$ ]] || [ ${ARCHITECTURE} == 'x86_64' ]; then
echo "true"
else
echo "false"
Expand Down
25 changes: 9 additions & 16 deletions cli/src/pcluster/resources/imagebuilder/update_and_reboot.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,10 @@ phases:
OS='rhel8'
elif [ `echo "${!RELEASE}" | grep '^rocky\.8'` ]; then
OS='rocky8'
elif [ `echo "${!RELEASE}" | grep '^rhel\.9'` ]; then
OS='rhel9'
elif [ `echo "${!RELEASE}" | grep '^rocky\.9'` ]; then
OS='rocky9'
else
echo "Operating System '${!RELEASE}' is not supported. Failing build."
exit {{ FailExitCode }}
Expand Down Expand Up @@ -84,10 +88,10 @@ phases:
exit {{ FailExitCode }}
fi

# This component only supports aarch64 CPUs on Amazon Linux 2, Ubuntu2004, Ubuntu2204, Centos7, RHEL8 and Rocky8
# This component only supports aarch64 CPUs on Amazon Linux 2, Ubuntu2004, Ubuntu2204, Centos7, RHEL8, Rocky8, RHEL9 and Rocky9
ARCH=$(uname -m)
if [[ `echo ${!ARCH}` == 'aarch64' ]]; then
if [ `echo "${!RELEASE}" | grep -Ev '^(amzn\.2|centos\.7|ubuntu\.20\.04|ubuntu\.22\.04|rhel\.8|rocky\.8)'` ]; then
if [ `echo "${!RELEASE}" | grep -Ev '^(amzn\.2|centos\.7|ubuntu\.20\.04|ubuntu\.22\.04|rhel\.8|rocky\.8|rhel\.9|rocky\.9)'` ]; then
echo "This component does not support '${!RELEASE}' on ARM64 CPUs. Failing build."
exit {{ FailExitCode }}
fi
Expand Down Expand Up @@ -238,20 +242,9 @@ phases:
if [[ ${!PLATFORM} == RHEL ]]; then
yum -y update

if [[ ${!OS} == "rhel8" ]] || [[ ${!OS} == "rocky8" ]] ; then
# package-cleanup has changed in RHEL8 and it works differently
# RHEL8 keeps at least 2 kernel for fallback reason https://access.redhat.com/solutions/1227
# The kernel cleanup should be performed manually

# get the default kernel for the next boot
LAST_KERNEL_VERSION=$(grubby --default-kernel | sed -e "s/.*-\(4.18.0-.*\).$(uname -m)/\1/g")

# get all the installed kernel versions except the one for the next boot
KERNEL_VERSIONS_CLEANUP=$(rpm -q --qf "%{VERSION}-%{RELEASE}\n" kernel | grep -v "$LAST_KERNEL_VERSION")
for VERSION in $KERNEL_VERSIONS_CLEANUP; do
echo "Removing kernel-$VERSION kernel-core-$VERSION kernel-modules-$VERSION"
rpm -e kernel-$VERSION kernel-core-$VERSION kernel-modules-$VERSION;
done
if [[ ${!OS} == "rhel8" ]] || [[ ${!OS} == "rocky8" ]] || [[ ${!OS} == "rhel9" ]] || [[ ${!OS} == "rocky9" ]] ; then
# package-cleanup has changed in RHEL8 and it works differently https://access.redhat.com/solutions/1227
yum remove $(yum repoquery --installonly --latest-limit=-2 -q)
else
package-cleanup -y --oldkernels --count=1
fi
Expand Down
2 changes: 1 addition & 1 deletion cli/src/pcluster/templates/cw_dashboard_builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -733,7 +733,7 @@ def _add_cw_log(self):
[
self._new_cw_log_widget(
title="system-messages",
conditions=[Condition(["alinux2", "centos7", "rhel8", "rocky8"], base_os)],
conditions=[Condition(["alinux2", "centos7", "rhel8", "rocky8", "rhel9", "rocky9"], base_os)],
filters=[self._new_filter(pattern=f"{head_private_ip}.*system-messages")],
),
self._new_cw_log_widget(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ Allowed values for Operating System:
4. ubuntu2204
5. rhel8
6. rocky8
7. rhel9
8. rocky9
The EC2 instance selected supports enhanced networking capabilities using Elastic Fabric Adapter (EFA). EFA enables you to run applications requiring high levels of inter-node communications at scale on AWS at no additional charge (https://docs.aws.amazon.com/parallelcluster/latest/ug/efa-v3.html).
Allowed values for VPC ID:
# id name number_of_subnets
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ Allowed values for Operating System:
4. ubuntu2204
5. rhel8
6. rocky8
7. rhel9
8. rocky9
Allowed values for VPC ID:
# id name number_of_subnets
--- ------------ --------------------------------- -------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ Allowed values for Operating System:
4. ubuntu2204
5. rhel8
6. rocky8
7. rhel9
8. rocky9
The EC2 instance selected supports enhanced networking capabilities using Elastic Fabric Adapter (EFA). EFA enables you to run applications requiring high levels of inter-node communications at scale on AWS at no additional charge (https://docs.aws.amazon.com/parallelcluster/latest/ug/efa-v3.html).
Enabling EFA requires compute instances to be placed within a Placement Group. Please specify an existing Placement Group name or leave it blank for ParallelCluster to create one.
Allowed values for VPC ID:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ Allowed values for Operating System:
4. ubuntu2204
5. rhel8
6. rocky8
7. rhel9
8. rocky9
The EC2 instance selected supports enhanced networking capabilities using Elastic Fabric Adapter (EFA). EFA enables you to run applications requiring high levels of inter-node communications at scale on AWS at no additional charge (https://docs.aws.amazon.com/parallelcluster/latest/ug/efa-v3.html).
Enabling EFA requires compute instances to be placed within a Placement Group. Please specify an existing Placement Group name or leave it blank for ParallelCluster to create one.
Allowed values for VPC ID:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ Allowed values for Operating System:
4. ubuntu2204
5. rhel8
6. rocky8
7. rhel9
8. rocky9
The EC2 instance selected supports enhanced networking capabilities using Elastic Fabric Adapter (EFA). EFA enables you to run applications requiring high levels of inter-node communications at scale on AWS at no additional charge (https://docs.aws.amazon.com/parallelcluster/latest/ug/efa-v3.html).
Enabling EFA requires compute instances to be placed within a Placement Group. Please specify an existing Placement Group name or leave it blank for ParallelCluster to create one.
ERROR: non-existent-test-pg is not an acceptable value for Placement Group name
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ Allowed values for Operating System:
4. ubuntu2204
5. rhel8
6. rocky8
7. rhel9
8. rocky9
Allowed values for VPC ID:
# id name number_of_subnets
--- ------------ --------------------------------- -------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ Allowed values for Operating System:
4. ubuntu2204
5. rhel8
6. rocky8
7. rhel9
8. rocky9
Allowed values for VPC ID:
# id name number_of_subnets
--- ------------ --------------------------------- -------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ Allowed values for Operating System:
4. ubuntu2204
5. rhel8
6. rocky8
7. rhel9
8. rocky9
Allowed values for VPC ID:
# id name number_of_subnets
--- ------------ --------------------------------- -------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ Allowed values for Operating System:
4. ubuntu2204
5. rhel8
6. rocky8
7. rhel9
8. rocky9
Allowed values for VPC ID:
# id name number_of_subnets
--- ------------ --------------------------------- -------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ Allowed values for Operating System:
4. ubuntu2204
5. rhel8
6. rocky8
7. rhel9
8. rocky9
Allowed values for VPC ID:
# id name number_of_subnets
--- ------------ --------------------------------- -------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ Allowed values for Operating System:
4. ubuntu2204
5. rhel8
6. rocky8
7. rhel9
8. rocky9
Allowed values for Availability Zone:
1. eu-west-1a
2. eu-west-1b
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ Allowed values for Operating System:
4. ubuntu2204
5. rhel8
6. rocky8
7. rhel9
8. rocky9
There are no VPC for the given region. Starting automatic creation of VPC and subnets...
Allowed values for Availability Zone:
1. eu-west-1a
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ Allowed values for Operating System:
4. ubuntu2204
5. rhel8
6. rocky8
7. rhel9
8. rocky9
There are no VPC for the given region. Starting automatic creation of VPC and subnets...
Allowed values for Availability Zone:
1. eu-west-1a
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ Allowed values for Operating System:
4. ubuntu2204
5. rhel8
6. rocky8
7. rhel9
8. rocky9
Allowed values for VPC ID:
# id name number_of_subnets
--- ------------ --------------------------------- -------------------
Expand Down
6 changes: 3 additions & 3 deletions cli/tests/pcluster/test_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,8 @@ def test_generate_random_prefix():
@pytest.mark.parametrize(
"architecture, supported_oses",
[
("x86_64", ["alinux2", "centos7", "ubuntu2004", "ubuntu2204", "rhel8", "rocky8"]),
("arm64", ["alinux2", "centos7", "ubuntu2004", "ubuntu2204", "rhel8", "rocky8"]),
("x86_64", ["alinux2", "centos7", "ubuntu2004", "ubuntu2204", "rhel8", "rocky8", "rhel9", "rocky9"]),
("arm64", ["alinux2", "centos7", "ubuntu2004", "ubuntu2204", "rhel8", "rocky8", "rhel9", "rocky9"]),
],
)
def test_get_supported_os_for_architecture(architecture, supported_oses):
Expand All @@ -100,7 +100,7 @@ def test_get_supported_os_for_architecture(architecture, supported_oses):
@pytest.mark.parametrize(
"scheduler, supported_oses",
[
("slurm", ["alinux2", "centos7", "ubuntu2004", "ubuntu2204", "rhel8", "rocky8"]),
("slurm", ["alinux2", "centos7", "ubuntu2004", "ubuntu2204", "rhel8", "rocky8", "rhel9", "rocky9"]),
("awsbatch", ["alinux2"]),
],
)
Expand Down
1 change: 1 addition & 0 deletions cloudformation/storage/storage-stack.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,7 @@ Resources:
Condition: CreateFsxLustre
Properties:
FileSystemType: LUSTRE
FileSystemTypeVersion: '2.12'
LustreConfiguration:
DeploymentType: PERSISTENT_1
ExportPath: !Ref FsxLustreExportPath
Expand Down
4 changes: 4 additions & 0 deletions pc_support/os_3.9.0.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@
{
"name": "rhel8",
"description": "Red Hat Enterprise Linux 8"
},
{
"name": "rhel9",
"description": "Red Hat Enterprise Linux 9"
}
]
}
14 changes: 7 additions & 7 deletions tests/integration-tests/configs/common.jinja2
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,19 @@
{%- set SCHEDULERS_ALL = ["slurm", "awsbatch"] -%}
{%- set SCHEDULERS_TRAD = ["slurm"] -%}
{%- set OSS_BATCH = ["alinux2"] -%}
{%- set OSS_COMMERCIAL_X86 = ["alinux2", "centos7", "ubuntu2004", "ubuntu2204", "rhel8"] -%}
{%- set OSS_CHINA_X86 = ["alinux2", "ubuntu2004", "ubuntu2204", "rhel8", "rocky8"] -%}
{%- set OSS_GOVCLOUD_X86 = ["alinux2", "ubuntu2004", "ubuntu2204", "rhel8", "rocky8"] -%}
{%- set OSS_COMMERCIAL_ARM = ["alinux2", "ubuntu2004", "ubuntu2204", "rhel8"] -%}
{%- set OSS_CHINA_ARM = ["alinux2", "ubuntu2004", "ubuntu2204", "rhel8"] -%}
{%- set OSS_GOVCLOUD_ARM = ["alinux2", "ubuntu2004", "ubuntu2204", "rhel8"] -%}
{%- set OSS_COMMERCIAL_X86 = ["alinux2", "centos7", "ubuntu2004", "ubuntu2204", "rhel8", "rhel9"] -%}
{%- set OSS_CHINA_X86 = ["alinux2", "ubuntu2004", "ubuntu2204", "rhel8", "rocky8", "rhel9", "rocky9"] -%}
{%- set OSS_GOVCLOUD_X86 = ["alinux2", "ubuntu2004", "ubuntu2204", "rhel8", "rocky8", "rhel9", "rocky9"] -%}
{%- set OSS_COMMERCIAL_ARM = ["alinux2", "ubuntu2004", "ubuntu2204", "rhel8", "rhel9"] -%}
{%- set OSS_CHINA_ARM = ["alinux2", "ubuntu2004", "ubuntu2204", "rhel8", "rhel9"] -%}
{%- set OSS_GOVCLOUD_ARM = ["alinux2", "ubuntu2004", "ubuntu2204", "rhel8", "rhel9"] -%}
{%- set OSS_ONE_PER_DISTRO = ["centos7", "alinux2", "ubuntu2004", "rhel8", "rocky8"] -%}
{%- set INSTANCES_DEFAULT_X86 = ["c5.xlarge"] -%}
{%- set INSTANCES_DEFAULT_ARM = ["m6g.xlarge"] -%} # m6g.xlarge is not supported in af-south-1, eu-south-1, eu-west-3, me-south-1
{%- set INSTANCES_DEFAULT = ["c5.xlarge", "m6g.xlarge"] -%}
{%- set INSTANCES_EFA_SUPPORTED_X86 = ["c5n.9xlarge"] -%}
{%- set INSTANCES_EFA_UNSUPPORTED_X86 = ["t2.micro"] -%}
{%- set NOT_RELEASED_OSES = ["rocky8"] -%}
{%- set NOT_RELEASED_OSES = ["rocky8", "rocky9"] -%}

{%- macro instance(instance_key) -%}
{%- if additional_instance_types_map -%}
Expand Down
Empty file.
1 change: 1 addition & 0 deletions tests/integration-tests/configs/develop.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -831,6 +831,7 @@ test-suites:
- regions: ["eu-west-2"]
schedulers: ["slurm"]
oss: ["alinux2"]
instances: {{ common.INSTANCES_DEFAULT_X86 }}
users:
test_default_user_home.py::test_default_user_local_home:
dimensions:
Expand Down
11 changes: 1 addition & 10 deletions tests/integration-tests/configs/new_os.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -201,16 +201,6 @@ test-suites:
schedulers: ["slurm"]
storage:
# Commercial regions that can't test FSx: ap-northeast-1, ap-southeast-1, ap-southeast-2, eu-central-1, eu-north-1, eu-west-1, eu-west-2, us-east-1, us-east-2, us-west-1, us-west-2
test_fsx_lustre.py::test_fsx_lustre:
dimensions:
- regions: ["eu-west-2"]
instances: {{ common.INSTANCES_DEFAULT_X86 }}
oss: {{ NEW_OS }}
schedulers: ["slurm"]
- regions: ["eu-north-1"]
instances: {{ common.INSTANCES_DEFAULT_ARM }}
oss: {{ NEW_OS }}
schedulers: ["slurm"]
# The checks performed in test_multiple_fsx is the same as test_fsx_lustre.
# We should consider this when assigning dimensions to each test.
test_fsx_lustre.py::test_multiple_fsx:
Expand Down Expand Up @@ -295,3 +285,4 @@ test-suites:
- regions: [ "eu-west-2" ]
schedulers: [ "slurm" ]
oss: {{ NEW_OS }}
instances: {{ common.INSTANCES_DEFAULT_X86 }}
Loading