diff --git a/cookbooks/aws-parallelcluster-platform/recipes/config/loginmgtd.rb b/cookbooks/aws-parallelcluster-platform/recipes/config/loginmgtd.rb index 1971f0e10..a72c28982 100644 --- a/cookbooks/aws-parallelcluster-platform/recipes/config/loginmgtd.rb +++ b/cookbooks/aws-parallelcluster-platform/recipes/config/loginmgtd.rb @@ -18,18 +18,18 @@ load_cluster_config(node['cluster']['login_cluster_config_path']) # Create the configuration file for loginmgtd -template "#{node['cluster']['shared_dir_login_nodes']}/loginmgtd_config.json" do +template "#{node['cluster']['etc_dir']}/loginmgtd_config.json" do source 'loginmgtd/loginmgtd_config.json.erb' owner node['cluster']['cluster_admin_user'] group node['cluster']['cluster_admin_user'] mode '0644' variables( - gracetime_period: lazy { node['cluster']['config'].dig(:LoginNodes, :Pools, 0, :GracetimePeriod) } + gracetime_period: lazy { node['cluster']['config'].dig(:LoginNodes, :Pools, :node['cluster']['pool_name'], :GracetimePeriod) } ) end # Create the termination hook for loginmgtd -template "#{node['cluster']['shared_dir_login_nodes']}/loginmgtd_on_termination.sh" do +template "#{node['cluster']['etc_dir']}/loginmgtd_on_termination.sh" do source 'loginmgtd/loginmgtd_on_termination.sh.erb' owner node['cluster']['cluster_admin_user'] group node['cluster']['cluster_admin_user'] @@ -37,7 +37,7 @@ end # Create the script to run loginmgtd -template "#{node['cluster']['shared_dir_login_nodes']}/loginmgtd.sh" do +template "#{node['cluster']['etc_dir']}/loginmgtd.sh" do source 'loginmgtd/loginmgtd.sh.erb' owner node['cluster']['cluster_admin_user'] group node['cluster']['cluster_admin_user'] diff --git a/cookbooks/aws-parallelcluster-platform/recipes/update.rb b/cookbooks/aws-parallelcluster-platform/recipes/update.rb index f7b041111..c8822f66c 100644 --- a/cookbooks/aws-parallelcluster-platform/recipes/update.rb +++ b/cookbooks/aws-parallelcluster-platform/recipes/update.rb @@ -20,3 +20,4 @@ end sudo_access "Update Sudo Access" if node['cluster']['scheduler'] == 'slurm' +include_recipe 'aws-parallelcluster-platform::config_login' if node['cluster']['node_type'] == 'LoginNode' diff --git a/cookbooks/aws-parallelcluster-platform/spec/unit/recipes/loginmgtd_spec.rb b/cookbooks/aws-parallelcluster-platform/spec/unit/recipes/loginmgtd_spec.rb index b34109cd0..e457f0903 100644 --- a/cookbooks/aws-parallelcluster-platform/spec/unit/recipes/loginmgtd_spec.rb +++ b/cookbooks/aws-parallelcluster-platform/spec/unit/recipes/loginmgtd_spec.rb @@ -8,7 +8,7 @@ end it 'creates the loginmgtd configuration with the correct attributes' do - is_expected.to create_template('/opt/parallelcluster/shared_login_nodes/loginmgtd_config.json').with( + is_expected.to create_template('/etc/parallelcluster/loginmgtd_config.json').with( source: 'loginmgtd/loginmgtd_config.json.erb', owner: 'pcluster-admin', group: 'pcluster-admin', @@ -17,7 +17,7 @@ end it 'creates the loginmgtd script with the correct attributes' do - is_expected.to create_template('/opt/parallelcluster/shared_login_nodes/loginmgtd.sh').with( + is_expected.to create_template('/etc/parallelcluster/loginmgtd.sh').with( source: 'loginmgtd/loginmgtd.sh.erb', owner: 'pcluster-admin', group: 'pcluster-admin', @@ -26,7 +26,7 @@ end it 'creates the loginmgtd termination hook script with the correct attributes' do - is_expected.to create_template('/opt/parallelcluster/shared_login_nodes/loginmgtd_on_termination.sh').with( + is_expected.to create_template('/etc/parallelcluster/loginmgtd_on_termination.sh').with( source: 'loginmgtd/loginmgtd_on_termination.sh.erb', owner: 'pcluster-admin', group: 'pcluster-admin', diff --git a/cookbooks/aws-parallelcluster-platform/templates/loginmgtd/99-parallelcluster-loginmgtd.erb b/cookbooks/aws-parallelcluster-platform/templates/loginmgtd/99-parallelcluster-loginmgtd.erb index 0dd35f63c..ff2f542bb 100644 --- a/cookbooks/aws-parallelcluster-platform/templates/loginmgtd/99-parallelcluster-loginmgtd.erb +++ b/cookbooks/aws-parallelcluster-platform/templates/loginmgtd/99-parallelcluster-loginmgtd.erb @@ -1,3 +1,3 @@ -Cmnd_Alias LOGINMGTD_HOOKS_COMMANDS = <%= node['cluster']['shared_dir_login_nodes'] %>/loginmgtd_on_termination.sh +Cmnd_Alias LOGINMGTD_HOOKS_COMMANDS = <%= node['cluster']['etc_dir'] %>/loginmgtd_on_termination.sh <%= node['cluster']['cluster_admin_user'] %> ALL = (root) NOPASSWD: LOGINMGTD_HOOKS_COMMANDS diff --git a/cookbooks/aws-parallelcluster-platform/templates/loginmgtd/loginmgtd.sh.erb b/cookbooks/aws-parallelcluster-platform/templates/loginmgtd/loginmgtd.sh.erb index feeec7abc..524c1ec77 100644 --- a/cookbooks/aws-parallelcluster-platform/templates/loginmgtd/loginmgtd.sh.erb +++ b/cookbooks/aws-parallelcluster-platform/templates/loginmgtd/loginmgtd.sh.erb @@ -11,7 +11,7 @@ set -ex # This script must be executed as <%= node['cluster']['cluster_admin_user'] %> because # because only this user has sudoers privileges to execute the termination hook. -CONFIG_PATH="<%= node['cluster']['shared_dir_login_nodes'] %>/loginmgtd_config.json" +CONFIG_PATH="<%= node['cluster']['etc_dir'] %>/loginmgtd_config.json" CONFIG_JSON=$(cat $CONFIG_PATH) TERMINATION_SCRIPT_PATH=$(echo $CONFIG_JSON | jq -r .termination_script_path) TERMINATION_MESSAGE=$(echo $CONFIG_JSON | jq -r .termination_message) diff --git a/cookbooks/aws-parallelcluster-platform/templates/loginmgtd/loginmgtd_config.json.erb b/cookbooks/aws-parallelcluster-platform/templates/loginmgtd/loginmgtd_config.json.erb index c303384fe..796ad2ecc 100644 --- a/cookbooks/aws-parallelcluster-platform/templates/loginmgtd/loginmgtd_config.json.erb +++ b/cookbooks/aws-parallelcluster-platform/templates/loginmgtd/loginmgtd_config.json.erb @@ -1,5 +1,5 @@ { - "termination_script_path": "<%= node['cluster']['shared_dir_login_nodes'] %>/loginmgtd_on_termination.sh", + "termination_script_path": "<%= node['cluster']['etc_dir'] %>/loginmgtd_on_termination.sh", "termination_message": "The system will be terminated within <%= @gracetime_period %> minutes.", "gracetime_period": "<%= @gracetime_period %>" } diff --git a/cookbooks/aws-parallelcluster-platform/templates/supervisord/parallelcluster_supervisord.conf.erb b/cookbooks/aws-parallelcluster-platform/templates/supervisord/parallelcluster_supervisord.conf.erb index 4020c2814..61fc1aaf7 100644 --- a/cookbooks/aws-parallelcluster-platform/templates/supervisord/parallelcluster_supervisord.conf.erb +++ b/cookbooks/aws-parallelcluster-platform/templates/supervisord/parallelcluster_supervisord.conf.erb @@ -60,7 +60,7 @@ stdout_logfile_maxbytes = 0 <%# LoginNode -%> <% when 'LoginNode' -%> [program:loginmgtd] -command = <%= node['cluster']['shared_dir_login_nodes'] %>/loginmgtd.sh +command = <%= node['cluster']['etc_dir'] %>/loginmgtd.sh user = <%= node['cluster']['cluster_admin_user'] %> environment = HOME="/home/<%= node['cluster']['cluster_admin_user'] %>",USER="<%= node['cluster']['cluster_admin_user'] %>" autorestart = unexpected diff --git a/cookbooks/aws-parallelcluster-shared/libraries/helpers.rb b/cookbooks/aws-parallelcluster-shared/libraries/helpers.rb index ce3a27532..f0255373b 100644 --- a/cookbooks/aws-parallelcluster-shared/libraries/helpers.rb +++ b/cookbooks/aws-parallelcluster-shared/libraries/helpers.rb @@ -67,7 +67,16 @@ def load_cluster_config(config_path) require 'yaml' Chef::Log.info("Reading Config from #{config_path}") config = YAML.safe_load(File.read(config_path)) - Chef::Log.debug("Config read #{config}") + Chef::Log.info("Config read #{config}") + unless config.dig("LoginNodes", "Pools").nil? + Chef::Log.info("Enter Config transform #{config}") + pools = {} + for pool in config["LoginNodes"]["Pools"] + pools[pool["Name"]]=pool + end + config["LoginNodes"]["Pools"] = pools + Chef::Log.info("Config transform #{config}") + end node.override['cluster']['config'].merge! config end only_if { node['cluster']['config'].nil? } diff --git a/cookbooks/aws-parallelcluster-slurm/recipes/config/config_check_login_stopped_script.rb b/cookbooks/aws-parallelcluster-slurm/recipes/config/config_check_login_stopped_script.rb index c01f2b21c..467677fb0 100644 --- a/cookbooks/aws-parallelcluster-slurm/recipes/config/config_check_login_stopped_script.rb +++ b/cookbooks/aws-parallelcluster-slurm/recipes/config/config_check_login_stopped_script.rb @@ -19,10 +19,12 @@ mode '0700' variables( target_group_name: lazy do + node['cluster']['config'].dig(:LoginNodes, :Pools).keys do |pool_name| get_target_group_name( node['cluster']['cluster_name'] || node['cluster']['stack_name'], - node['cluster']['config'].dig(:LoginNodes, :Pools, 0, :Name) + pool_name ) + end end, region: node['cluster']['region'] )