当tarball执行时候,它是如何判断这个节点所处的环境是qa,还是production 抑或是dev呢?显然,如果让管理员一个一个分配的话,那么将非常容易错,所幸的是,所有的不同环境的机器都分配在不同的network segment中,所以我们可以让脚本获得dnsdomainname的信息,然后进行加工来轻松获取环境信息:

 

  1. touch /tmp/dnsdomainname.txt 
  2.  
  3. dnsdomainname > /tmp/dnsdomainname.txt 
  4.  
  5. #get the dnsdomainname 
  6.  
  7. DNSDOMAINNAME=`cat /tmp/dnsdomainname.txt` 
  8.  
  9. echo "DNSDOMAINNAME is :  $DNSDOMAINNAME" 
  10.  
  11. rm -r /tmp/dnsdomainname.txt 
  12.  
  13.   
  14.  
  15. #make decision of the environment based on the dnsdomainname 
  16.  
  17.   
  18.  
  19. DEV_KEYWORD="dev" 
  20.  
  21. QA_KEYWORD="qa" 
  22.  
  23. PROD_KEYWORD="prod" 
  24.  
  25.   
  26.  
  27. declare -i IS_DEV_ENV 
  28.  
  29. declare -i IS_QA_ENV 
  30.  
  31. declare -i IS_PROD_ENV 
  32.  
  33.   
  34.  
  35. IS_DEV_ENV=`echo $DNSDOMAINNAME | grep $DEV_KEYWORD | wc -l` 
  36.  
  37. IS_QA_ENV=`echo $DNSDOMAINNAME | grep $QA_KEYWORD | wc -l` 
  38.  
  39. IS_PROD_ENV=`echo $DNSDOMAINNAME | grep $PROD_KEYWORD | wc -l` 
  40.  
  41.   
  42.  
  43. # Download from Storage 
  44.  
  45.   
  46.  
  47. if [ "$IS_DEV_ENV" -gt "$ZERO" ]; 
  48.  
  49.         then 
  50.  
  51.                 ENVIRONMENT_TYPE=dev 
  52.  
  53.                 LIFERAY_TOMCAT_BUNDLE_DOWNLOAD_ADDR="http://10.242.8.206:4227/storage/paas/installer/liferay/community-edition-liferay-portal-tomcat-6.1.0.zip" 
  54.  
  55.                 echo "the environment of this machine is dev " 
  56.  
  57.   
  58.  
  59.   
  60.  
  61. elif [ "$IS_QA_ENV" -gt "$ZERO" ]; 
  62.  
  63.         then 
  64.  
  65.                  ENVIRONMENT_TYPE=qa 
  66.  
  67.                  LIFERAY_TOMCAT_BUNDLE_DOWNLOAD_ADDR="http://10.242.8.206:4227/storage/paas/installer/liferay/community-edition-liferay-portal-tomcat-6.1.0.zip" 
  68.  
  69.                  echo "the environment of this machine is qa" 
  70.  
  71.   
  72.  
  73.   
  74.  
  75. elif [ "$IS_PROD_ENV" -gt "$ZERO" ]; 
  76.  
  77.         then 
  78.  
  79.                  ENVIRONMENT_TYPE=prod 
  80.  
  81.                  LIFERAY_TOMCAT_BUNDLE_DOWNLOAD_ADDR=http://ndc-staas-app1.prod.gecwalmart.com:4227/storage/paas/installer/liferay/community-edition-liferay-portal-tomcat-6.1.0.zip 
  82.  
  83.                  echo "the environment of this machine is prod" 
  84.  
  85.   
  86.  
  87.   
  88.  
  89. else 
  90.  
  91.     #the default one ,the environment is dev 
  92.  
  93.                  ENVIRONMENT_TYPE=dev 
  94.  
  95.         LIFERAY_TOMCAT_BUNDLE_DOWNLOAD_ADDR="http://10.242.8.206:4227/storage/paas/installer/liferay/community-edition-liferay-portal-tomcat-6.1.0.zip" 
  96.  
  97.         echo "the environment of this machine is dev" 
  98.  
  99.   
  100.  
  101.   
  102.  
  103. fi 
  104.  
  105.   
  106.  
  107. echo "The liferay tomcat bundle zip file is accessable from  $LIFERAY_TOMCAT_BUNDLE_DOWNLOAD_ADDR" 
  108.  
  109.   

 

从这里可以看出,(01-11行)我的思路是首先把dnsdomainname的输出读到一个临时文件中,并用cat读取这个文件,然后删除临时文件:

 

然后对于读取的内容,因为我们已经有了一些约定,所以可以很轻松的识别出这个机器所处的环境,(15-39行)方法是看这个dnsdomainname中是否有"qa","prod","dev"的字眼出现。

 

最终当识别出环境之后,我们就可以吧环境保存到变量中,并且被configure.sh中所使用了。当然了,这个环境的不同还会影响到tomcat zip bundle下载地址的不同。