solve yum error because we now prefer network repo to local yum

Change-Id: I71001d478d511f09281e0e12fb044e30dfff3077
Signed-off-by: luyao <lu.yao135@zte.com.cn>
This commit is contained in:
luyao
2016-07-08 09:44:25 +08:00
committed by KongWei
parent e99e1a7771
commit de63842d60
3 changed files with 167 additions and 157 deletions

159
tools/setup/common/daisy_common_func.sh Executable file → Normal file
View File

@ -1,10 +1,10 @@
#!/bin/bash
# <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD>ֹ<EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܻᱻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
# global functioncan be called by other script
#<EFBFBD><EFBFBD>ֹ<EFBFBD>ű<EFBFBD><EFBFBD>ظ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#avoid to be repeat include
if [ ! "$_DAISY_COMMON_FUNC_FILE" ];then
#######################<EFBFBD>ʴ𽻻<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ػ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>############################
#######################get answer from user functions############################
# get 'yes' or 'no' answer from user
function read_bool
{
@ -25,7 +25,7 @@ function read_bool
*)
echo "Please input y or n"
read_bool "$prompt" "$default";;
esac
return 0
}
@ -49,7 +49,7 @@ function read_string_input_null_check
fi
}
# <20><>ȡ<EFBFBD><C8A1>ȡһ<C8A1><D2BB>IP<49>б<EFBFBD><D0B1>Ĺ<EFBFBD><C4B9><EFBFBD>
#read ip list
function read_iplist
{
local prompt=$1
@ -60,12 +60,12 @@ function read_iplist
echo -e "local ip list:"
echo -e "$ip_list"
echo -e "(recommend: $recommend): \c "
fi
fi
read answer
[ -z $answer ] && answer="$recommend"
}
#######################<EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD>д<EFBFBD><EFBFBD><EFBFBD>ػ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>############################
#######################configuration functions############################
function get_config
{
@ -73,12 +73,10 @@ function get_config
local key=$2
[ ! -e $file ] && return
#<23><><EFBFBD>Ծ<EFBFBD><D4BE>ſ<EFBFBD>ͷ<EFBFBD><CDB7>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD>grep<65><70><EFBFBD><EFBFBD>"key"<22><><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD>
local line=`sed '/^[[:space:]]*#/d' $file | sed /^[[:space:]]*$/d | grep -w "$key"| grep "$key[[:space:]]*=" -m1`
if [ -z "$line" ]; then
config_answer=""
else
#<23><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>=<3D><><EFBFBD>滻Ϊ<E6BBBB>ո<EFBFBD><D5B8><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ʵõ<CAB5>value
config_answer=`echo $line | sed 's/=/ /' | sed -e 's/^\w*\ *//'`
fi
}
@ -94,31 +92,31 @@ function update_config
#echo update key $key to value $value in file $file ...
local exist=`grep "^[[:space:]]*[^#]" $file | grep -c "$key[[:space:]]*=[[:space:]]*.*"`
#ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>#<23><>!!!
#actionIf a line is a comment, the beginning of the first character must be a #!!!
local comment=`grep -c "^[[:space:]]*#[[:space:]]*$key[[:space:]]*=[[:space:]]*.*" $file`
if [[ $value == "#" ]];then
if [ $exist -gt 0 ];then
sed -i "/^[^#]/s/$key[[:space:]]*=/\#$key=/" $file
sed -i "/^[^#]/s/$key[[:space:]]*=/\#$key=/" $file
fi
return
fi
if [ $exist -gt 0 ];then
#<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δע<EFBFBD>͵<EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>ֱ<EFBFBD>Ӹ<EFBFBD><EFBFBD><EFBFBD>value
#if there have been a effective configuration line did not comment, update value directly
sed -i "/^[^#]/s#$key[[:space:]]*=.*#$key=$value#" $file
elif [ $comment -gt 0 ];then
#<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD>ע<EFBFBD>͵<EFBFBD><EFBFBD>Ķ<EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD>ע<EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>value
#if there is a configuration line has been commented out, then remove the comments, update the value
sed -i "s@^[[:space:]]*#[[:space:]]*$key[[:space:]]*=[[:space:]]*.*@$key=$value@" $file
else
#<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĩβ׷<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#add effective configuration line at the end
echo "$key=$value" >> $file
fi
}
#<EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><EFBFBD><EFBFBD>[section]<5D><>λ<EFBFBD><CEBB><EFBFBD>ں<EFBFBD><DABA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>key=value<75><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>key<65><79><EFBFBD>ֶ<EFBFBD>
#ijЩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD>valueΪ<EFBFBD>յĿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˺<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>valueΪ<EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>valueΪ<EFBFBD><EFBFBD>ʱʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#accord to the location of the section insert key = value, or only a key field
#this function isused in cases where the value is empty, will not raise error when the value is empty
function update_section_config
{
local file=$1
@ -128,7 +126,7 @@ function update_section_config
[ ! -e $file ] && return
#<EFBFBD><EFBFBD><EFBFBD><EFBFBD>section<EFBFBD><EFBFBD>Ѱ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><EFBFBD>key
#find key according to section
if [ -z $value ];then
local exist=`sed -n "/\[$section\]/,/\[*\]/p" $file | grep "^[[:space:]]*[^#]" |grep -c "[[:space:]]*$key[[:space:]]*"`
if [ $exist -eq 0 ];then
@ -139,82 +137,93 @@ function update_section_config
local exist=`sed -n "/\[$section\]/,/\[*\]/p" $file | grep "^[[:space:]]*[^#]" |grep -c "[[:space:]]*$key[[:space:]]*=[[:space:]]*"`
if [ $exist -eq 0 ];then
local linenumber=`grep -n "\[$section\]" $file| awk -F ':' '{print $1}'`
sed -i "$linenumber a$key=$value" $file
sed -i "$linenumber a$key=$value" $file
else
sed -i "/\[$section\]/,/\[*\]/s/[[:space:]]*$key[[:space:]]*=[[:space:]]*.*/$key=$value/g" $file
fi
fi
}
#<EFBFBD><EFBFBD>ȡ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>string<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#get string number
function get_string_num
{
local file=$1
local string=$2
[ ! -e $file ] && { echo "$file doesn't exist."; exit 1; }
#<23><><EFBFBD>Ծ<EFBFBD><D4BE>ſ<EFBFBD>ͷ<EFBFBD><CDB7>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD>grep<65><70><EFBFBD><EFBFBD>"key"<22><><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD>
string_num=`sed '/^[[:space:]]*#/d' $file | sed /^[[:space:]]*$/d | grep -cw "$string"`
}
#<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ,ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>װ<EFBFBD><D7B0>ʽ<EFBFBD><CABD>ж<EFBFBD>ز<EFBFBD><D8B2><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
#<EFBFBD><EFBFBD><EFBFBD>ñ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱӦ<EFBFBD><EFBFBD>֤ͬһģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><EFBFBD><EFBFBD>tc<EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>cc<EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>tc
#Save the configuration information, the configuration file of installation and uninstall don't need to save
#when call this function,you should make sure one-time finish configuration module configuration parameters, if not,you can configuration part tc first, and then configure the cc, and back to tc
function user_config_save
{
{
local component="$1"
local key="$2"
local value="$3"
if [ "$operation" = "install" ];then
#<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򱸷ݾɵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#If the user configuration file already exists, a backup the configuration of the old
if [ ! -f $user_config_save_file ];then
mkdir -p ${user_config_save_path}
touch $user_config_save_file
mkdir -p ${user_config_save_path}
touch $user_config_save_file
echo -e "## opencos installation configure file at ${current_time}" >$user_config_save_file
echo -e "## you can edit it and install opencos by conf_file option, as \"./installopencos_(arch).bin conf_file /home/tecs_install/user_install.conf\"\n" >>$user_config_save_file
echo -e "## global configration section\nmode=$mode\n">>$user_config_save_file
echo -e "## component configration section">>$user_config_save_file
fi
# <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>mode<EFBFBD><EFBFBD>
# If there is no component belonging to, put it after on mode
if [ "$component" = "" ];then
[ "$key" = "" ] && { echo -e "\nkey is null, please check!"; exit 1; }
sed -i "/mode=$mode/a $key=$value" $user_config_save_file
else
else
[ -z "`cat $user_config_save_file |grep -w "\[$component\]"`" ] && echo -e "\n[$component]" >>$user_config_save_file
[[ $key != "" ]] && echo "$key=$value" >>$user_config_save_file
fi
fi
}
#######################rpm<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ػ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>############################
#######################rpm related functions############################
#<EFBFBD>ж<EFBFBD>ijrpm<EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD>Ѱ<EFBFBD>װ
#check rpm install
function check_installed
{
has_installed="no"
rpm -q $1 &>/dev/null
if [ 0 == $? ];then
has_installed="yes"
fi
fi
}
# <EFBFBD><EFBFBD><EFBFBD><EFBFBD>rpm<EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
# check rpm depends
function check_depend
{
local rpm_name=$1
# <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ񱻱<EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>
# check if the rpm is used by someone else
rpm -q --whatrequires $rpm_name &>/dev/null
# <20><><EFBFBD><EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD>ϵ<EFBFBD><CFB5>rpmδ<6D><CEB4>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0
return "$?"
}
# <EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><EFBFBD><EFBFBD>
# install rpm by yum
function install_rpm_by_yum
{
local rpm_name=$1
yum install -y $rpm_name
local result=$?
if [ $result -ne 0 ];then
echo -e "\ninstall $rpm_name failed!"
exit $result
fi
}
# install rpm by daisy yum
function install_rpm_by_daisy_yum
{
local rpm_name=$1
[[ $daisy_yum = "" ]] && { echo "yum repository doesn't create!"; exit 1; }
$daisy_yum install $rpm_name
@ -222,10 +231,9 @@ function install_rpm_by_yum
if [ $result -ne 0 ];then
echo -e "\ninstall $rpm_name failed!"
exit $result
fi
fi
}
# <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>װ<EFBFBD>İ<EFBFBD><C4B0>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD><D2AA>װ
# check existence of packgeif not, indicates whether need to install
function check_and_install_rpm
{
local rpm_name=$1
@ -240,7 +248,7 @@ function check_and_install_rpm
fi
}
# <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>װ<EFBFBD>İ<EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
# check existence of packgeif existthere is a need to upgrade
function install_or_upgrade_rpm
{
local rpm_name=$1
@ -260,7 +268,7 @@ function install_or_upgrade_rpm
fi
}
# <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>Э<EFBFBD><EFBFBD>RPM<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>Ƿ<EFBFBD>Ҫж<EFBFBD><EFBFBD>
# if packate have installed, suggest whether to unload
function check_uninstall_tecs_rpm
{
local rpm_name=$1
@ -268,7 +276,7 @@ function check_uninstall_tecs_rpm
if [[ "$has_installed" == "no" ]];then
return 1
fi
read_bool "$rpm_name already installed, remove it?" "no"
if [ $answer == "yes" ]; then
service_stop $rpm_name
@ -290,9 +298,9 @@ function remove_rpms_by_yum
}
# <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
#check packages need to upgrade
function check_app_is_upgrade
{
{
local app=$1
is_update="yes"
@ -302,51 +310,50 @@ function check_app_is_upgrade
fi
}
# <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><EFBFBD><EFBFBD>
# update rpm by yum
function upgrade_rpms_by_yum
{
local app_list="$1"
if [ "$app_list" = "" ];then
echo -e "\nsorry, there is no rpm need to upgrade"!
exit 0
fi
#<EFBFBD>˴<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>app_list<EFBFBD><EFBFBD>Ϊupgrade<EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#<23><><EFBFBD><EFBFBD>daisy<73><79><EFBFBD>񣬻ᵼ<F1A3ACBB><E1B5BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>дΪ<D0B4><CEAA>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD>񵥶<EFBFBD><F1B5A5B6>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
fi
#need to upgrade separately for each service
[ "$daisy_yum" = "" ] && { echo "opencos yum doesn't set, update rpms failed!"; exit 1; }
for app in $app_list
do
check_app_is_upgrade "$app"
if [[ "$is_update" == "yes" ]];then
echo -e "\n$app will upgrade..."
$daisy_yum upgrade $app
if [[ "$is_update" == "yes" ]];then
echo -e "\n$app will upgrade..."
$daisy_yum upgrade $app
local result=$?
if [ $result -ne 0 ];then
echo -e "\nupgrade $app failed,return $result"!
exit $result
fi
fi
else
echo -e "\n$app don't need to upgrade"!
fi
done
done
}
#######################<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ػ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>############################
# ֹͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#######################service related functions############################
# stop service
function service_stop
{
local app=$1
[ ! -f ${systemd_path}/$app.service ] && return
cd /
systemctl stop $app.service &>/dev/null
systemctl stop $app.service &>/dev/null
cd - >/dev/null
local service_status="active"
local timeout=0
while [ "$service_status" != "inactive" ]
do
do
service_status=`systemctl show $app|grep -w ActiveState|awk -F '=' '{print $2}'`
if [ "$service_status" = "inactive" ];then
break
@ -354,34 +361,34 @@ function service_stop
timeout=$(($timeout+1))
[ $timeout -gt 3 ] && { echo "warning: $app status is \"$service_status\" after stopping."; break; }
fi
sleep 1
done
sleep 1
done
}
# <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
# start service
function service_start
{
local app=$1
[ ! -f ${systemd_path}/$app.service ] && return
#<EFBFBD>˴<EFBFBD>cd /<EFBFBD><EFBFBD>cd -<2D><><EFBFBD><EFBFBD>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD>Ϊ<EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱĿ¼/tmp/selfgzxxxxxxxxɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#cd / and cd -can't be removed in order to deal with deleting the temporary directory/TMP/selfgzxxxxxxxx
cd /
systemctl start $app.service >/dev/null
cd - >/dev/null
timeout=0
timeout=0
while [ `systemctl status $app.service|grep -c active` -eq 0 ]
do
do
sleep 1
timeout=$(($timeout+1))
if [ $timeout -gt 3 ]; then
echo "$app can not be started"
break
fi
fi
done
}
# <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
# restart service
function service_restart
{
local app=$1
@ -392,17 +399,17 @@ function service_restart
cd - >/dev/null
}
# <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
# according to the result of asking to stop the service
function ask_service_stop
{
local app=$1
[ ! -f ${systemd_path}/$app.service ] && return
read_bool "Stop service $app?" "yes"
[ "$answer" == "yes" ] && systemctl stop $app.service >/dev/null
[ "$answer" == "yes" ] && systemctl stop $app.service >/dev/null
}
# <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ<EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
# according to the result of asking to start the service
function ask_service_start
{
local app=$1
@ -427,7 +434,7 @@ function stop_service_all
service_stop "daisy-orchestration"
}
# <EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><EFBFBD><EFBFBD>
# start all the service automatically
function start_service_all
{
service_start "mariadb"
@ -441,4 +448,4 @@ function start_service_all
}
_DAISY_COMMON_FUNC_FILE="common_func.sh"
fi
fi

View File

@ -1,7 +1,5 @@
#!/bin/bash
# <20>ṩyum<75><6D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>غ<EFBFBD><D8BA><EFBFBD>
if [ ! "$_DAISY_YUM_FILE" ];then
function make_yum_server
@ -11,14 +9,12 @@ function make_yum_server
[ "$?" -ne 0 ] && { echo "createrepo in $path failed"; exit 1; }
patch_path="/home/daisy_patch/"
if [ -d $patch_path ];then
#<23><><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD>repodata<74><61><EFBFBD>ƻ<EFBFBD><C6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>createrepo<70><6F><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
[ -d $patch_path/repodata ] && rm -rf $patch_path/repodata
createrepo --update $patch_path &>/dev/null
[ "$?" -ne 0 ] && { echo "createrepo in $patch_path failed"; exit 1; }
fi
}
# <20><><EFBFBD><EFBFBD>REPO<50>ͻ<EFBFBD><CDBB>˵<EFBFBD><CBB5>ļ<EFBFBD>
function make_yum_client
{
path=`pwd`
@ -56,6 +52,10 @@ function yum_set
echo "creating yum repo, please wait for several seconds..."
make_yum_server
make_yum_client
echo "creating epel yum repo, please wait for several seconds..."
yum install epel-release
echo "creating openstack mitaka yum repo, please wait for several seconds..."
yum install centos-release-openstack-mitaka
}
fi

157
tools/setup/install/install_interface.sh Executable file → Normal file
View File

@ -1,5 +1,5 @@
#!/bin/bash
# <EFBFBD><EFBFBD><EFBFBD>yum<EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD>صĹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><EFBFBD><EFBFBD>
# provide yum related public functions and variables
if [ ! "$_INSTALL_INTERFACE_FILE" ];then
_INSTALL_INTERFACE_DIR=`pwd`
cd $_INSTALL_INTERFACE_DIR/../common/
@ -17,67 +17,73 @@ keystone_admin_token="e93e9abf42f84be48e0996e5bd44f096"
daisy_install="/var/log/daisy/daisy_install"
installdatefile=`date -d "today" +"%Y%m%d-%H%M%S"`
install_logfile=$daisy_install/daisyinstall_$installdatefile.log
#<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
#the contents of the output is displayed on the screen and output to the specified file
function write_install_log
{
local promt="$1"
echo -e "$promt"
echo -e "`date -d today +"%Y-%m-%d %H:%M:%S"` $promt" >> $install_logfile
}
#<EFBFBD><EFBFBD>װ
#install function
function all_install
{
echo "*******************************************************************************"
echo "daisy will installed ..."
echo "daisy will installed ..."
echo "*******************************************************************************"
if [ ! -d "$daisy_install" ];then
mkdir -p $daisy_install
fi
if [ ! -f "$install_logfile" ];then
touch $install_logfile
fi
fi
rm -rf /root/.my.cnf
[ "$?" -ne 0 ] && { write_install_log "Error:can not rm of /root/.my.cnf file"; exit 1; }
[ "$?" -ne 0 ] && { write_install_log "Error:can not rm of /root/.my.cnf file"; exit 1; }
write_install_log "install fping rpm"
install_rpm_by_yum "fping"
write_install_log "install mariadb-galera-server rpm"
install_rpm_by_yum "mariadb-galera-server"
write_install_log "install mariadb rpm"
install_rpm_by_yum "mariadb"
write_install_log "install rabbitmq-server rpm"
install_rpm_by_yum "rabbitmq-server"
write_install_log "install keystone rpm"
install_rpm_by_yum "openstack-keystone"
write_install_log "install ironic rpm"
install_rpm_by_yum "openstack-ironic-api openstack-ironic-common openstack-ironic-conductor python-ironicclient"
install_rpm_by_yum "openstack-ironic-api openstack-ironic-common openstack-ironic-conductor python-ironicclient"
write_install_log "install ironic-discoverd depend rpm"
install_rpm_by_yum "python-flask"
write_install_log "install ironic-discoverd rpm"
install_rpm_by_yum "openstack-ironic-discoverd python-ironic-discoverd"
install_rpm_by_daisy_yum "openstack-ironic-discoverd python-ironic-discoverd"
write_install_log "install daisy rpm"
install_rpm_by_yum "daisy"
write_install_log "install daisy dashboard rpm"
install_rpm_by_yum "python-django-horizon-doc"
install_rpm_by_daisy_yum "python-django-horizon-doc"
install_rpm_by_yum "daisy-dashboard"
write_install_log "install clustershell rpm"
install_rpm_by_yum "clustershell"
if [ -f "/etc/zte-docker" ];then
write_install_log "install pxe_docker_install rpm"
install_rpm_by_yum pxe_docker_install
else
write_install_log "install pxe server rpm"
install_rpm_by_yum pxe_server_install
install_rpm_by_daisy_yum pxe_server_install
fi
# <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ip<69><70>ַ<EFBFBD><D6B7>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD>daisy<73>û<EFBFBD><C3BB><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
#get management network IP address, and then update the database of Daisy user to the configuration file
get_public_ip
if [ -z $public_ip ];then
write_install_log "Error:default gateway is not set!!!"
@ -86,7 +92,7 @@ function all_install
update_section_config "$daisy_file" database connection "mysql://daisy:daisy@$public_ip/$db_name?charset=utf8"
config_keystone_local_setting
fi
systemctl restart openstack-keystone.service
[ "$?" -ne 0 ] && { write_install_log "Error:systemctl restart openstack-keystone.service failed"; exit 1; }
systemctl restart httpd.service
@ -97,19 +103,17 @@ function all_install
[ "$?" -ne 0 ] && { write_install_log "Error:systemctl start daisy-registry.service failed"; exit 1; }
systemctl start mariadb.service
[ "$?" -ne 0 ] && { write_install_log "Error:systemctl start mariadb.service failed"; exit 1; }
systemctl enable openstack-keystone.service >> $install_logfile 2>&1
systemctl enable httpd.service >> $install_logfile 2>&1
systemctl enable daisy-api.service >> $install_logfile 2>&1
systemctl enable daisy-registry.service >> $install_logfile 2>&1
systemctl enable mariadb.service >> $install_logfile 2>&1
mysql_cmd="mysql"
local mariadb_result=`systemctl is-active mariadb.service`
if [ $? -eq 0 ];then
# <EFBFBD><EFBFBD><EFBFBD><EFBFBD>keystone<EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
# creat keystone datebase
local create_keystone_sql="create database IF NOT EXISTS $keystone_db_name default charset=utf8"
write_install_log "create $keystone_db_name database in mariadb"
echo ${create_keystone_sql} | ${mysql_cmd}
@ -117,8 +121,8 @@ function all_install
write_install_log "Error:create $keystone_db_name database failed..."
exit 1
fi
# <EFBFBD><EFBFBD><EFBFBD><EFBFBD>daisy<EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
# creat daisy datebase
local create_db_sql="create database IF NOT EXISTS $db_name default charset=utf8"
write_install_log "create $db_name database in mariadb"
echo ${create_db_sql} | ${mysql_cmd}
@ -126,8 +130,8 @@ function all_install
write_install_log "Error:create $db_name database failed..."
exit 1
fi
# <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ironic<EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
# creat ironic datebase
local create_ironic_sql="create database IF NOT EXISTS $ironic_name default charset=utf8"
write_install_log "create $ironic_name database in mariadb"
echo ${create_ironic_sql} | ${mysql_cmd}
@ -135,8 +139,8 @@ function all_install
write_install_log "Error:create $ironic_name database failed..."
exit 1
fi
# <EFBFBD><EFBFBD><EFBFBD><EFBFBD>keystone<EFBFBD>û<EFBFBD>
# create keystone user
write_install_log "create keystone user in mariadb"
echo "grant all privileges on *.* to 'keystone'@'localhost' identified by 'keystone'" | ${mysql_cmd}
if [ $? -ne 0 ];then
@ -144,15 +148,15 @@ function all_install
exit 1
fi
# <EFBFBD><EFBFBD><EFBFBD><EFBFBD>daisy<EFBFBD>û<EFBFBD>
# create daisy user
write_install_log "create daisy user in mariadb"
echo "grant all privileges on *.* to 'daisy'@'localhost' identified by 'daisy'" | ${mysql_cmd}
if [ $? -ne 0 ];then
write_install_log "Error:create daisy user failed..."
exit 1
fi
# <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ironic<EFBFBD>û<EFBFBD>
# create ironic user
write_install_log "create ironic user in mariadb"
echo "grant all privileges on ironic.* to 'ironic'@'localhost' identified by 'ironic'" | ${mysql_cmd}
if [ $? -ne 0 ];then
@ -160,46 +164,45 @@ function all_install
exit 1
fi
# <EFBFBD><EFBFBD>keystone<EFBFBD><EFBFBD><EFBFBD>ݿ⸳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD>
# give the host access to keystone database
write_install_log "Give the host access to the keystone database"
echo "grant all privileges on keystone.* to 'keystone'@'%' identified by 'keystone'"| ${mysql_cmd}
if [ $? -ne 0 ];then
write_install_log "Error:Give the host access to the keystone database failed..."
exit 1
fi
# <EFBFBD><EFBFBD>daisy<EFBFBD><EFBFBD><EFBFBD>ݿ⸳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD>
# give the host access to daisy database
write_install_log "Give the host access to the daisy database"
echo "grant all privileges on daisy.* to 'daisy'@'%' identified by 'daisy'"| ${mysql_cmd}
if [ $? -ne 0 ];then
write_install_log "Error:Give the host access to the daisy database failed..."
exit 1
fi
# <EFBFBD><EFBFBD>ironic<EFBFBD><EFBFBD><EFBFBD>ݿ⸳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD>
# give the host access to ironic database
write_install_log "Give the host access to the ironic database"
echo "grant all privileges on ironic.* to 'ironic'@'%' identified by 'ironic'"| ${mysql_cmd}
if [ $? -ne 0 ];then
write_install_log "Error:Give the host access to the ironic database failed..."
exit 1
fi
echo "flush privileges"| ${mysql_cmd}
else
else
write_install_log "Error:mariadb service is not active"
exit 1
fi
#<23><><EFBFBD><EFBFBD>keystone<6E><65><EFBFBD>ݿ<EFBFBD><DDBF>ı<EFBFBD>
#creat keystone datebase tables
which keystone-manage >> $install_logfile 2>&1
if [ "$?" == 0 ];then
write_install_log "start keystone-manage db_sync..."
write_install_log "start keystone-manage db_sync..."
keystone-manage db_sync
[ "$?" -ne 0 ] && { write_install_log "Error:keystone-manage db_sync command failed"; exit 1; }
[ "$?" -ne 0 ] && { write_install_log "Error:keystone-manage db_sync command failed"; exit 1; }
fi
#<EFBFBD><EFBFBD><EFBFBD><EFBFBD>horizon admin<EFBFBD>˻<EFBFBD>
#creat horizon admin account
export OS_SERVICE_TOKEN=$keystone_admin_token
export OS_SERVICE_ENDPOINT=http://$public_ip:35357/v2.0
keystone user-create --name=admin --pass=keystone >> $install_logfile 2>&1
@ -220,67 +223,67 @@ function all_install
fi
keystone endpoint-create --service-id=$service_id --region=RegionOne --publicurl=http://$public_ip:5000/v2.0 --internalurl=http://$public_ip:5000/v2.0 --adminurl=http://$public_ip:35357/v2.0 >> $install_logfile 2>&1
[ "$?" -ne 0 ] && { write_install_log "Error:keystone endpoint-create command failed"; exit 1; }
#<EFBFBD><EFBFBD><EFBFBD><EFBFBD>daisy<EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><EFBFBD>ı<EFBFBD>
#creat daisy datebase tables
which daisy-manage >> $install_logfile 2>&1
if [ "$?" == 0 ];then
write_install_log "start daisy-manage db_sync..."
write_install_log "start daisy-manage db_sync..."
daisy-manage db_sync
[ "$?" -ne 0 ] && { write_install_log "Error:daisy-manage db_sync command failed"; exit 1; }
[ "$?" -ne 0 ] && { write_install_log "Error:daisy-manage db_sync command failed"; exit 1; }
fi
#<EFBFBD><EFBFBD><EFBFBD><EFBFBD>rabbitmq<EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
#add rabbitmq related configuration
config_rabbitmq_env
config_rabbitmq_config
#<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ironic<EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
config_ironic "/etc/ironic/ironic.conf"
config_rabbitmq_config
#Configure ironic related configuration items
config_ironic "/etc/ironic/ironic.conf"
config_ironic_discoverd "/etc/ironic-discoverd/discoverd.conf" "$public_ip"
#<EFBFBD>޸<EFBFBD>clustershell<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
#modify clustershell configuration
clustershell_conf="/etc/clustershell/clush.conf"
sed -i "s/connect_timeout:[[:space:]]*.*/connect_timeout: 360/g" $clustershell_conf
sed -i "s/command_timeout:[[:space:]]*.*/command_timeout: 3600/g" $clustershell_conf
#<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ironic<EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><EFBFBD>ı<EFBFBD>
#creat ironic datebase tables
which ironic-dbsync >> $install_logfile 2>&1
if [ "$?" == 0 ];then
write_install_log "start ironic-dbsync ..."
write_install_log "start ironic-dbsync ..."
ironic-dbsync --config-file /etc/ironic/ironic.conf create_schema
[ "$?" -ne 0 ] && { write_install_log "Error:ironic-dbsync --config-file /etc/ironic/ironic.conf create_schema failed"; exit 1; }
[ "$?" -ne 0 ] && { write_install_log "Error:ironic-dbsync --config-file /etc/ironic/ironic.conf create_schema failed"; exit 1; }
fi
systemctl restart rabbitmq-server.service
[ "$?" -ne 0 ] && { write_install_log "Error:systemctl restart rabbitmq-server.service failed"; exit 1; }
systemctl restart openstack-keystone.service
[ "$?" -ne 0 ] && { write_install_log "Error:systemctl restart rabbitmq-server.service failed"; exit 1; }
systemctl restart openstack-ironic-api.service
systemctl restart openstack-ironic-api.service
[ "$?" -ne 0 ] && { write_install_log "Error:systemctl restart openstack-ironic-api.service failed"; exit 1; }
systemctl restart openstack-ironic-conductor.service
[ "$?" -ne 0 ] && { write_install_log "Error:systemctl restart openstack-ironic-conductor.service failed"; exit 1; }
systemctl restart openstack-ironic-discoverd.service
[ "$?" -ne 0 ] && { write_install_log "Error:systemctl restart openstack-ironic-discoverd.service failed"; exit 1; }
systemctl start daisy-orchestration.service
[ "$?" -ne 0 ] && { write_install_log "Error:systemctl start daisy-orchestration.service failed"; exit 1; }
systemctl enable daisy-orchestration.service >> $install_logfile 2>&1
systemctl enable openstack-ironic-api.service >> $install_logfile 2>&1
systemctl enable openstack-ironic-conductor.service >> $install_logfile 2>&1
systemctl enable openstack-ironic-discoverd.service >> $install_logfile 2>&1
#daisy<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>񡢽<EFBFBD>ɫ<EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD>
#init daisy
daisy_init_func
modify_sudoers /etc/sudoers requiretty
daisyrc_admin "$public_ip"
build_pxe_server "$public_ip" "$bind_port"
config_get_node_info
write_install_log "Daisy Install Successfull..."
}
_INSTALL_INTERFACE_FILE="install_interface.sh"