Skip to content

Commit 2983ee1

Browse files
authored
Fix create_user_groups.py when /usr/sbin not in path (#163)
If /usr/sbin isn't in the path then the useradd and groupadd commands fail. Add the path to the commands. Add /usr/sbin to the path inside the on_node_* scripts. Move creation of users and groups to on_compute_node_configured.sh because /opt/slurm isn't mounted before running on_compute_node_start.sh. Resolves #161
1 parent cd8b0a1 commit 2983ee1

File tree

6 files changed

+39
-22
lines changed

6 files changed

+39
-22
lines changed

source/resources/parallel-cluster/config/bin/create_users_groups.py

+5-8
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
import subprocess
2727

2828
logger = logging.getLogger(__file__)
29-
logger_formatter = logging.Formatter('%(levelname)s: %(message)s')
29+
logger_formatter = logging.Formatter('%(levelname)s:%(asctime)s: %(message)s')
3030
logger_streamHandler = logging.StreamHandler()
3131
logger_streamHandler.setFormatter(logger_formatter)
3232
logger.addHandler(logger_streamHandler)
@@ -46,7 +46,8 @@ def main(filename):
4646
continue
4747
logger.debug("Creating group {}({})".format(gid, group_name))
4848
try:
49-
subprocess.check_output(['groupadd', '-g', gid, group_name], stderr=subprocess.STDOUT)
49+
subprocess.check_output(['/usr/sbin/groupadd', '-g', gid, group_name], stderr=subprocess.STDOUT)
50+
logger.info("Created group {}({})".format(gid, group_name))
5051
except subprocess.CalledProcessError as e:
5152
lines = e.output.decode('utf-8')
5253
if 'is not a valid group name' in lines:
@@ -75,12 +76,13 @@ def main(filename):
7576
if invalid_gid in gids:
7677
logger.debug("Removed {}".format(invalid_gid))
7778
gids.remove(invalid_gid)
78-
useradd_args = ['useradd', '--uid', uid, '--gid', gid, '--groups', ','.join(gids), user, '--no-create-home']
79+
useradd_args = ['/usr/sbin/useradd', '--uid', uid, '--gid', gid, '--groups', ','.join(gids), user, '--no-create-home']
7980
if config['users'][user].get('home', None):
8081
useradd_args.append('--home-dir')
8182
useradd_args.append(config['users'][user]['home'])
8283
try:
8384
subprocess.check_output(useradd_args, stderr=subprocess.STDOUT)
85+
logger.info("Created user {}({})".format(uid, user))
8486
except subprocess.CalledProcessError as e:
8587
lines = e.output.decode('utf-8')
8688
logger.debug(f"lines:\n{lines}")
@@ -98,11 +100,6 @@ def main(filename):
98100
parser.add_argument('--debug', '-d', action='count', default=False, help="Enable debug messages")
99101
args = parser.parse_args()
100102

101-
logger_formatter = logging.Formatter('%(levelname)s:%(asctime)s: %(message)s')
102-
logger_streamHandler = logging.StreamHandler()
103-
logger_streamHandler.setFormatter(logger_formatter)
104-
logger.addHandler(logger_streamHandler)
105-
logger.setLevel(logging.INFO)
106103
if args.debug:
107104
logger.setLevel(logging.DEBUG)
108105

source/resources/parallel-cluster/config/bin/on_compute_node_configured.sh

+10-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
#!/bin/bash -x
22

3+
set -x
4+
5+
exec 1> >(logger -s -t on_compute_node_configured.sh) 2>&1
6+
37
full_script=$(realpath $0)
48
script_dir=$(dirname $full_script)
59
base_script=$(basename $full_script)
@@ -20,7 +24,12 @@ if [ $full_script != $dest_script ]; then
2024
chmod 0700 $dest_script
2125
fi
2226

23-
ansible_compute_node_vars_yml_s3_url="s3://$assets_bucket/$assets_base_key/config/ansible/ansible_compute_node_vars.yml"
27+
export PATH=/usr/sbin:$PATH
28+
29+
echo "Creating users and groups"
30+
$config_bin_dir/create_users_groups.py -i $config_dir/users_groups.json
31+
32+
# ansible_compute_node_vars_yml_s3_url="s3://$assets_bucket/$assets_base_key/config/ansible/ansible_compute_node_vars.yml"
2433

2534
# # Configure using ansible
2635
# if ! yum list installed ansible &> /dev/null; then

source/resources/parallel-cluster/config/bin/on_compute_node_start.sh

+6-13
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,19 @@
11
#!/bin/bash -x
22

3+
set -x
4+
5+
exec 1> >(logger -s -t on_compute_node_start.sh) 2>&1
6+
37
full_script=$(realpath $0)
48
script_dir=$(dirname $full_script)
59
base_script=$(basename $full_script)
610

711
date
812
echo "Started on_compute_node_start.sh: $full_script"
913

10-
config_dir=/opt/slurm/config
11-
config_bin_dir=$config_dir/bin
12-
13-
assets_bucket={{assets_bucket}}
14-
assets_base_key={{assets_base_key}}
15-
16-
dest_script="$config_bin_dir/on_compute_node_start.sh"
17-
if [ $full_script != $dest_script ]; then
18-
echo "cp $full_script $dest_script"
19-
cp $full_script $dest_script
20-
chmod 0700 $dest_script
21-
fi
14+
# /opt/slurm isn't mounted yet.
2215

23-
$config_bin_dir/create_users_groups.py -i $config_dir/users_groups.json
16+
export PATH=/usr/sbin:$PATH
2417

2518
date
2619
echo "Finished on_compute_node_start.sh: $full_script"

source/resources/parallel-cluster/config/bin/on_head_node_configured.sh

+6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
#!/bin/bash -x
22

3+
set -x
4+
5+
exec 1> >(logger -s -t on_head_node_configured.sh) 2>&1
6+
37
full_script=$(realpath $0)
48
script_dir=$(dirname $full_script)
59
base_script=$(basename $full_script)
@@ -19,6 +23,8 @@ if [ $full_script != $dest_script ]; then
1923
chmod 0700 $dest_script
2024
fi
2125

26+
export PATH=/usr/sbin:$PATH
27+
2228
$config_bin_dir/on_head_node_start.sh
2329

2430
pushd $PLAYBOOKS_PATH

source/resources/parallel-cluster/config/bin/on_head_node_start.sh

+6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
#!/bin/bash -x
22

3+
set -x
4+
5+
exec 1> >(logger -s -t on_head_node_start.sh) 2>&1
6+
37
full_script=$(realpath $0)
48
script_dir=$(dirname $full_script)
59
base_script=$(basename $full_script)
@@ -59,6 +63,8 @@ if ! [ -e $config_dir/users_groups.json ]; then
5963
fi
6064
chmod 0600 $config_dir/users_groups.json
6165

66+
export PATH=/usr/sbin:$PATH
67+
6268
$config_bin_dir/create_users_groups.py -i $config_dir/users_groups.json
6369

6470
# Configure using ansible

source/resources/parallel-cluster/config/bin/on_head_node_updated.sh

+6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
#!/bin/bash -x
22

3+
set -x
4+
5+
exec 1> >(logger -s -t on_head_node_updated.sh) 2>&1
6+
37
full_script=$(realpath $0)
48
script_dir=$(dirname $full_script)
59
base_script=$(basename $full_script)
@@ -17,6 +21,8 @@ if [ $full_script != $dest_script ]; then
1721
chmod 0700 $dest_script
1822
fi
1923

24+
export PATH=/usr/sbin:$PATH
25+
2026
$config_bin_dir/on_head_node_configured.sh
2127

2228
date

0 commit comments

Comments
 (0)