OneStack:Ubuntu 12.04 (或11.10) 一键部署安装OpenStack云计算平台

jopen 12年前

OneStack:在Ubuntu12.04(precise)上一键安装部署Opentack Essex

提醒:如果你喜欢折腾,喜欢自己一步一步安装各个功能组件和配置conf文件,你可以略过此文。本文工具可以在裸机和虚拟机一键部署真实的 OpenStack云计算平台,主要步骤是配置网络、数据库、keystone、glance、nova、dashboard、创建镜像和启动实例等,代 码内有详细注释。这只是学习Opentack的入门的一步,深入研究可以参考附录3给出的部分资料和社区。

 

一、项目(OneStack)地址:

http://onestack.googlecode.com

喜欢git或者github的请去 https://github.com/Kayven/OneStack

不希望同行们把过多精力花在OpenStack的安装部署上(以后应该会改进),而是对其机制原理、工程实践、性能调优、应用服务等深入研究探讨。 所以提供这个一键部署的工具,帮助大家快速建立环境实验生产实践。项目结构如下:

  • oneStack.sh(一键部署 all-in-one 的 OneStack,简单安装的主要文件);
  • setup_base.sh(安装基本系统);
  • setup_test.sh(添加镜像和实例);
  • addComputeNode.sh(增加计算节点);
  • delStack.sh(只卸载nova、glance、keystone等);
  • delAll.sh(卸载所有安装的组件和工具);
  • resetStack.sh(清空数据库,镜像、网络和实例等,重新上传镜像、创建实例);
  • addClient.sh(添加客户端,nova管理等);
  • HAStack 目录(OneStack 的高可用性,希望更多人可以提出自己的解决方案)。


二、部署(OneStack)步骤

简单部署OneStack:

wget http://onestack.googlecode.com/files/oneStack.sh && chmod +x oneStack.sh && ./oneStack.sh

 

完整部署OneStack:

Just checkout and run it!

1. Setup a fresh Ubuntu Precise(12.04) Sever OS.

2. checkout

svn checkout http://onestack.googlecode.com/svn/trunk/ onestack-read-only

3. run it!

cd onestack-read-only/ && ./oneStack.sh

(如何简单配置参数见留言说明,或者见http://onestack.googlecode.com,或者见脚本注释)

(多节点的部署类似,只需要在计算节点设置并执行addComputeNode.sh)


三、项目(OneStack)说明:

  • 在Ubuntu12.04(precise)上安装部署Opentack Essex
  • 只需要一个文件即可完成全部功能组件的部署:http://onestack.googlecode.com/files/oneStack.sh

  • 里面含有详细的注释说明,看完整个脚本相当于看完了安装文档;

  • svn整个项目只是多一些辅助工具,包括重置、重新安装、卸载等;

  • 也欢迎同道人补充和完善更多的功能,适用于更多的操作系统和应用场景。

四、项目(OneStack)来源:

  • 类似项目有DevStack,但是DevStack是使用screen安装OpenStack,重启服务器会出现一些问题,没有提供重启、重置等有用功能;

  • 由于组件独立分散,安装过程过于繁琐,可以抽象成通用的项目供大家方便使用;

  • 官方提供了一个比较完善的入门文档,但是,这一步一步下来得做很多无用功,容易漏错而引起很多莫名和头疼的问题;

  • 本项目不像devstack只是提供实验环境,而是可以实际部署使用,可以自己修改配置,按需增加组件和功能,实现一键部署,可扩展使用。

五、项目(OneStack)描述:
  1. 一键完整部署OpenStack,可以自定义配置、方便地扩展功能组件,无交互地自动部署;

  2. 安装过程不需要等待配置:

  • 功能齐全,附带了卸载、重置、添加计算节点等工具
    1. 可以卸载主要的opentack组件,包括nova、glance、keystone等;
    2. 可以重置数据库和配置,重新安装openstack组件;
    3. 可以根据需要自行更改脚本,方便部署自己的云计算平台。
  • 经过多次测试,完整在VMware虚拟机上部署OpenStack
      测试环境:VMware ESXi 5.0虚拟Dell R210服务器,其中一个虚拟机上部署Opentack,启动多个实例,正常运行;远程访问和web管理正常;重启、重置、重新安装都正常。
      系统要求:双网卡,64位机器,支持VT技术
  • 脚本运行过程会做如下工作:
    1. 配置网络相关;
    2. 安装和配置数据库;
    3. 安装和部署身份管理组件keystone;
    4. 安装和部署镜像管理组件glance;
    5. 安装和部署控制与计算组件nova;
    6. 安装和部署web管理组件dashboard;
    7. 上传和添加ubuntu12.04镜像;
    8. 设置项目安全规则和密钥;
    9. 启动实例,并正常运行。
</div>
  • 欢迎反馈,谢谢.
    1. 本人尽力做到不出差错,但是限于学识和眼界,难免有考虑不周、冗余、没有最优化或者表达不好之处;
    2. 希望大家有任何意见建议随时联系我。
附录1:
为了方便大家查阅、讨论、交流、review和完善,在此贴出主要代码。
#!/usr/bin/env bash  # **oneStack.sh** is a tool to deploy complete and real OpenStack cloud computing service.    # This script installs and configures various combinations of *Glance*,  # *Horizon*, *Keystone*, *Nova*, *Mysql* and others.    # Hily.Hoo@gmail.com (Kayven)  # Learn more and get the most recent version at http://code.google.com/p/onestack/    set -o xtrace  ## 请使用root执行本脚本!  ## Ubuntu 12.04 ("Precise") 部署 OpenStack Essex(或者ubuntu11.10版本)      ## 一:准备系统  ## 1:下载ubuntu 12.04. 服务器版本  ## http://mirrors.ustc.edu.cn/ubuntu-releases/12.04/ubuntu-12.04-server-amd64.iso  ## 2:安装OS  ## 最小化安装,只需要安装ssh server就可以。  ## 装完系统后 更新源里的包,更新系统。确保你装的是最新版本的包。    ## 3:设置root权限  ## 为了简单,全部都是用root来运行。  if [ `whoami` != "root" ]; then          sudo passwd          exec su -c 'sh ./oneStack.sh'  fi    ## 4:设置参数和环境配置,直到两行#号结束  ## 这个配置以后就不需要更改了,比如看到192.168.139.50等ip,不用更改,脚本会自动替换这些初始值。  ## 可以变动的是,第500行的image的下载;或者去掉第七步开始的部分(上传镜像,创建实例)  ##########################################################################  ##########################################################################  ## 如果原来安装过OpenStack,请先执行 ./delStack.sh  ## 1)配置参数  ## 数据库相关  MYSQL_PASSWD=${MYSQL_PASSWD:-"cloud1234"}  NOVA_DB_USERNAME=${NOVA_DB_USERNAME:-"novadbadmin"}  NOVA_DB_PASSWD=${NOVA_DB_PASSWD:-"cloud1234"}  GLANCE_DB_USERNAME=${GLANCE_DB_USERNAME:-"glancedbadmin"}  GLANCE_DB_PASSWD=${GLANCE_DB_PASSWD:-"cloud1234"}    ## 注意:单网卡的去掉interfaces的eth1,并把nova.conf里面eth1改完eth0即可!  ## 自行检查下面network/interfaces的两个网卡设置  ## 本机器外网ip (包括局域网的内网ip,相对于OpenStack内网而言的)  OUT_IP="192.168.139.50"  OUT_IP_PRE="192.168.139"  ## nova-network内网ip  IN_IP="10.0.0.1"  IN_IP_PRE="10.0.0"  ## flat的起始ip  FLAT_IP="10.0.0.40"  ## 浮动ip的起始值  FLOAT_IP="192.168.139.225"    ## 选择虚拟技术,裸机使用kvm,虚拟机里面使用qemu  VIRT_TYPE="qemu"  ## token, 登录dashboard密码(用户名admin)  ADMIN_TOKEN="admin"  ##########################################################################  ## 2)检查系统是否ubuntu12.04,据反映11.10也可以正常安装,可以去掉这一段检查  # Determine what system we are running on.  This provides ``os_VENDOR``...  # Determine OS Vendor, Release and Update   #if [[ -x "`which lsb_release 2>/dev/null`" ]]; then      os_VENDOR=$(lsb_release -i -s)      os_RELEASE=$(lsb_release -r -s)      os_UPDATE=""      os_CODENAME=$(lsb_release -c -s)  #fi  if [ "Ubuntu" = "$os_VENDOR" ]; then      DISTRO=$os_CODENAME  else      echo "The os didn't seems to be Ubuntu."      exit 1  fi  echo $DISTRO  if [ "precise" != ${DISTRO} -a "oneiric" != ${DISTRO} ]; then      echo "WARNING: this script has been tested on oneiric or precise"      exit 1  fi    ############################################################################  ## 3)以下系统配置,语言中文支持、国内APT源、网络设置(两个网卡),可以自行配置,注释掉这些步骤。  ## locale    ############################################################################  ## 4:设置网络  SOURCE_FILE=${SOURCE_FILE:-"/etc/apt/sources.list"}  cp $SOURCE_FILE $SOURCE_FILE.bak  cat <$SOURCE_FILE  deb http://debian.ustc.edu.cn/ubuntu/ precise main restricted universe multiverse  deb http://debian.ustc.edu.cn/ubuntu/ precise-backports restricted universe multiverse  deb http://debian.ustc.edu.cn/ubuntu/ precise-proposed main restricted universe multiverse  deb http://debian.ustc.edu.cn/ubuntu/ precise-security main restricted universe multiverse  deb http://debian.ustc.edu.cn/ubuntu/ precise-updates main restricted universe multiverse  deb-src http://debian.ustc.edu.cn/ubuntu/ precise main restricted universe multiverse  deb-src http://debian.ustc.edu.cn/ubuntu/ precise-backports main restricted universe multiverse  deb-src http://debian.ustc.edu.cn/ubuntu/ precise-proposed main restricted universe multiverse  deb-src http://debian.ustc.edu.cn/ubuntu/ precise-security main restricted universe multiverse  deb-src http://debian.ustc.edu.cn/ubuntu/ precise-updates main restricted universe multiverse  APT  #sed -i 's/debian.ustc.edu.cn/mirrors.163.com/g' $SOURCE_FILE    # network configure  NETWORK_CONF=${NETWORK_CONF:-"/etc/network/interfaces"}  if ! grep -q eth1 $NETWORK_CONF; then          cat <$NETWORK_CONF  auto lo  iface lo inet loopback    # The primary network interface  auto eth0  iface eth0 inet static  pre-up ifconfig eth0 hw ether b8:ac:6f:9a:ee:e4          address 192.168.139.50          netmask 255.255.255.0          network 192.168.139.0          broadcast 192.168.139.255          gateway 192.168.139.253          dns-nameservers 210.72.128.8    auto eth1  iface eth1 inet static  pre-up ifconfig eth1 hw ether b8:ac:6f:9a:ee:e4          address 10.0.0.1          netmask 255.255.255.0          network 10.0.0.0          broadcast 10.0.0.255  INTERFACES          /etc/init.d/networking restart  fi  ## 以上系统配置,可以自行配置,注释掉这些步骤。  ############################################################################  ############################################################################    apt-get update        ## 5:安装bridge  apt-get install -y bridge-utils  ## 6:设置NTP  apt-get install -y ntp  if ! grep -q fudge "/etc/ntp.conf"; then          cat < /etc/ntp.conf  server ntp.ubuntu.com iburst  server 127.127.1.0  fudge 127.127.1.0 stratum 10  NTPconf  fi  service ntp restart  ## 7:设置Iscsi  apt-get install -y tgt ssh w3m unzip wget curl expect  ## 安装iscsi客户端、安装rabbitmq  apt-get install -y open-iscsi open-iscsi-utils  apt-get install -y rabbitmq-server memcached python-memcache  apt-get install -y kvm libvirt-bin qemu qemu-kvm    ## 二:安装mysql和创建相关数据库  ## Openstack的组件:nova,keystone,glance,都需要数据库。不过目前官方建议keystone,采用sqlite存储,而不用mysql存放。所以我们只需要创建nova和glance两个数据库就可以。  ## 1:安装mysql  ## 过程中,会提示你输入root密码。通过debconf-set-selections读取跳过这一步.  #MYSQL_PASSWD=${MYSQL_PASSWD:-"cloud1234"}  ## apt-get install debconf debconf-utils  cat <> /etc/apache2/httpd.conf          /etc/init.d/apache2 restart  fi    ## 2:安装phpmyadmin (可选)  cat <> /etc/profile  export OS_TENANT_NAME=admin  export OS_USERNAME=admin  export OS_PASSWORD=ADMIN  export OS_AUTH_URL="http://localhost:5000/v2.0/"  ENV_AUTH  sed -i -e "s/ADMIN/$ADMIN_TOKEN/g" /etc/profile  export OS_TENANT_NAME=admin  export OS_USERNAME=admin  export OS_PASSWORD=$ADMIN_TOKEN  export OS_AUTH_URL="http://localhost:5000/v2.0/"  #source /etc/profile  ## 检查检查  ## # export | grep OS_  ## declare -x OS_AUTH_URL="http://localhost:5000/v2.0/"  ## declare -x OS_PASSWORD="hastexo"  ## declare -x OS_TENANT_NAME="admin"  ## declare -x OS_USERNAME="admin"  ## 这个时候,直接运行  ## root@node6:~# keystone user-list      ## 四:安装和配置glance  ## 1:安装软件  apt-get install -y glance glance-api glance-client glance-common glance-registry python-glance  ## 2:配置/etc/glance/glance-api-paste.ini   ## 修改文件最后3行,这些设置都是keystone导入数据的时候设置的。  sed -i -e "         s/%SERVICE_TENANT_NAME%/admin/g;         s/%SERVICE_USER%/admin/g;         s/%SERVICE_PASSWORD%/$ADMIN_TOKEN/g;      " /etc/glance/glance-api-paste.ini     ## 3:设置 /etc/glance/glance-registry-paste.ini  sed -i -e "         s/%SERVICE_TENANT_NAME%/admin/g;         s/%SERVICE_USER%/admin/g;         s/%SERVICE_PASSWORD%/$ADMIN_TOKEN/g;      " /etc/glance/glance-registry-paste.ini  ## 4:配置/etc/glance/glance-registry.conf  ## 修改  ## #sql_connection = sqlite:////var/lib/glance/glance.sqlite  ## sql_connection = mysql://glancedbadmin:ohC3teiv@10.42.0.6/glance  ## 在末尾添加两行  ## [paste_deploy]  ## flavor = keystone  GLANCE_API_CONF=${GLANCE_API_CONF:-"/etc/glance/glance-api.conf"}  GLANCE_REGISTRY_CONF=${GLANCE_REGISTRY_CONF:-"/etc/glance/glance-registry.conf"}  PUBLIC_IP=${PUBLIC_IP:-"192.168.139.50"}  sed -i '/sql_connection = .*/{s|sqlite:///.*|mysql://'"$GLANCE_DB_USERNAME"':'"$GLANCE_DB_PASSWD"'@'"$PUBLIC_IP"'/glance|g}' $GLANCE_API_CONF  cat <>$GLANCE_API_CONF  [paste_deploy]  flavor = keystone  EOF  sed -i '/sql_connection = .*/{s|sqlite:///.*|mysql://'"$GLANCE_DB_USERNAME"':'"$GLANCE_DB_PASSWD"'@'"$PUBLIC_IP"'/glance|g}' $GLANCE_REGISTRY_CONF  cat <>$GLANCE_REGISTRY_CONF  [paste_deploy]  flavor = keystone  EOF    ## 5:配置/etc/glance/glance-api.conf  ## 6:同步数据库  glance-manage version_control 0  glance-manage db_sync            service glance-api restart && service glance-registry restart    ## 7:验证glance服务是否正常  # glance index  ## 没有任何的输出。表示正常。  ## #echo $?  ## 下面会输出0 ,表示正常。  ## # glance --version  ## glance 2012.1    ## 8:下载镜像并上传  ## ubuntu官方专门提供image,http://uec-images.ubuntu.com。不过一定要注意  ## 这些镜像,都是必须使用密钥登录,直接用用户名密码是无法的登录的。  ## 下载镜像  ## http://cloud-images.ubuntu.com/precise/current/  ## 这应该是ubuntu提供的最新的稳定的镜像。  #wget http://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img  ##  expect -c "spawn /usr/bin/scp  yuan@192.168.139.84:/home/yuan/precise-server-cloudimg-amd64-disk1.img .; expect {  ##     \"password:\"; {  ##    send \"yyhu\r\n\";  ##    }; \"Are you sure you want to continue connecting (yes/no)?\" {  ##    send \"yes\r\n\" ;  ##    expect \"password:\";  ##    send \"yyhu\r\n\";  ##    }  ##  } ; set timeout -1; expect -re \"100%\";"  ##^^####sleep 5; expect -re \"password\"; send \"yyhu\r\n\";      # glance add name="Ubuntu12.04-amd64" is_public=true container_format=ovf disk_format=qcow2 < precise-server-cloudimg-amd64-disk1.img  ## 这里还有一种方法上传,如果你没用环境变量。  ## glance --tenant=admin--username=admin --password=hastexo  --auth_url=http://127.0.0.1:5000/v2.0 add name="Ubuntu 11.10 cloudimg amd64" is_public=true container_format=ovf disk_format=qcow2 < /root/precise-server-cloudimg-amd64-disk1.img  ## 上传完镜像后。在运行  ## glance index      ## 五:安装配置nova  ## 1:安装nova相关组件  apt-get install -y nova-api nova-cert nova-common nova-compute nova-compute-kvm nova-doc nova-network nova-objectstore nova-scheduler  nova-volume python-nova python-novaclient  nova-consoleauth python-novnc novnc  ## 2:配置 /etc/nova/nova.conf  ## 如果你是在虚拟机里测试Openstack。你需要把默认的虚拟化引擎从kvm改成qemu。  cat < /etc/nova/nova.conf  --dhcpbridge_flagfile=/etc/nova/nova.conf  --dhcpbridge=/usr/bin/nova-dhcpbridge  --logdir=/var/log/nova  --state_path=/var/lib/nova  --lock_path=/var/lock/nova  --allow_admin_api=true  --use_deprecated_auth=false  --auth_strategy=keystone  --scheduler_driver=nova.scheduler.simple.SimpleScheduler  --s3_host=192.168.139.50  --ec2_host=192.168.139.50  --rabbit_host=192.168.139.50  --cc_host=192.168.139.50  --nova_url=http://192.168.139.50:8774/v1.1/  --routing_source_ip=192.168.139.50  --glance_api_servers=192.168.139.50:9292  --image_service=nova.image.glance.GlanceImageService  --iscsi_ip_prefix=10.0.0  --sql_connection=mysql://novadbadmin:cloud1234@192.168.139.50/nova  --ec2_url=http://192.168.139.50:8773/services/Cloud  --keystone_ec2_url=http://192.168.139.50:5000/v2.0/ec2tokens  --api_paste_config=/etc/nova/api-paste.ini  --libvirt_type=kvm  --libvirt_use_virtio_for_bridges=true  --start_guests_on_host_boot=true  --resume_guests_state_on_host_boot=true     #novnc  --novnc_enabled=true  --novncproxy_base_url= http://192.168.139.50:6080/vnc_auto.html  --vncserver_proxyclient_address=127.0.0.1  --vncserver_listen=127.0.0.1    # network specific settings  --network_manager=nova.network.manager.FlatDHCPManager  --public_interface=eth0  --flat_interface=eth1  --flat_network_bridge=br100  --fixed_range=10.0.0.1/27  --floating_range=192.168.139.225/27   --network_size=32  --flat_network_dhcp_start=10.0.0.40  --flat_injected=False  --force_dhcp_release  --iscsi_helper=tgtadm  --connection_type=libvirt  --root_helper=sudo nova-rootwrap  #--verbose  --verbose=False  NOVAconf  ## if ! kvm-ok 1>/dev/null 2>&1; then  ##      sed -i -e "s/kvm/qemu/" /etc/nova/nova-compute.conf  ## fi    sed -i -e "s/novadbadmin/$NOVA_DB_USERNAME/g;s/cloud1234/$NOVA_DB_PASSWD/g" /etc/nova/nova.conf  sed -i -e "s/192.168.139.50/$OUT_IP/g;s/192.168.139.225/$FLOAT_IP/g;" /etc/nova/nova.conf  sed -i -e "s/10.0.0.1/$IN_IP/g;s/10.0.0.40/$FLAT_IP/g;s/10.0.0/$IN_IP_PRE/g;" /etc/nova/nova.conf  ## kvm or qemu?  sed -i -e "s/kvm/$VIRT_TYPE/g" /etc/nova/nova.conf  sed -i -e "s/kvm/$VIRT_TYPE/g" /etc/nova/nova-compute.conf    ## 3:配置/etc/nova/api-paste.ini  sed -i -e "         s/%SERVICE_TENANT_NAME%/admin/g;         s/%SERVICE_USER%/admin/g;         s/%SERVICE_PASSWORD%/$ADMIN_TOKEN/g;      " /etc/nova/api-paste.ini  # 4:停止和重启nova相关服务  for a in libvirt-bin nova-network nova-compute nova-api nova-objectstore nova-scheduler novnc nova-volume nova-consoleauth; do service "$a" restart; done      ## 六:安装和配置Dashbaord  ## 1:安装dashbaord  apt-get install -y libapache2-mod-wsgi openstack-dashboard  /etc/init.d/apache2 restart    ## 这个时候,你就可以登录dashboard  ## http://192.168.139.50  ## user:admin  ## pass:ADMIN  ## 之后通过前端web管理      ## 七:创建第一个VM,可以通过上面安装的web管理系统创建。    # 0:同步数据库  ## 以前我运行同步数据库,如果正确, 当nova.conf  ## --verbose=False  ## 是没有任何的输出,否则有一堆是输出。  nova-manage db sync    # 创建网络  nova-manage network create private --fixed_range_v4=10.0.0.1/27 --num_networks=1 --bridge=br100 --bridge_interface=eth1 --network_size=32    ## 设定floating IP  nova-manage floating create --ip_range=192.168.139.225/27    ## 设置权限  chown -R nova:nova /etc/nova  ## 再重启相关服务  for a in libvirt-bin nova-network nova-compute nova-api nova-objectstore nova-scheduler novnc nova-volume nova-consoleauth; do service "$a" restart; done  sleep 10     ## 1:检查nova服务  ## 一路回车,就可以了。通过expect可以不用输入。  if [ ! -e ~/.ssh/id_rsa ]; then  expect -c "spawn ssh-keygen ; set timeout 5; expect \":\"; send \"\r\n\"; set timeout 3; expect  \":\"; send \"\r\n\";set timeout 3; expect \":\"; send \"\r\n\"; expect eof;"  fi  ## 2:上传密钥到数据库  nova keypair-add --pub_key ~/.ssh/id_rsa.pub key1  ## nova keypair-list      ## 打开防火墙  nova secgroup-add-rule default tcp 1 65535 0.0.0.0/0  nova secgroup-add-rule default udp 1 65535 0.0.0.0/0  nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0      ## 4:开始创建虚拟机  ## nova image-list  ## nova flavor-list  ## 创建虚拟机  # nova-manage flavor create --name=m1.minitest --memory=384 --cpu=1 --root_gb=1 --flavor=6 --ephemeral_gb=1    ## 上面的下载镜像移到这一步,可以去掉以下的步骤  wget http://cloud-images.ubuntu.com/precise/current/precise-server-cloudimg-amd64-disk1.img  glance add name="Ubuntu12.04-amd64" is_public=true container_format=ovf disk_format=qcow2 < precise-server-cloudimg-amd64-disk1.img  nova boot --flavor 1 --image "Ubuntu12.04-amd64" --key_name key1 cloud01  # nova show cloud01  # nova console-log cloud01    ##关联vm  sleep 10  ## nova floating-ip-create  ## nova add-floating-ip cloud01 192.168.139.226  nova show cloud01  nova add-floating-ip cloud01 `nova floating-ip-create | awk 'FNR==4{print $2}'`  nova list  nova show cloud01  # ssh instance  # ssh-keygen -f "/home/cloud/.ssh/known_hosts" -R 10.0.0.2  # ssh -i ~/.ssh/id_rsa ubuntu@10.0.0.2      ## 八、完成安装部署  cat <&1   1. login the dashboard     http://192.168.139.50     user:admin     pass:admin or $ADMIN_TOKEN   2. login a instance("cloud01")     ssh -i ~/.ssh/id_rsa ubuntu@10.0.0.2   3. view & manage     nova list     nova show cloud01     ...   4. enjoy yourself! (Contact Hily.Hoo@gmail.com)  EOF
附录2:安装后web登录(dashboard)截图
OneStack:Ubuntu 12.04 (或11.10) 一键部署安装OpenStack云计算平台
</div>

附录3:云计算平台OpenStack资料
官方OpenStack www.openstack.org
国内OpenStack社区 www.openstack.org.cn

国内技术博客-陈沙克  http://hi.baidu.com/chenshake
Ubuntu12.04安装OpenStack文档(入门指南)  http://docs.openstack.org/essex/openstack-compute/starter/content/

Installing OpenStack Essex (2012.1) on Ubuntu 12.04 ("Precise Pangolin")(原文)  http://www.hastexo.com/resources/docs/installing-openstack-essex-20121-ubuntu-1204-precise-pangolin 
“OpenStack Documentation”team(文档、bug报告)  https://launchpad.net/~openstack-doc
Quora上关于openstack的话题  http://www.quora.com/OpenStack
stackoverflow上关于openstack资源的讨论 http://stackoverflow.com/questions/5882333/good-tutorials-and-resources-for-openstack

Kayven( Hily.Hoo@gmail.com )

转自:http://blog.csdn.net/hilyoo/article/details/7696169
</div>