Merge pull request #184 from chmouel/install-packages-only-for-services-distros
Install packages only for services distros
This commit is contained in:
commit
5334ca0210
2 changed files with 64 additions and 7 deletions
|
@ -1,5 +1,5 @@
|
||||||
dnsmasq-base
|
dnsmasq-base
|
||||||
dnsmasq-utils # for dhcp_release
|
dnsmasq-utils # for dhcp_release only available in dist:oneiric
|
||||||
kpartx
|
kpartx
|
||||||
parted
|
parted
|
||||||
arping # used for send_arp_for_ha option in nova-network
|
arping # used for send_arp_for_ha option in nova-network
|
||||||
|
|
69
stack.sh
69
stack.sh
|
@ -22,7 +22,9 @@
|
||||||
|
|
||||||
# Warn users who aren't on natty, but allow them to override check and attempt
|
# Warn users who aren't on natty, but allow them to override check and attempt
|
||||||
# installation with ``FORCE=yes ./stack``
|
# installation with ``FORCE=yes ./stack``
|
||||||
if ! egrep -q 'natty|oneiric' /etc/lsb-release; then
|
DISTRO=$(lsb_release -c -s)
|
||||||
|
|
||||||
|
if [[ ! ${DISTRO} =~ (natty|oneiric) ]]; then
|
||||||
echo "WARNING: this script has only been tested on natty and oneiric"
|
echo "WARNING: this script has only been tested on natty and oneiric"
|
||||||
if [[ "$FORCE" != "yes" ]]; then
|
if [[ "$FORCE" != "yes" ]]; then
|
||||||
echo "If you wish to run this script anyway run with FORCE=yes"
|
echo "If you wish to run this script anyway run with FORCE=yes"
|
||||||
|
@ -372,10 +374,65 @@ fi
|
||||||
#
|
#
|
||||||
# Openstack uses a fair number of other projects.
|
# 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 $(<${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
|
# install apt requirements
|
||||||
apt_get update
|
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
|
# install python requirements
|
||||||
sudo PIP_DOWNLOAD_CACHE=/var/cache/pip pip install --use-mirrors `cat $FILES/pips/*`
|
sudo PIP_DOWNLOAD_CACHE=/var/cache/pip pip install --use-mirrors `cat $FILES/pips/*`
|
||||||
|
@ -689,7 +746,7 @@ if [[ "$ENABLED_SERVICES" =~ "swift" ]]; then
|
||||||
sudo chown -R $USER:${USER_GROUP} ${SWIFT_DATA_LOCATION}/drives
|
sudo chown -R $USER:${USER_GROUP} ${SWIFT_DATA_LOCATION}/drives
|
||||||
|
|
||||||
# We then create a loopback disk and format it to XFS.
|
# We then create a loopback disk and format it to XFS.
|
||||||
if [[ ! -e ${SWIFT_DATA_LOCATION}/drives/images/swift.img ]];then
|
if [[ ! -e ${SWIFT_DATA_LOCATION}/drives/images/swift.img ]]; then
|
||||||
mkdir -p ${SWIFT_DATA_LOCATION}/drives/images
|
mkdir -p ${SWIFT_DATA_LOCATION}/drives/images
|
||||||
sudo touch ${SWIFT_DATA_LOCATION}/drives/images/swift.img
|
sudo touch ${SWIFT_DATA_LOCATION}/drives/images/swift.img
|
||||||
sudo chown $USER: ${SWIFT_DATA_LOCATION}/drives/images/swift.img
|
sudo chown $USER: ${SWIFT_DATA_LOCATION}/drives/images/swift.img
|
||||||
|
@ -702,7 +759,7 @@ if [[ "$ENABLED_SERVICES" =~ "swift" ]]; then
|
||||||
# After the drive being created we mount the disk with a few mount
|
# After the drive being created we mount the disk with a few mount
|
||||||
# options to make it most efficient as possible for swift.
|
# options to make it most efficient as possible for swift.
|
||||||
mkdir -p ${SWIFT_DATA_LOCATION}/drives/sdb1
|
mkdir -p ${SWIFT_DATA_LOCATION}/drives/sdb1
|
||||||
if ! egrep -q ${SWIFT_DATA_LOCATION}/drives/sdb1 /proc/mounts;then
|
if ! egrep -q ${SWIFT_DATA_LOCATION}/drives/sdb1 /proc/mounts; then
|
||||||
sudo mount -t xfs -o loop,noatime,nodiratime,nobarrier,logbufs=8 \
|
sudo mount -t xfs -o loop,noatime,nodiratime,nobarrier,logbufs=8 \
|
||||||
${SWIFT_DATA_LOCATION}/drives/images/swift.img ${SWIFT_DATA_LOCATION}/drives/sdb1
|
${SWIFT_DATA_LOCATION}/drives/images/swift.img ${SWIFT_DATA_LOCATION}/drives/sdb1
|
||||||
fi
|
fi
|
||||||
|
@ -716,7 +773,7 @@ if [[ "$ENABLED_SERVICES" =~ "swift" ]]; then
|
||||||
tmpd=""
|
tmpd=""
|
||||||
for d in ${SWIFT_DATA_LOCATION}/drives/sdb1/{1..4} \
|
for d in ${SWIFT_DATA_LOCATION}/drives/sdb1/{1..4} \
|
||||||
${SWIFT_CONFIG_LOCATION}/{object,container,account}-server \
|
${SWIFT_CONFIG_LOCATION}/{object,container,account}-server \
|
||||||
${SWIFT_DATA_LOCATION}/{1..4}/node/sdb1 /var/run/swift ;do
|
${SWIFT_DATA_LOCATION}/{1..4}/node/sdb1 /var/run/swift; do
|
||||||
[[ -d $d ]] && continue
|
[[ -d $d ]] && continue
|
||||||
sudo install -o ${USER} -g $USER_GROUP -d $d
|
sudo install -o ${USER} -g $USER_GROUP -d $d
|
||||||
done
|
done
|
||||||
|
@ -770,7 +827,7 @@ if [[ "$ENABLED_SERVICES" =~ "swift" ]]; then
|
||||||
local log_facility=$3
|
local log_facility=$3
|
||||||
local node_number
|
local node_number
|
||||||
|
|
||||||
for node_number in {1..4};do
|
for node_number in {1..4}; do
|
||||||
node_path=${SWIFT_DATA_LOCATION}/${node_number}
|
node_path=${SWIFT_DATA_LOCATION}/${node_number}
|
||||||
sed -e "s,%SWIFT_CONFIG_LOCATION%,${SWIFT_CONFIG_LOCATION},;s,%USER%,$USER,;s,%NODE_PATH%,${node_path},;s,%BIND_PORT%,${bind_port},;s,%LOG_FACILITY%,${log_facility}," \
|
sed -e "s,%SWIFT_CONFIG_LOCATION%,${SWIFT_CONFIG_LOCATION},;s,%USER%,$USER,;s,%NODE_PATH%,${node_path},;s,%BIND_PORT%,${bind_port},;s,%LOG_FACILITY%,${log_facility}," \
|
||||||
$FILES/swift/${server_type}-server.conf > ${SWIFT_CONFIG_LOCATION}/${server_type}-server/${node_number}.conf
|
$FILES/swift/${server_type}-server.conf > ${SWIFT_CONFIG_LOCATION}/${server_type}-server/${node_number}.conf
|
||||||
|
|
Loading…
Reference in a new issue