Install packages only for distros/services.
- We are installing packages only for the services needed. - We are parsing the packages files and detecting metadatas. - If there is a NOPRIME as comment mean we are not doing the install just yet. - If we have the meta-keyword distro:DISTRO or distro:DISTRO1,DISTRO2 it will be installed only for those distros (case insensitive).
This commit is contained in:
parent
a4adff43cb
commit
0277d5b91f
1 changed files with 56 additions and 1 deletions
57
stack.sh
57
stack.sh
|
@ -364,10 +364,65 @@ fi
|
|||
#
|
||||
# Openstack uses a fair number of other projects.
|
||||
|
||||
# - We are going to install packages only for the services needed.
|
||||
# - We are parsing the packages files and detecting metadatas.
|
||||
# - If there is a NOPRIME as comment mean we are not doing the install
|
||||
# just yet.
|
||||
# - If we have the meta-keyword distro:DISTRO or
|
||||
# distro:DISTRO1,DISTRO2 it will be installed only for those
|
||||
# distros (case insensitive).
|
||||
function get_packages() {
|
||||
local file_to_parse="general"
|
||||
local service
|
||||
|
||||
for service in ${ENABLED_SERVICES//,/ }; do
|
||||
if [[ $service == n-* ]]; then
|
||||
if [[ ! $file_to_parse =~ nova ]];then
|
||||
file_to_parse="${file_to_parse} nova"
|
||||
fi
|
||||
elif [[ $service == g-* ]];then
|
||||
if [[ ! $file_to_parse =~ glance ]];then
|
||||
file_to_parse="${file_to_parse} glance"
|
||||
fi
|
||||
elif [[ $service == key* ]];then
|
||||
if [[ ! $file_to_parse =~ keystone ]];then
|
||||
file_to_parse="${file_to_parse} keystone"
|
||||
fi
|
||||
elif [[ -e $FILES/apts/${service} ]];then
|
||||
file_to_parse="${file_to_parse} $service"
|
||||
fi
|
||||
done
|
||||
|
||||
for file in ${file_to_parse};do
|
||||
local fname=${FILES}/apts/${file}
|
||||
local OIFS line package distros distro
|
||||
[[ -e $fname ]] || { echo "missing: $fname"; exit 1 ;}
|
||||
|
||||
OIFS=$IFS
|
||||
IFS=$'\n'
|
||||
for line in $(cat ${fname});do
|
||||
if [[ $line =~ "NOPRIME" ]];then
|
||||
continue
|
||||
fi
|
||||
|
||||
if [[ $line =~ (.*)#.*dist:([^ ]*) ]];then # We are using BASH regexp matching feature.
|
||||
package=${BASH_REMATCH[1]}
|
||||
distros=${BASH_REMATCH[2]}
|
||||
for distro in ${distros//,/ };do #In bash ${VAR,,} will lowecase VAR
|
||||
[[ ${distro,,} == ${DISTRO,,} ]] && echo $package
|
||||
done
|
||||
continue
|
||||
fi
|
||||
|
||||
echo ${line%#*}
|
||||
done
|
||||
IFS=$OIFS
|
||||
done
|
||||
}
|
||||
|
||||
# install apt requirements
|
||||
apt_get update
|
||||
apt_get install `cat $FILES/apts/* | cut -d\# -f1 | grep -Ev "mysql-server|rabbitmq-server|memcached"`
|
||||
apt_get install $(get_packages)
|
||||
|
||||
# install python requirements
|
||||
sudo PIP_DOWNLOAD_CACHE=/var/cache/pip pip install `cat $FILES/pips/*`
|
||||
|
|
Loading…
Reference in a new issue