6
6
7
7
# initialize variables
8
8
basedir=$( dirname $0 )
9
- min_ansible_version=" 2.2 "
9
+ min_ansible_version=" 2.02 "
10
10
oscli_version=pike
11
11
oscli_rc_file=${basedir} /pf9-openstack.rc
12
12
inventory=${basedir} /inventory/hosts
@@ -38,6 +38,7 @@ flag_csvImport=0
38
38
flag_deauth=0
39
39
flag_k8s_upgrade=0
40
40
flag_pmk_only=0
41
+ verbosity=" "
41
42
extra_vars=" "
42
43
awx_pf9_user=" pf9"
43
44
awx_pf9_password=" Pl@tform9"
@@ -61,6 +62,7 @@ usage() {
61
62
echo " -l|--log : Log output file. Assumes parent directory already exists."
62
63
echo " -u|--upgradeK8s : upgrade Kubernetes nodes"
63
64
echo " -v|--inventory <file> : use alternate inventory file for Ansible"
65
+ echo " -g|--debug : use extra ansible verbosity for debugging"
64
66
echo " -f|--csvFile <file> : import CSV file"
65
67
echo " -t|--tag <tag[,<tag>]> : available tags = [live-migration, image-import]"
66
68
echo -e " -h|--help : display this message\n"
@@ -195,13 +197,19 @@ validate_platform() {
195
197
host_os_info=$( cat /etc/centos-release)
196
198
elif [ -r /etc/lsb-release ]; then
197
199
release=$( cat /etc/lsb-release | grep ^DISTRIB_RELEASE= /etc/lsb-release | cut -d ' =' -f2)
198
- if [[ ! " ${release} " == 16.04* ]] && [[ ! " ${release} " == 18.04* ]]; then assert " unsupported Ubuntu release: ${release} " ; fi
200
+ if [[ ! " ${release} " == 16.04* ]] && [[ ! " ${release} " == 18.04* ]] && [[ ! " ${release} " == 20.04 * ]] ; then assert " unsupported Ubuntu release: ${release} " ; fi
199
201
platform=" ubuntu"
200
202
ubuntu_release=$( cat /etc/lsb-release | grep ^DISTRIB_RELEASE | cut -d = -f2)
201
203
host_os_info=" ${platform} ${ubuntu_release} "
204
+ elif [ -r /etc/rocky-release ]; then
205
+ release=$( cat /etc/rocky-release | cut -d ' ' -f 4)
206
+ if [[ ! " ${release} " == 9.* ]]; then assert " unsupported Rocky release: ${release} " ; fi
207
+ platform=" rocky"
208
+ host_os_info=$( cat /etc/rocky-release)
202
209
else
203
210
assert " unsupported platform"
204
211
fi
212
+ echo " Found release $release on platform $platform "
205
213
}
206
214
207
215
banner () {
@@ -328,10 +336,20 @@ install_oscli() {
328
336
# source rc file
329
337
source ${oscli_rc_file}
330
338
331
- # install openstack cli packages (CentOS)
339
+ pip install python-openstackclient> ${log} 2>&1
340
+ echo " You may need to add /usr/local/bin to your \$ PATH"
341
+ echo " export PATH=\$ PATH:/usr/local/bin"
342
+ }
343
+
344
+ install_prereqs () {
345
+ echo " --> Installing Prerequisites"
346
+ # display log
347
+ echo " --> Installation Log: ${install_log} "
348
+
349
+ # install Ansible (and dependencies)
350
+ echo -n " --> Validating package dependencies: "
332
351
if [ " ${platform} " == " centos" ]; then
333
- echo -n " --> Installing Package Dependencies: "
334
- for pkg in gcc openssl-devel python-pip python-wheel python-virtualenv python-virtualenvwrapper; do
352
+ for pkg in epel-release ntp nginx gcc python-devel python3-pip jq bc; do
335
353
echo -n " ${pkg} "
336
354
rpm -q ${pkg} > /dev/null 2>&1
337
355
if [ $? -ne 0 ]; then
@@ -342,46 +360,50 @@ install_oscli() {
342
360
fi
343
361
fi
344
362
done
345
- echo
346
-
347
- echo " --> Configuring Python Virtual Environment"
348
- if [ ! -r /usr/bin/virtualenvwrapper.sh ]; then assert " missing script: /usr/bin/virtualenvwrapper.sh" ; fi
349
- source /usr/bin/virtualenvwrapper.sh
350
- export WORKON_HOME=$HOME /.virtenvs
351
- mkvirtualenv os_cli > ${log} 2>&1
352
-
353
- echo " --> Upgrading PIP"
354
- pip install pip==20.3.4 --upgrade > ${log} 2>&1
355
-
356
- echo " --> Installing OpenStack CLI"
357
- pip install --upgrade --requirement \
358
- https://raw.githubusercontent.com/platform9/support-locker/master/openstack-clients/requirements.txt \
359
- --constraint http://raw.githubusercontent.com/openstack/requirements/stable/${oscli_version} /upper-constraints.txt > ${log} 2>&1
360
363
361
- # tracking alternate method of installation
362
- # echo "--> Installing OpenStack CLI"
363
- # pip install python-openstackclient> ${log} 2>&1
364
- fi
365
-
366
- # install openstack cli packages (Ubuntu)
367
- if [ " ${platform} " == " ubuntu" ]; then
368
- assert " Not Implemented (for platform = ${platform} )"
369
- fi
364
+ # # upgrade pip
365
+ sudo pip install --upgrade pip > ${log} 2>&1
366
+ if [ $? -ne 0 ]; then
367
+ echo -e " \nERROR: failed to upgrade pip - here's the last 10 lines of the log:\n"
368
+ tail -10 ${log} ; exit 1
369
+ fi
370
370
371
- }
371
+ # Install pbr
372
+ for pkg in pbr; do
373
+ echo -n " ${pkg} "
374
+ sudo pip install ${pkg} --ignore-installed > ${log} 2>&1
375
+ if [ $? -ne 0 ]; then
376
+ echo -e " \nERROR: failed to install ${pkg} - here's the last 10 lines of the log:\n"
377
+ tail -10 ${log} ; exit 1
378
+ fi
379
+ done
372
380
373
- install_prereqs () {
374
- # display log
375
- echo " --> Installation Log: ${install_log} "
381
+ # # install additional pip-based packages
382
+ for pkg in ' openstacksdk==0.62.0' docker-py pyopenssl; do
383
+ echo -n " ${pkg} "
384
+ sudo pip install ${pkg} --upgrade > ${log} 2>&1
385
+ if [ $? -ne 0 ]; then
386
+ echo -e " \nERROR: failed to install ${pkg} - here's the last 10 lines of the log:\n"
387
+ tail -10 ${log} ; exit 1
388
+ fi
389
+ done
376
390
377
- # install Ansible (and dependencies)
378
- echo -n " --> Validating package dependencies: "
379
- if [ " ${platform} " == " centos" ]; then
380
- for pkg in epel-release ntp nginx gcc python-devel python2-pip jq bc; do
391
+ # # install additional yum-based packages
392
+ for pkg in ansible; do
381
393
echo -n " ${pkg} "
382
- rpm -q ${pkg} > /dev/null 2>&1
394
+ sudo yum -y install ${pkg} > ${log} 2>&1
383
395
if [ $? -ne 0 ]; then
384
- sudo yum -y install ${pkg} > ${log} 2>&1
396
+ echo -e " \nERROR: failed to install ${pkg} - here's the last 10 lines of the log:\n"
397
+ tail -10 ${log} ; exit 1
398
+ fi
399
+ done
400
+ echo
401
+ elif [ " ${platform} " == " rocky" ]; then
402
+ for pkg in epel-release chrony nginx gcc python3-devel python3-pip jq bc; do
403
+ echo -n " ${pkg} "
404
+ dnf list installed | grep " ^${pkg} \." > /dev/null 2>&1
405
+ if [ $? -ne 0 ]; then
406
+ sudo dnf -y install ${pkg} > ${log} 2>&1
385
407
if [ $? -ne 0 ]; then
386
408
echo -e " \nERROR: failed to install ${pkg} - here's the last 10 lines of the log:\n"
387
409
tail -10 ${log} ; exit 1
@@ -390,14 +412,14 @@ install_prereqs() {
390
412
done
391
413
392
414
# # upgrade pip
393
- sudo pip install --upgrade pip==20.3.4 > ${log} 2>&1
415
+ sudo pip install --upgrade pip > ${log} 2>&1
394
416
if [ $? -ne 0 ]; then
395
417
echo -e " \nERROR: failed to upgrade pip - here's the last 10 lines of the log:\n"
396
418
tail -10 ${log} ; exit 1
397
419
fi
398
420
399
421
# Install pbr
400
- for pkg in ' pbr==5.6.0 ' ; do
422
+ for pkg in pbr; do
401
423
echo -n " ${pkg} "
402
424
sudo pip install ${pkg} --ignore-installed > ${log} 2>&1
403
425
if [ $? -ne 0 ]; then
@@ -407,19 +429,19 @@ install_prereqs() {
407
429
done
408
430
409
431
# # install additional pip-based packages
410
- for pkg in ' openstacksdk==0.39 .0' docker-py; do
432
+ for pkg in ' openstacksdk==0.62 .0' docker-py pyopenssl ; do
411
433
echo -n " ${pkg} "
412
- sudo pip install ${pkg} --ignore-installed > ${log} 2>&1
434
+ sudo pip install ${pkg} --upgrade > ${log} 2>&1
413
435
if [ $? -ne 0 ]; then
414
436
echo -e " \nERROR: failed to install ${pkg} - here's the last 10 lines of the log:\n"
415
437
tail -10 ${log} ; exit 1
416
438
fi
417
439
done
418
440
419
- # # install additional yum -based packages
441
+ # # install additional dnf -based packages
420
442
for pkg in ansible; do
421
443
echo -n " ${pkg} "
422
- sudo yum -y install ${pkg} > ${log} 2>&1
444
+ sudo dnf -y install ${pkg} > ${log} 2>&1
423
445
if [ $? -ne 0 ]; then
424
446
echo -e " \nERROR: failed to install ${pkg} - here's the last 10 lines of the log:\n"
425
447
tail -10 ${log} ; exit 1
@@ -439,7 +461,7 @@ install_prereqs() {
439
461
fi
440
462
fi
441
463
442
- for pkg in ansible jq bc python -pip; do
464
+ for pkg in ansible jq bc python3 -pip; do
443
465
echo -n " ${pkg} "
444
466
dpkg-query -f ' ${binary:Package}\n' -W | grep ^${pkg} $ > /dev/null 2>&1
445
467
if [ $? -ne 0 ]; then
@@ -459,9 +481,9 @@ install_prereqs() {
459
481
fi
460
482
461
483
# # install additional pip-based packages
462
- for pkg in ' openstacksdk==0.39 .0' docker-py; do
484
+ for pkg in ' openstacksdk==0.62 .0' docker-py pyopenssl ; do
463
485
echo -n " ${pkg} "
464
- sudo pip install ${pkg} --ignore-installed > ${log} 2>&1
486
+ sudo pip install ${pkg} --upgrade > ${log} 2>&1
465
487
if [ $? -ne 0 ]; then
466
488
echo -e " \nERROR: failed to install ${pkg} - here's the last 10 lines of the log:\n"
467
489
tail -10 ${log} ; exit 1
@@ -513,6 +535,9 @@ while [ $# -gt 0 ]; do
513
535
-d|--deauth)
514
536
flag_deauth=1
515
537
;;
538
+ -g|--debug)
539
+ verbosity=" -vvv"
540
+ ;;
516
541
-l|--log)
517
542
if [ $# -lt 2 ]; then usage; fi
518
543
install_log=${2}
@@ -667,7 +692,7 @@ if [ ${flag_oscli} -eq 1 ]; then
667
692
fi
668
693
669
694
# # validate minimum Ansible version
670
- ansible_version=$( ansible --version | head -1 | cut -d ' ' -f2 | cut -d . -f1-2)
695
+ ansible_version=$( ansible --version| head -1| grep core | awk -F ' ] ' ' {print $1} ' | awk ' {print $3} ' | cut -d . -f1-2)
671
696
echo " --> ansible_version = ${ansible_version} "
672
697
if (( ! $(bc <<< "$ansible_version >= $min_ansible_version ") )) ; then assert " Ansible ${min_ansible_version} or greater is required" ; fi
673
698
722
747
fi
723
748
724
749
# # call pf9-express
725
- sudo ansible-playbook -i ${inventory} -l ${target} ${role_tags} -e " skip_prereq=${flag_skip_prereqs} autoreg=${autoreg} du_fqdn=${ctrl_hostname} ctrl_ip=${ctrl_ip} du_username=${du_username} du_password=${du_password} ${extra_vars} " ${express_script} 2>&1 | tee ${install_log}
750
+ sudo ansible-playbook -i ${inventory} -l ${target} ${role_tags} -e " skip_prereq=${flag_skip_prereqs} autoreg=${autoreg} du_fqdn=${ctrl_hostname} ctrl_ip=${ctrl_ip} du_username=${du_username} du_password=${du_password} ${extra_vars} " ${express_script} ${verbosity} 2>&1 | tee ${install_log}
726
751
727
752
# # display log path
728
753
echo -e " Installation Log: ${install_log} \n"
0 commit comments