Skip to content

Commit de61252

Browse files
committed
Refactor NICE DCV defaults attributes and separate features
Use a global test for ARM instances, to avoid to repeat the check for each variable. Use value_for_platform to define defaults attributes. Add newlines between different features * Move Munge default close to other Munge attributes. * Add retries to Xorg package installation * Rubocop fixes ## References: * https://www.rubydoc.info/gems/rubocop/RuboCop/Cop/Style/IfUnlessModifier * https://www.rubydoc.info/gems/rubocop/RuboCop/Cop/Style/SelfAssignment Signed-off-by: Enrico Usai <[email protected]>
1 parent 7924032 commit de61252

File tree

3 files changed

+70
-45
lines changed

3 files changed

+70
-45
lines changed

attributes/default.rb

+65-41
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,13 @@
2121
default['cfncluster']['scripts_dir'] = "#{node['cfncluster']['base_dir']}/scripts"
2222
default['cfncluster']['license_dir'] = "#{node['cfncluster']['base_dir']}/licenses"
2323
default['cfncluster']['configs_dir'] = "#{node['cfncluster']['base_dir']}/configs"
24+
2425
# Cluster config
2526
default['cfncluster']['cluster_s3_bucket'] = nil
2627
default['cfncluster']['cluster_config_s3_key'] = nil
2728
default['cfncluster']['cluster_config_version'] = nil
2829
default['cfncluster']['cluster_config_path'] = "#{node['cfncluster']['configs_dir']}/cluster_config.json"
30+
2931
# Python Version
3032
default['cfncluster']['python-version'] = '3.6.9'
3133
default['cfncluster']['python-version-centos6'] = '2.7.17'
@@ -42,19 +44,23 @@
4244
default['cfncluster']['cookbook_virtualenv_path'] = "#{node['cfncluster']['system_pyenv_root']}/versions/#{node['cfncluster']['python-version']}/envs/#{node['cfncluster']['cookbook_virtualenv']}"
4345
# Node Virtualenv Path
4446
default['cfncluster']['node_virtualenv_path'] = "#{node['cfncluster']['system_pyenv_root']}/versions/#{node['cfncluster']['python-version']}/envs/#{node['cfncluster']['node_virtualenv']}"
47+
4548
# Intel Packages
4649
default['cfncluster']['psxe']['version'] = '2020.2'
4750
default['cfncluster']['intelhpc']['version'] = '2018.0-*.el7'
4851
default['cfncluster']['intelpython2']['version'] = '2019.4'
4952
default['cfncluster']['intelpython3']['version'] = '2020.2'
53+
5054
# Intel MPI
5155
default['cfncluster']['intelmpi']['url'] = "https://registrationcenter-download.intel.com/akdlm/irc_nas/tec/16814/l_mpi_2019.8.254.tgz"
5256
default['cfncluster']['intelmpi']['version'] = '2019.8.254'
5357
default['cfncluster']['intelmpi']['modulefile'] = "/opt/intel/impi/#{node['cfncluster']['intelmpi']['version']}/intel64/modulefiles/mpi"
58+
5459
# Python packages
5560
default['cfncluster']['cfncluster-version'] = '2.9.1'
5661
default['cfncluster']['cfncluster-cookbook-version'] = '2.9.1'
5762
default['cfncluster']['cfncluster-node-version'] = '2.9.1'
63+
5864
# URLs to software packages used during install recipes
5965
# Gridengine software
6066
default['cfncluster']['sge']['version'] = '8.1.9'
@@ -74,8 +80,12 @@
7480
# Munge
7581
default['cfncluster']['munge']['munge_version'] = '0.5.14'
7682
default['cfncluster']['munge']['munge_url'] = "https://github.com/dun/munge/archive/munge-#{node['cfncluster']['munge']['munge_version']}.tar.gz"
83+
# Munge key
84+
default['cfncluster']['munge']['munge_key'] = 'YflQEFLjoxsmEK5vQyKklkLKJ#LkjLKDJF@*(#)ajLKQ@hLKN#()FSU(#@KLJH$@HKSASG)*DUJJDksdN'
85+
7786
# Ganglia
7887
default['cfncluster']['ganglia_enabled'] = 'no'
88+
7989
# NVIDIA
8090
default['cfncluster']['nvidia']['enabled'] = 'no'
8191
if node['platform'] == 'centos' && node['platform_version'].to_i < 7
@@ -89,51 +99,67 @@
8999
default['cfncluster']['nvidia']['cuda_version'] = '11.0'
90100
default['cfncluster']['nvidia']['cuda_url'] = 'https://developer.download.nvidia.com/compute/cuda/11.0.2/local_installers/cuda_11.0.2_450.51.05_linux.run'
91101
end
102+
92103
# EFA
93104
default['cfncluster']['efa']['installer_version'] = '1.10.0'
94105
default['cfncluster']['efa']['installer_url'] = "https://efa-installer.amazonaws.com/aws-efa-installer-#{node['cfncluster']['efa']['installer_version']}.tar.gz"
106+
95107
# NICE DCV
96108
default['cfncluster']['dcv']['installed'] = 'yes'
97109
default['cfncluster']['dcv']['version'] = '2020.1-9012'
98-
default['cfncluster']['dcv']['supported_os'] = if arm_instance?
99-
%w[ubuntu18 amazon2]
100-
else
101-
%w[centos7 ubuntu18 amazon2]
102-
end
103-
default['cfncluster']['dcv']['url_architecture_id'] = if arm_instance?
104-
'aarch64'
105-
else
106-
'x86_64'
107-
end
108-
case "#{node['platform']}#{node['platform_version'].to_i}"
109-
when 'centos7', 'amazon2'
110-
default['cfncluster']['dcv']['package'] = "nice-dcv-#{node['cfncluster']['dcv']['version']}-el7-#{node['cfncluster']['dcv']['url_architecture_id']}"
111-
default['cfncluster']['dcv']['server'] = "nice-dcv-server-2020.1.9012-1.el7.#{node['cfncluster']['dcv']['url_architecture_id']}.rpm" # NICE DCV server package
112-
default['cfncluster']['dcv']['xdcv'] = "nice-xdcv-2020.1.338-1.el7.#{node['cfncluster']['dcv']['url_architecture_id']}.rpm" # required to create virtual sessions
113-
default['cfncluster']['dcv']['gl'] = "nice-dcv-gl-2020.1.840-1.el7.#{node['cfncluster']['dcv']['url_architecture_id']}.rpm" # required to enable GPU sharing
114-
default['cfncluster']['dcv']['sha256sum'] = if arm_instance?
115-
"d590d81360b0e96652cd1ef3a74fff5cb9381f57ff55685a8ddde48d494968e4"
116-
else
117-
"c36020cce52ba371a796c041352db6c5d6d55d35acbbfbadafd834e1265aa5bf"
118-
end
119-
120-
when 'ubuntu18'
110+
if arm_instance?
111+
default['cfncluster']['dcv']['supported_os'] = %w[ubuntu18 amazon2]
112+
default['cfncluster']['dcv']['url_architecture_id'] = 'aarch64'
113+
default['cfncluster']['dcv']['sha256sum'] = value_for_platform(
114+
'centos' => {
115+
'~>7' => "d590d81360b0e96652cd1ef3a74fff5cb9381f57ff55685a8ddde48d494968e4"
116+
},
117+
'amazon' => { '2' => "d590d81360b0e96652cd1ef3a74fff5cb9381f57ff55685a8ddde48d494968e4" },
118+
'ubuntu' => { '18.04' => "0cd0512d57808cee0c48d0817a515825f9c512cb9d70e5672fecbb7450b729b3" }
119+
)
120+
else
121+
default['cfncluster']['dcv']['supported_os'] = %w[centos7 ubuntu18 amazon2]
122+
default['cfncluster']['dcv']['url_architecture_id'] = 'x86_64'
123+
default['cfncluster']['dcv']['sha256sum'] = value_for_platform(
124+
'centos' => {
125+
'~>7' => "c36020cce52ba371a796c041352db6c5d6d55d35acbbfbadafd834e1265aa5bf"
126+
},
127+
'amazon' => { '2' => "c36020cce52ba371a796c041352db6c5d6d55d35acbbfbadafd834e1265aa5bf" },
128+
'ubuntu' => { '18.04' => "7569c95465743b512f1ab191e58ea09777353b401c1ec130ee8ea344e00f8900" }
129+
)
130+
end
131+
if "#{node['platform']}#{node['platform_version'].to_i}" == 'ubuntu18'
121132
# Unlike the other supported OSs, the DCV package names for Ubuntu 18.04 use different architecture abbreviations than those used in the download URLs.
122-
default['cfncluster']['dcv']['package_architecture_id'] = if arm_instance?
123-
'arm64'
124-
else
125-
'amd64'
126-
end
127-
default['cfncluster']['dcv']['package'] = "nice-dcv-#{node['cfncluster']['dcv']['version']}-ubuntu1804-#{node['cfncluster']['dcv']['url_architecture_id']}"
128-
default['cfncluster']['dcv']['server'] = "nice-dcv-server_2020.1.9012-1_#{node['cfncluster']['dcv']['package_architecture_id']}.ubuntu1804.deb" # NICE DCV server package
129-
default['cfncluster']['dcv']['xdcv'] = "nice-xdcv_2020.1.338-1_#{node['cfncluster']['dcv']['package_architecture_id']}.ubuntu1804.deb" # required to create virtual sessions
130-
default['cfncluster']['dcv']['gl'] = "nice-dcv-gl_2020.1.840-1_#{node['cfncluster']['dcv']['package_architecture_id']}.ubuntu1804.deb" # required to enable GPU sharing
131-
default['cfncluster']['dcv']['sha256sum'] = if arm_instance?
132-
"0cd0512d57808cee0c48d0817a515825f9c512cb9d70e5672fecbb7450b729b3"
133-
else
134-
"7569c95465743b512f1ab191e58ea09777353b401c1ec130ee8ea344e00f8900"
135-
end
133+
default['cfncluster']['dcv']['package_architecture_id'] = arm_instance? ? 'arm64' : 'amd64'
136134
end
135+
default['cfncluster']['dcv']['package'] = value_for_platform(
136+
'centos' => {
137+
'~>7' => "nice-dcv-#{node['cfncluster']['dcv']['version']}-el7-#{node['cfncluster']['dcv']['url_architecture_id']}"
138+
},
139+
'amazon' => { '2' => "nice-dcv-#{node['cfncluster']['dcv']['version']}-el7-#{node['cfncluster']['dcv']['url_architecture_id']}" },
140+
'ubuntu' => { '18.04' => "nice-dcv-#{node['cfncluster']['dcv']['version']}-ubuntu1804-#{node['cfncluster']['dcv']['url_architecture_id']}" }
141+
)
142+
default['cfncluster']['dcv']['server'] = value_for_platform( # NICE DCV server package
143+
'centos' => {
144+
'~>7' => "nice-dcv-server-2020.1.9012-1.el7.#{node['cfncluster']['dcv']['url_architecture_id']}.rpm"
145+
},
146+
'amazon' => { '2' => "nice-dcv-server-2020.1.9012-1.el7.#{node['cfncluster']['dcv']['url_architecture_id']}.rpm" },
147+
'ubuntu' => { '18.04' => "nice-dcv-server_2020.1.9012-1_#{node['cfncluster']['dcv']['package_architecture_id']}.ubuntu1804.deb" }
148+
)
149+
default['cfncluster']['dcv']['xdcv'] = value_for_platform( # required to create virtual sessions
150+
'centos' => {
151+
'~>7' => "nice-xdcv-2020.1.338-1.el7.#{node['cfncluster']['dcv']['url_architecture_id']}.rpm"
152+
},
153+
'amazon' => { '2' => "nice-xdcv-2020.1.338-1.el7.#{node['cfncluster']['dcv']['url_architecture_id']}.rpm" },
154+
'ubuntu' => { '18.04' => "nice-xdcv_2020.1.338-1_#{node['cfncluster']['dcv']['package_architecture_id']}.ubuntu1804.deb" }
155+
)
156+
default['cfncluster']['dcv']['gl'] = value_for_platform( # required to enable GPU sharing
157+
'centos' => {
158+
'~>7' => "nice-dcv-gl-2020.1.840-1.el7.#{node['cfncluster']['dcv']['url_architecture_id']}.rpm"
159+
},
160+
'amazon' => { '2' => "nice-dcv-gl-2020.1.840-1.el7.#{node['cfncluster']['dcv']['url_architecture_id']}.rpm" },
161+
'ubuntu' => { '18.04' => "nice-dcv-gl_2020.1.840-1_#{node['cfncluster']['dcv']['package_architecture_id']}.ubuntu1804.deb" }
162+
)
137163
default['cfncluster']['dcv']['url'] = "https://d1uj6qtbmh3dt5.cloudfront.net/2020.1/Servers/#{node['cfncluster']['dcv']['package']}.tgz"
138164
# DCV external authenticator configuration
139165
default['cfncluster']['dcv']['authenticator']['user'] = "dcvextauth"
@@ -142,6 +168,7 @@
142168
default['cfncluster']['dcv']['authenticator']['private_key'] = "/etc/parallelcluster/ext-auth-private-key.pem"
143169
default['cfncluster']['dcv']['authenticator']['virtualenv'] = "dcv_authenticator_virtualenv"
144170
default['cfncluster']['dcv']['authenticator']['virtualenv_path'] = "#{node['cfncluster']['system_pyenv_root']}/versions/#{node['cfncluster']['python-version']}/envs/#{node['cfncluster']['dcv']['authenticator']['virtualenv']}"
171+
145172
# CloudWatch Agent
146173
default['cfncluster']['cloudwatch']['public_key_url'] = "https://s3.amazonaws.com/amazoncloudwatch-agent/assets/amazon-cloudwatch-agent.gpg"
147174
default['cfncluster']['cloudwatch']['public_key_local_path'] = "#{node['cfncluster']['sources_dir']}/amazon-cloudwatch-agent.gpg"
@@ -312,13 +339,10 @@
312339
default['cfncluster']['lustre']['client_url'] = value_for_platform(
313340
'centos' => {
314341
'7.6' => "https://downloads.whamcloud.com/public/lustre/lustre-2.10.6/el7/client/RPMS/x86_64/lustre-client-2.10.6-1.el7.x86_64.rpm",
315-
'7.5' => "https://downloads.whamcloud.com/public/lustre/lustre-2.10.5/el7.5.1804/client/RPMS/x86_64/lustre-client-2.10.5-1.el7.x86_64.rpm",
342+
'7.5' => "https://downloads.whamcloud.com/public/lustre/lustre-2.10.5/el7.5.1804/client/RPMS/x86_64/lustre-client-2.10.5-1.el7.x86_64.rpm"
316343
}
317344
)
318345

319-
# Munge key
320-
default['cfncluster']['munge']['munge_key'] = 'YflQEFLjoxsmEK5vQyKklkLKJ#LkjLKDJF@*(#)ajLKQ@hLKN#()FSU(#@KLJH$@HKSASG)*DUJJDksdN'
321-
322346
# ParallelCluster internal variables (also in /etc/parallelcluster/cfnconfig)
323347
default['cfncluster']['cfn_region'] = 'us-east-1'
324348
default['cfncluster']['stack_name'] = nil

recipes/dcv_config.rb

+1-3
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,7 @@ def allow_gpu_acceleration
3333
# Update the xorg.conf to set up NVIDIA drivers.
3434
# NOTE: --enable-all-gpus parameter is needed to support servers with more than one NVIDIA GPU.
3535
nvidia_xconfig_command = "nvidia-xconfig --preserve-busid --enable-all-gpus"
36-
if node['ec2']['instance_type'].start_with?("g2.")
37-
nvidia_xconfig_command = nvidia_xconfig_command + " --use-display-device=none"
38-
end
36+
nvidia_xconfig_command += " --use-display-device=none" if node['ec2']['instance_type'].start_with?("g2.")
3937
execute "Set up Nvidia drivers for X configuration" do
4038
user 'root'
4139
command nvidia_xconfig_command

recipes/dcv_install.rb

+4-1
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,10 @@ def disable_lock_screen
8585
command 'yum -y install @gnome'
8686
end
8787
# Install X Window System (required when using GPU acceleration)
88-
package "xorg-x11-server-Xorg"
88+
package "xorg-x11-server-Xorg" do
89+
retries 3
90+
retry_delay 5
91+
end
8992

9093
# libvirtd service creates virtual bridge interfaces.
9194
# It's provided by libvirt-daemon, installed as requirement for gnome-boxes, included in @gnome.

0 commit comments

Comments
 (0)