@@ -7,6 +7,183 @@ log_info() {
77 printf " \n\e[0;35m $1 \e[0m\n\n"
88}
99
10+ build_passenger () {
11+
12+ PASS_VERSION=' 6.0.7'
13+ NGINX_VERSION=' 1.18.0'
14+
15+ wget -O $BUILD_DIR /passenger.tar.gz https://github.com/phusion/passenger/releases/download/release-$PASS_VERSION /passenger-$PASS_VERSION .tar.gz
16+ cd $BUILD_DIR
17+ tar xf passenger.tar.gz
18+ wget -O $BUILD_DIR /nginx.tar.gz http://nginx.org/download/nginx-$NGINX_VERSION .tar.gz
19+ cd " $BUILD_DIR /passenger-$PASS_VERSION "
20+ tar xf $BUILD_DIR /nginx.tar.gz
21+
22+ PREFIX=/opt/ood/ondemand/root
23+ NGINX_DATADIR=$PREFIX /usr/share/nginx
24+ NGINX_CONFDIR=$PREFIX /etc/nginx
25+ NGINX_HOME=/var/lib/ondemand-nginx
26+ NGINX_HOME_TMP=$NGINX_HOME /tmp
27+ NGINX_LOGDIR=/var/log/ondemand-nginx
28+ BASE_CCOPTS=' -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic'
29+ NGINX_CCOPTS=" -O2 $BASE_CCOPTS "
30+ PASSENGER_CCOPTS=" $BASE_CCOPTS -Wno-deprecated"
31+ LDOPTS=" -Wl,-z,relro -Wl,-E"
32+ RUBY_LIBDIR=$PREFIX /usr/share/ruby/vendor_ruby
33+
34+ rake nginx OPTIMIZE=yes CACHING=false
35+ cd " $BUILD_DIR /passenger-$PASS_VERSION /nginx-$NGINX_VERSION "
36+ ./configure \
37+ --prefix=$NGINX_DATADIR \
38+ --sbin-path=$PREFIX /usr/sbin/nginx \
39+ --conf-path=$NGINX_CONFDIR /nginx.conf \
40+ --error-log-path=$NGINX_LOGDIR /error.log \
41+ --http-log-path=$NGINX_LOGDIR /access.log \
42+ --http-client-body-temp-path=$NGINX_HOME_TMP /client_body \
43+ --http-proxy-temp-path=$NGINX_HOME_TMP /proxy \
44+ --http-fastcgi-temp-path=$NGINX_HOME_TMP /fastcgi \
45+ --http-uwsgi-temp-path=$NGINX_HOME_TMP /uwsgi \
46+ --http-scgi-temp-path=$NGINX_HOME_TMP /scgi \
47+ --pid-path=/run/ondemand-nginx.pid \
48+ --lock-path=/run/lock/subsys/ondemand-nginx \
49+ --user=ondemand-nginx \
50+ --group=ondemand-nginx \
51+ --with-file-aio \
52+ --with-http_ssl_module \
53+ --with-http_v2_module \
54+ --with-http_realip_module \
55+ --with-http_addition_module \
56+ --with-http_xslt_module \
57+ --with-http_image_filter_module \
58+ --with-http_sub_module \
59+ --with-http_dav_module \
60+ --with-http_flv_module \
61+ --with-http_mp4_module \
62+ --with-http_gunzip_module \
63+ --with-http_gzip_static_module \
64+ --with-http_random_index_module \
65+ --with-http_secure_link_module \
66+ --with-http_degradation_module \
67+ --with-http_stub_status_module \
68+ --with-mail \
69+ --with-mail_ssl_module \
70+ --with-pcre \
71+ --with-pcre-jit \
72+ --add-module=../src/nginx_module \
73+ --with-cc-opt=" $NGINX_CCOPTS " \
74+ --with-ld-opt=" $LDOPTS " \
75+ --with-debug
76+
77+ make -j$( nproc) && make install INSTALLDIRS=vendor
78+ mkdir -p $NGINX_DATADIR /html
79+ mkdir -p $NGINX_CONFDIR
80+ mkdir -p $NGINX_HOME
81+ mkdir -p $NGINX_HOME_TMP
82+ mkdir -p $NGINX_LOGDIR
83+
84+ set -x
85+ cd " $BUILD_DIR /passenger-$PASS_VERSION "
86+ which ruby
87+ rake fakeroot \
88+ NATIVE_PACKAGING_METHOD=rpm \
89+ FS_PREFIX=$PREFIX \
90+ FS_BINDIR=$PREFIX /bin \
91+ FS_SBINDIR=$PREFIX /sbin \
92+ FS_DATADIR=$PREFIX /usr/share \
93+ FS_LIBDIR=$PREFIX /lib64 \
94+ FS_DOCDIR=$PREFIX /usr/share/doc \
95+ RUBY=$( which ruby) \
96+ RUBYLIBDIR=$RUBY_LIBDIR \
97+ RUBYARCHDIR=$RUBY_LIBDIR \
98+ APACHE2_MODULE_PATH=$PREFIX /usr/lib/apache2/modules/mod_passenger.so \
99+ OPTIMIZE=yes \
100+ CACHING=false \
101+ EXTRA_CFLAGS=" $PASSENGER_CCOPTS " \
102+ EXTRA_CXXFLAGS=" $PASSENGER_CCOPTS "
103+
104+ cp -a $BUILD_DIR /passenger-$PASS_VERSION /pkg/fakeroot/* /
105+ cd $BUILD_DIR /passenger-$PASS_VERSION
106+ ./dev/install_scripts_bootstrap_code.rb --ruby $RUBY_LIBDIR \
107+ $PREFIX /bin/passenger* \
108+ $PREFIX /sbin/passenger* \
109+ ` find $PREFIX -name rack_handler.rb`
110+
111+ ./dev/install_scripts_bootstrap_code.rb --nginx-module-config $PREFIX /bin $PREFIX /usr/share/passenger/ngx_http_passenger_module/config
112+ chmod +x $PREFIX /usr/share/passenger/helper-scripts/wsgi-loader.py
113+ }
114+
115+ install_os_deps () {
116+ dnf -y update && \
117+ dnf install -y dnf-utils epel-release && \
118+ dnf config-manager --set-enabled powertools && \
119+ dnf -y module enable nodejs:12 ruby:2.7 && \
120+ dnf install -y \
121+ file lsof sudo gcc gcc-c++ git \
122+ patch lua-posix rsync ruby ruby-devel python2 python3 \
123+ nodejs sqlite sqlite-devel nmap-ncat httpd httpd-devel mod_ssl \
124+ libcurl-devel autoconf openssl-devel jansson-devel libxml2-devel \
125+ libxslt-devel gd-devel
126+ gem install rake dotenv
127+ }
128+
129+ build_ood_src () {
130+ cd $BUILD_DIR
131+
132+ git clone https://github.com/cisco/cjose
133+ cd cjose
134+ git checkout 0.6.1
135+ ./configure
136+ make && make install
137+
138+ # so mod_auth_openidc can find cjose
139+ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
140+
141+ cd $BUILD_DIR
142+ git clone https://github.com/zmartzone/mod_auth_openidc.git
143+ cd mod_auth_openidc
144+ git checkout v2.4.9.4
145+ sh autogen.sh
146+ ./configure
147+ make && make install
148+
149+ cd $BUILD_DIR
150+ git clone https://github.com/OSC/ondemand.git
151+ cd ondemand
152+ bundle config --local path ~ /vendor/bundle
153+ bundle install
154+ rake build -mj$( nproc)
155+
156+ mkdir -p /opt/ood
157+ mkdir -p /var/www/ood/{apps,public,discover}
158+ mkdir -p /var/www/ood/apps/{sys,dev,usr}
159+ mkdir -p /etc/ood/config
160+
161+ mv mod_ood_proxy /opt/ood/
162+ mv nginx_stage /opt/ood/
163+ mv ood-portal-generator /opt/ood/
164+ mv ood_auth_map /opt/ood/
165+ mv apps/* /var/www/ood/apps/sys/
166+
167+ mkdir -p /var/lib/ondemand-nginx/config/apps/sys/
168+ touch /var/lib/ondemand-nginx/config/apps/sys/dashboard.conf
169+ touch /var/lib/ondemand-nginx/config/apps/sys/shell.conf
170+ touch /var/lib/ondemand-nginx/config/apps/sys/myjobs.conf
171+ /opt/ood/nginx_stage/sbin/update_nginx_stage
172+
173+ tee /etc/httpd/conf.d/enabled_mods.conf << EOF
174+ LoadModule auth_openidc_module modules/mod_auth_openidc.so
175+ LoadModule ssl_module modules/mod_ssl.so
176+ EOF
177+
178+ tee /etc/sudoers.d/ood << EOF
179+ Defaults:apache !requiretty, !authenticate
180+ Defaults:apache env_keep += "NGINX_STAGE_* OOD_*"
181+ apache ALL=(ALL) NOPASSWD: /opt/ood/nginx_stage/sbin/nginx_stage
182+ Cmnd_Alias KUBECTL = /usr/local/bin/kubectl, /usr/bin/kubectl, /bin/kubectl
183+ Defaults!KUBECTL !syslog
184+ EOF
185+ }
186+
10187ARCHTYPE=` uname -m`
11188DEX_VERSION=${DEX_VERSION:- 2.31.1}
12189DEX_PATCH_VERSION=${DEX_PATCH_VERSION:- 703e26bc109e86d00be22ef1803bdb96b2dc09e2}
@@ -20,6 +197,13 @@ if [[ "${ARCHTYPE}" = "x86_64" ]]; then
20197 ondemand \
21198 ondemand-dex
22199elif [[ " ${ARCHTYPE} " = " aarch64" ]]; then
200+ BUILD_DIR=$( mktemp -d -p /build)
201+ export BUILD_DIR
202+
203+ install_os_deps
204+ build_passenger
205+ build_ood_src
206+
23207 # TODO: flesh out arm64 builds?
24208 dnf install -y golang-bin
25209 log_info " Install dex ${DEX_VERSION} ..."
@@ -45,35 +229,7 @@ elif [[ "${ARCHTYPE}" = "aarch64" ]]; then
45229 groupadd -r ondemand-dex
46230 useradd -r -d /var/lib/ondemand-dex -g ondemand-dex -s /sbin/nologin -c " OnDemand Dex" ondemand-dex
47231 mkdir -p /etc/ood/dex
48- tee /etc/ood/dex/config.yaml << EOF
49- ---
50- issuer: http://eb8307ff82be:5556
51- storage:
52- type: sqlite3
53- config:
54- file: "/etc/ood/dex/dex.db"
55- web:
56- http: 0.0.0.0:5556
57- telemetry:
58- http: 0.0.0.0:5558
59- staticClients:
60- - id: eb8307ff82be
61- redirectURIs:
62- - http://eb8307ff82be/oidc
63- name: OnDemand
64- secret: 7c6c2f51-2f97-4866-886e-2fcf5b974224
65- oauth2:
66- skipApprovalScreen: true
67- enablePasswordDB: true
68- staticPasswords:
69- - email: ood@localhost
70- hash: "$2 a$1 0$2 b2cU8CPhOTaGrs1HRQuAueS7JTT5ZHsHSzYiFPm1leZck7Mc8T4W"
71- username: ood
72- userID: '08a8684b-db88-4b73-90a9-3cd1661f5466'
73- frontend:
74- dir: "/usr/share/ondemand-dex/web"
75- theme: hpc-coop
76- EOF
232+ chown ondemand-dex:ondemand-dex /etc/ood/dex
77233fi
78234
79235log_info " Setting up Ondemand"
@@ -141,13 +297,11 @@ dex:
141297 theme: ondemand
142298EOF
143299
144- if [[ ${ARCHTYPE} = " x86_64" ]]; then
145- log_info " Generating new httpd24 and dex configs.."
146- /opt/ood/ood-portal-generator/sbin/update_ood_portal
300+ log_info " Generating new httpd24 and dex configs.."
301+ /opt/ood/ood-portal-generator/sbin/update_ood_portal
147302
148- log_info " Adding new theme to dex"
149- sed -i " s/theme: ondemand/theme: hpc-coop/g" /etc/ood/dex/config.yaml
150- fi
303+ log_info " Adding new theme to dex"
304+ sed -i " s/theme: ondemand/theme: hpc-coop/g" /etc/ood/dex/config.yaml
151305
152306dnf clean all
153307rm -rf /var/cache/dnf
0 commit comments