设为首页 收藏本站
查看: 1450|回复: 0

[Cloudstack] CloudStack 注册模板脚本分析

[复制链接]

尚未签到

发表于 2015-4-18 09:08:30 | 显示全部楼层 |阅读模式
  注册系统虚拟机模板
  /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt
  内容如下:
  
usage() {   
  printf "or\n" >&2   
}
  failed() {   
  echo "Installation failed"   
  exit $1   
}   
#set -x   
mflag=   
fflag=   
ext="vhd"   
templateId=   
hyper=   
msKey=password   
DISKSPACE=5120000  #free disk space required in kilobytes   
dbHost=   
dbUser=   
dbPassword=   
jasypt='/usr/share/cloudstack-common/lib/jasypt-1.9.0.jar'   
while getopts 'm:h:f:u:Ft:e:s:o:r:d' OPTION   
do   
  case $OPTION in   
  m)    mflag=1   
                mntpoint="$OPTARG"   
                ;;   
  f)    fflag=1   
                tmpltimg="$OPTARG"   
                ;;   
  u)    uflag=1   
                url="$OPTARG"   
                ;;   
  F)    Fflag=1 ;;   
  t)    templateId="$OPTARG"   
                ;;   
  e)    ext="$OPTARG"   
                ;;   
  h)    hyper="$OPTARG"   
                ;;   
  s)    sflag=1   
                msKey="$OPTARG"   
                ;;   
  o)    oflag=1   
        dbHost="$OPTARG"   
                ;;   
  r)    rflag=1   
        dbUser="$OPTARG"   
                ;;   
  d)    dflag=1   
        dbPassword="$OPTARG"   
                ;;   
  ?)    usage   
                failed 2   
                ;;   
  esac   
done
  usage   
  failed 2   
if [ -z "$hyper" ]   
then   
  usage
  if [ ! -d $mntpoint ]   
then   
  echo "mount point $mntpoint doesn't exist\n"   
  failed 4   
fi
  if [[ "$fflag" == "1" && ! -f $tmpltimg ]]   
then   
  echo "template image file $tmpltimg doesn't exist"   
  failed 3   
fi
  
if [ "$oflag" != 1 ]; then   
fi   
if [ "$rflag" != 1 ]; then   
fi
  if [ -f /etc/cloudstack/management/db.properties ]; then   
    if [ "$encType" == "file" ]   
    then   
        msKey=$(cat /etc/cloudstack/management/key)   
        if [ ! "$sflag" == "1" ]   
        then   
            echo "Encryption type web requires mgmt secret key using -s option"   
            failed 9   
        fi   
    fi   
fi
  if [ ! $encPassword == "" ]   
                if [ ! $dbPassword ]   
                then   
                fi   
        fi   
else   
    if [ "$dflag" != 1 ]; then   
    fi   
fi
  if [ "$templateId" == "" ]   
then   
   if [ "$hyper" == "kvm" ]   
   then   
      ext="qcow2"   
   elif [ "$hyper" == "xenserver" ]   
   then   
      ext="vhd"   
   elif [ "$hyper" == "vmware" ]   
   then   
      ext="ova"   
   else   
      usage   
      failed 2   
   fi   
fi
  if [ ! $templateId ]   
then   
        echo "Unable to get template Id from database"   
        failed 8   
fi
  localfile=$(uuidgen).$ext
  mntpoint=`echo "$mntpoint" | sed 's|/*$||'`
  destdir=$mntpoint/template/tmpl/1/$templateId/
  mkdir -p $destdir   
if [ $? -ne 0 ]   
then   
  printf "Failed to write to mount point $mntpoint -- is it mounted?\n"   
  failed 3   
fi
  if [ "$Fflag" == "1" ]   
then   
  rm -rf $destdir/*   
  if [ $? -ne 0 ]   
  then   
    echo "Failed to clean up template directory $destdir -- check permissions?"   
    failed 2   
  fi   
if [ -f $destdir/template.properties ]   
then   
  failed 4   
fi
  destvhdfiles=$(find $destdir -name \*.$ext)   
if [ "$destvhdfiles" != "" ]   
then   
  echo "Data already exists at destination $destdir -- use -F to force cleanup of old template"   
  failed 5   
fi
  tmpfile=$(dirname $0)/$localfile
  touch $tmpfile   
if [ $? -ne 0 ]   
then   
  printf "Failed to create temporary file in directory $(dirname $0) -- is it read-only or full?\n"   
  failed 4   
fi
  destcap=$(df -P $destdir | awk '{print $4}' | tail -1 )
  localcap=$(df -P $(dirname $0) | awk '{print $4}' | tail -1 )
  if [ "$uflag" == "1" ]   
then   
  wget -O $tmpfile $url   
  if [ $? -ne 0 ]   
  then   
    echo "Failed to fetch system vm template from $url"   
    failed 5   
  fi   
fi
  
if [ "$fflag" == "1" ]   
then   
  cp $tmpltimg $tmpfile   
  if [ $? -ne 0 ]   
  then   
    printf "Failed to create temporary file in directory $(dirname $0) -- is it read-only or full?\n"   
    failed 6   
  fi   
fi
  
installrslt=$($(dirname $0)/createtmplt.sh -s 2 -d 'SystemVM Template' -n $localfile -t $destdir/ -f $tmpfile -u -v)
  if [ $? -ne 0 ]   
then   
  echo "Failed to install system vm template $tmpltimg to $destdir: $installrslt"   
  failed 7   
fi
  if [ "$ext" == "ova" ]   
then   
  tar xvf $destdir/$localfile -C $destdir &> /dev/null   
fi
  tmpltfile=$destdir/$localfile   
tmpltsize=$(ls -l $tmpltfile| awk -F" " '{print $5}')
  echo "$ext=true" >> $destdir/template.properties   
echo "id=$templateId" >> $destdir/template.properties   
echo "public=true" >> $destdir/template.properties   
echo "$ext.filename=$localfile" >> $destdir/template.properties   
echo "uniquename=routing-$templateId" >> $destdir/template.properties   
echo "$ext.virtualsize=$tmpltsize" >> $destdir/template.properties   
echo "virtualsize=$tmpltsize" >> $destdir/template.properties   
echo "$ext.size=$tmpltsize" >> $destdir/template.properties
  echo "Successfully installed system VM template $tmpltimg to $destdir"
  
  
  执行方式
  Usage: cloud-install-sys-tmplt: -m  -f  [-h  ] [ -s ][-u ] [-F ] [-e ] [-o ] [-r ] [-d ]   
or   
cloud-install-sys-tmplt: -m  -u  [-h  ] [ -s ]
  
  /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m /opt/secondary/ -f kvm.qcow2.bz2  -h kvm -s password

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-58322-1-1.html 上篇帖子: CloudStack核心类ApiServlet、ApiServer、ApiDispatcher、GenericDaoBase源码分析 下篇帖子: CloudStack 4.2 新功能:集成SNMP进行系统监控(原理篇)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表