分享

OneStack:Ubuntu 12.04 ("Precise") 一键安装部署云计算平台...

 richsky 2012-07-03

OneStack:Ubuntu 12.04 ("Precise") 一键安装部署云计算平台OpenStack Essex

分类: 云计算 OpenStack 737人阅读 评论(3) 收藏 举报

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

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


2012.07.02更新:

1、受邀在vpsee上对这个项目进行了较为详细的介绍(OneStack:Ubuntu 12.04 上一键自动部署 OpenStack),对于项目来源、相关考虑、项目结构、具体安装步骤(参数设置和前期工作)和预期等做了说明,可以参考。

2、希望增加高可用性的云计算部署,构建OpenStack的高可用性(HA,High Availability) 对高可用性进行了初步介绍,欢迎提出意见和建议。



一、项目(OneStack)地址:

http://onestack.


二、部署(OneStack)步骤

简单部署OneStack:

wget http://onestack./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./svn/trunk/ onestack-read-only

3. run it!

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


三、项目(OneStack)说明:

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

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

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

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


四、项目(OneStack)来源:

  • 类似项目有DevStack,但是DevStack是使用screen模拟安装OpenStack,主要针对11.10版本而作,重启服务器会出现一些问题,没有提供重启、重置等有用功能;

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

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

  • 本项目不像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. 启动实例,并正常运行。
  • 欢迎反馈( Hily.Hoo@gmail.com ),谢谢.
    1. 本人尽力做到不出差错,但是限于学识和眼界,难免有考虑不周、冗余、没有最优化或者表达不好之处;
    2. 希望大家有任何意见建议随时联系我。
附录1:
为了方便大家查阅、讨论、交流、review和完善,在此贴出主要代码。
  1. #!/usr/bin/env bash  
  2. # **oneStack.sh** is a tool to deploy complete and real OpenStack cloud computing service.  
  3.   
  4. # This script installs and configures various combinations of *Glance*,  
  5. # *Horizon*, *Keystone*, *Nova*, *Mysql* and others.  
  6.   
  7. # Hily.Hoo@gmail.com (Kayven)  
  8. # Learn more and get the most recent version at http://code.google.com/p/onestack/  
  9.   
  10. set -o xtrace  
  11. ## 请使用root执行本脚本!  
  12. ## Ubuntu 12.04 ("Precise") 部署 OpenStack Essex  
  13.   
  14. ## 一:准备系统  
  15. ## 1:下载ubuntu 12.04. 服务器版本  
  16. ## http://mirrors.ustc.edu.cn/ubuntu-releases/12.04/ubuntu-12.04-server-amd64.iso  
  17. ## 2:安装OS  
  18. ## 最小化安装,只需要安装ssh server就可以。  
  19. ## 装完系统后 更新源里的包,更新系统。确保你装的是最新版本的包。  
  20.   
  21. ## 3:设置root权限  
  22. ## 为了简单,全部都是用root来运行。  
  23. if [ `whoami` != "root" ]; then  
  24.         sudo passwd  
  25.         exec su -c 'sh ./oneStack.sh'  
  26. fi  
  27.   
  28. ##########################################################################  
  29. ## 如果原来安装过OpenStack,请先执行 ./delStack.sh  
  30. ##########################################################################  
  31. ## 配置参数  
  32. MYSQL_PASSWD=${MYSQL_PASSWD:-"cloud1234"}  
  33. NOVA_DB_USERNAME=${NOVA_DB_USERNAME:-"novadbadmin"}  
  34. NOVA_DB_PASSWD=${NOVA_DB_PASSWD:-"cloud1234"}  
  35. GLANCE_DB_USERNAME=${GLANCE_DB_USERNAME:-"glancedbadmin"}  
  36. GLANCE_DB_PASSWD=${GLANCE_DB_PASSWD:-"cloud1234"}  
  37.   
  38. ## 自行检查下面network/interfaces的两个网卡设置  
  39. OUT_IP="192.168.139.50"  
  40. OUT_IP_PRE="192.168.139"  
  41. IN_IP="10.0.0.1"  
  42. IN_IP_PRE="10.0.0"  
  43. FLAT_IP="10.0.0.40"  
  44. FLOAT_IP="192.168.139.225"  
  45.   
  46. ## 选择虚拟技术,裸机使用kvm,虚拟机里面使用qemu  
  47. VIRT_TYPE="qemu"  
  48. ## token, 登录dashboard密码  
  49. ADMIN_TOKEN="admin"  
  50. ##########################################################################  
  51.   
  52. # Determine what system we are running on.  This provides ``os_VENDOR``...  
  53. # Determine OS Vendor, Release and Update   
  54. #if [[ -x "`which lsb_release 2>/dev/null`" ]]; then  
  55.     os_VENDOR=$(lsb_release -i -s)  
  56.     os_RELEASE=$(lsb_release -r -s)  
  57.     os_UPDATE=""  
  58.     os_CODENAME=$(lsb_release -c -s)  
  59. #fi  
  60.   
  61. if [ "Ubuntu" = "$os_VENDOR" ]; then  
  62.     DISTRO=$os_CODENAME  
  63. else  
  64.     echo "The os didn't seems to be Ubuntu."  
  65.     exit 1  
  66. fi  
  67. echo $DISTRO  
  68. if [ "precise" != ${DISTRO} -a "oneiric" != ${DISTRO} ]; then  
  69.     echo "WARNING: this script has been tested on oneiric or precise"  
  70.     exit 1  
  71. fi  
  72.   
  73. ############################################################################  
  74. ############################################################################  
  75. ## 以下系统配置,语言中文支持、国内APT源、网络设置(两个网卡),可以自行配置,注释掉这些步骤。  
  76.   
  77. ## 4:设置网络  
  78. SOURCE_FILE=${SOURCE_FILE:-"/etc/apt/sources.list"}  
  79. cp $SOURCE_FILE $SOURCE_FILE.bak  
  80. cat <<APT >$SOURCE_FILE  
  81. deb http://debian.ustc.edu.cn/ubuntu/ precise main restricted universe multiverse  
  82. deb http://debian.ustc.edu.cn/ubuntu/ precise-backports restricted universe multiverse  
  83. deb http://debian.ustc.edu.cn/ubuntu/ precise-proposed main restricted universe multiverse  
  84. deb http://debian.ustc.edu.cn/ubuntu/ precise-security main restricted universe multiverse  
  85. deb http://debian.ustc.edu.cn/ubuntu/ precise-updates main restricted universe multiverse  
  86. deb-src http://debian.ustc.edu.cn/ubuntu/ precise main restricted universe multiverse  
  87. deb-src http://debian.ustc.edu.cn/ubuntu/ precise-backports main restricted universe multiverse  
  88. deb-src http://debian.ustc.edu.cn/ubuntu/ precise-proposed main restricted universe multiverse  
  89. deb-src http://debian.ustc.edu.cn/ubuntu/ precise-security main restricted universe multiverse  
  90. deb-src http://debian.ustc.edu.cn/ubuntu/ precise-updates main restricted universe multiverse  
  91. APT  
  92. #sed -i 's/debian.ustc.edu.cn/mirrors.163.com/g' $SOURCE_FILE  
  93.   
  94. # network configure  
  95. NETWORK_CONF=${NETWORK_CONF:-"/etc/network/interfaces"}  
  96. if ! grep -q eth1 $NETWORK_CONF; then  
  97.         cat <<INTERFACES >$NETWORK_CONF  
  98. auto lo  
  99. iface lo inet loopback  
  100.   
  101. # The primary network interface  
  102. auto eth0  
  103. iface eth0 inet static  
  104. pre-up ifconfig eth0 hw ether b8:ac:6f:9a:ee:e4  
  105.         address 192.168.139.50  
  106.         netmask 255.255.255.0  
  107.         network 192.168.139.0  
  108.         broadcast 192.168.139.255  
  109.         gateway 192.168.139.253  
  110.         dns-nameservers 210.72.128.8  
  111.   
  112. auto eth1  
  113. iface eth1 inet static  
  114. pre-up ifconfig eth1 hw ether b8:ac:6f:9a:ee:e4  
  115.         address 10.0.0.1  
  116.         netmask 255.255.255.0  
  117.         network 10.0.0.0  
  118.         broadcast 10.0.0.255  
  119. INTERFACES  
  120.         /etc/init.d/networking restart  
  121. fi  
  122. ## 以上系统配置,可以自行配置,注释掉这些步骤。  
  123. ############################################################################  
  124. ############################################################################  
  125.   
  126. apt-get update  
  127.   
  128. ## 5:安装bridge  
  129. apt-get install -y bridge-utils  
  130. ## 6:设置NTP  
  131. apt-get install -y ntp  
  132. if ! grep -q fudge "/etc/ntp.conf"; then  
  133.         cat <<NTPconf > /etc/ntp.conf  
  134. server ntp. iburst  
  135. server 127.127.1.0  
  136. fudge 127.127.1.0 stratum 10  
  137. NTPconf  
  138. fi  
  139. service ntp restart  
  140. ## 7:设置Iscsi  
  141. apt-get install -y tgt ssh w3m unzip wget curl expect  
  142. ## 安装iscsi客户端、安装rabbitmq  
  143. apt-get install -y open-iscsi open-iscsi-utils  
  144. apt-get install -y rabbitmq-server memcached python-memcache  
  145. apt-get install -y kvm libvirt-bin qemu qemu-kvm  
  146.   
  147. ## 二:安装mysql和创建相关数据库  
  148. ## Openstack的组件:nova,keystone,glance,都需要数据库。不过目前官方建议keystone,采用sqlite存储,而不用mysql存放。所以我们只需要创建nova和glance两个数据库就可以。  
  149. ## 1:安装mysql  
  150. ## 过程中,会提示你输入root密码。通过debconf-set-selections读取跳过这一步.  
  151. #MYSQL_PASSWD=${MYSQL_PASSWD:-"cloud1234"}  
  152. ## apt-get install debconf debconf-utils  
  153. cat <<MYSQL_PRESEED | debconf-set-selections  
  154. mysql-server-5.1 mysql-server/root_password password $MYSQL_PASSWD  
  155. mysql-server-5.1 mysql-server/root_password_again password $MYSQL_PASSWD  
  156. mysql-server-5.1 mysql-server/start_on_boot boolean true  
  157. MYSQL_PRESEED  
  158.   
  159. apt-get install --no-install-recommends -y mysql-server python-mysqldb  
  160. ## chkconfig mysql on  
  161. ## 让mysql支持外部访问  
  162. sed -i '/^bind-address/s/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf    
  163. service mysql restart  
  164. if [ ! -s /etc/apache2/httpd.conf ]; then  
  165.         echo "ServerName localhost" >> /etc/apache2/httpd.conf  
  166.         /etc/init.d/apache2 restart  
  167. fi  
  168.   
  169. ## 2:安装phpmyadmin (可选)  
  170. cat <<PHPmyadmin | debconf-set-selections  
  171. phpmyadmin phpmyadmin/reconfigure-webserver  text     apache2  
  172. phpmyadmin phpmyadmin/dbconfig-install       boolean  true  
  173. phpmyadmin phpmyadmin/app-password-confirm   password $MYSQL_PASSWD  
  174. phpmyadmin phpmyadmin/mysql/admin-pass       password $MYSQL_PASSWD  
  175. phpmyadmin phpmyadmin/password-confirm       password $MYSQL_PASSWD  
  176. phpmyadmin phpmyadmin/setup-password         password $MYSQL_PASSWD  
  177. phpmyadmin phpmyadmin/mysql/app-pass         password $MYSQL_PASSWD  
  178. PHPmyadmin  
  179. apt-get --no-install-recommends -yq install phpmyadmin  
  180.   
  181. ## 3:创建数据库  
  182. ## nova数据库,   管理员:novadbadmin,密码是:cloud1234  
  183. ## glance数据库,管理员:glancedbadmin,密码是:cloud1234  
  184. ## 如果你修改密码,后面很多配置都需要相应更改。  
  185. ##   mysql -uroot -p  
  186. ##   CREATE DATABASE nova;  
  187. ##   GRANT ALL PRIVILEGES ON nova.* TO 'novadbadmin'@'%' IDENTIFIED BY 'cloud1234';  
  188. ##   CREATE DATABASE glance;  
  189. ##   GRANT ALL PRIVILEGES ON glance.* TO 'glancedbadmin'@'%' IDENTIFIED BY 'cloud1234';  
  190. ##   quit  
  191. mysql -uroot -p$MYSQL_PASSWD -e "DROP DATABASE IF EXISTS nova;"  
  192. mysql -uroot -p$MYSQL_PASSWD -e "CREATE DATABASE nova;"  
  193. mysql -uroot -p$MYSQL_PASSWD -e "GRANT ALL ON nova.* TO '$NOVA_DB_USERNAME'@'%' IDENTIFIED BY '$NOVA_DB_PASSWD';"  
  194. mysql -uroot -p$MYSQL_PASSWD -e "DROP DATABASE IF EXISTS glance;"  
  195. mysql -uroot -p$MYSQL_PASSWD -e "CREATE DATABASE glance;"  
  196. mysql -uroot -p$MYSQL_PASSWD -e "GRANT ALL ON glance.* TO '$GLANCE_DB_USERNAME'@'%' IDENTIFIED BY '$GLANCE_DB_PASSWD';"  
  197. if [ -e /var/lib/keystone/keystone.db ]; then  
  198. rm -rf /var/lib/keystone/keystone.db  
  199. fi  
  200.   
  201. ## 三:安装和配置keystone  
  202. ## Openstack的各个组件,keystone是最难配置。搞定keystone,后面应该就没啥麻烦。  
  203. ## 1:安装keystone  
  204. apt-get install -y keystone python-keystone python-keystoneclient  
  205. ## 2:配置keystone  
  206. ## 如果更改token,需要修改 /etc/keystone/keystone.conf 两个地方  
  207. ##    默认定义的token就是ADMIN,web登录admin就是这个密码  
  208. ##    [DEFAULT]  
  209. ##    bind_host = 0.0.0.0  
  210. ##    public_port = 5000  
  211. ##    admin_port = 35357  
  212. ##    admin_token = ADMIN  
  213. ##    另外一个地方是  
  214. ##    [catalog]  
  215. ##    #driver = keystone.catalog.backends.sql.Catalog  
  216. ##    driver = keystone.catalog.backends.templated.TemplatedCatalog  
  217. ##    template_file = /etc/keystone/default_catalog.templates  
  218. ##       
  219. sed -i -e 's/keystone.catalog.backends.sql.Catalog/keystone.catalog.backends.templated.TemplatedCatalog\ntemplate_file = \/etc\/keystone\/default_catalog.templates/g' /etc/keystone/keystone.conf  
  220. sed -i -e "s/ADMIN/$ADMIN_TOKEN/g" /etc/keystone/keystone.conf  
  221. service keystone restart  
  222.   
  223. ## 3: 导入数据  
  224. ## 这个比较有技术含量。通过修改devstack的keystone_data.sh 脚本。实现导入数据。如果你上面的设置都和我一样,那么其实直接运行这个脚本就可以。  
  225. ## wget http://www./system/files/user/4/keystone_data.sh_.txt -O keystone_data.sh  
  226. wget http://onestack./files/gen_keystone_data.sh -O gen_keystone_data.sh  
  227. chmod +x gen_keystone_data.sh  
  228. ## 运行脚本, 如果你修改的默认的用户名和密码,你需要修改脚本。修改两个地方  
  229. ## 第一个是登录dashboard的admin的密码  
  230. ## 第二个就是keystone的token  
  231. ## #ADMIN_PASSWORD=${ADMIN_PASSWORD:-hastexo}  
  232. ## ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin}  
  233. ## SERVICE_PASSWORD=${SERVICE_PASSWORD:-$ADMIN_PASSWORD}  
  234. ## #export SERVICE_TOKEN="hastexo"  
  235. ## export SERVICE_TOKEN="Centrin"  
  236. ## export SERVICE_ENDPOINT="http://localhost:35357/v2.0"  
  237. ## SERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service}  
  238. sed -i -e "s/hastexo/$ADMIN_TOKEN/g" gen_keystone_data.sh   
  239.    
  240. ./gen_keystone_data.sh  
  241. ##  顺利运行,会什么都没有输出  
  242. ##  #echo $?  
  243. ##  下面会输出0 ,表示正常。你就别再运行脚本  
  244. ##  keystone --tenant=admin --username=admin --password=hastexo  --auth_url=http://127.0.0.1:5000/v2.0 user-list  
  245. ##  看到这些,就说明keystone安装正常。  
  246.   
  247. cat <<ENV_AUTH >> /etc/profile  
  248. export OS_TENANT_NAME=admin  
  249. export OS_USERNAME=admin  
  250. export OS_PASSWORD=ADMIN  
  251. export OS_AUTH_URL="http://localhost:5000/v2.0/"  
  252. ENV_AUTH  
  253. sed -i -e "s/ADMIN/$ADMIN_TOKEN/g" /etc/profile  
  254. export OS_TENANT_NAME=admin  
  255. export OS_USERNAME=admin  
  256. export OS_PASSWORD=$ADMIN_TOKEN  
  257. export OS_AUTH_URL="http://localhost:5000/v2.0/"  
  258. #source /etc/profile  
  259. ## 检查检查  
  260. ## # export | grep OS_  
  261. ## declare -x OS_AUTH_URL="http://localhost:5000/v2.0/"  
  262. ## declare -x OS_PASSWORD="hastexo"  
  263. ## declare -x OS_TENANT_NAME="admin"  
  264. ## declare -x OS_USERNAME="admin"  
  265. ## 这个时候,直接运行  
  266. ## root@node6:~# keystone user-list  
  267.   
  268.   
  269. ## 四:安装和配置glance  
  270. ## 1:安装软件  
  271. apt-get install -y glance glance-api glance-client glance-common glance-registry python-glance  
  272. ## 2:配置/etc/glance/glance-api-paste.ini   
  273. ## 修改文件最后3行,这些设置都是keystone导入数据的时候设置的。  
  274. sed -i -e "  
  275.        s/%SERVICE_TENANT_NAME%/admin/g;  
  276.        s/%SERVICE_USER%/admin/g;  
  277.        s/%SERVICE_PASSWORD%/$ADMIN_TOKEN/g;  
  278.     " /etc/glance/glance-api-paste.ini  
  279.    
  280. ## 3:设置 /etc/glance/glance-registry-paste.ini  
  281. sed -i -e "  
  282.        s/%SERVICE_TENANT_NAME%/admin/g;  
  283.        s/%SERVICE_USER%/admin/g;  
  284.        s/%SERVICE_PASSWORD%/$ADMIN_TOKEN/g;  
  285.     " /etc/glance/glance-registry-paste.ini  
  286. ## 4:配置/etc/glance/glance-registry.conf  
  287. ## 修改  
  288. ## #sql_connection = sqlite:////var/lib/glance/glance.sqlite  
  289. ## sql_connection = mysql://glancedbadmin:ohC3teiv@10.42.0.6/glance  
  290. ## 在末尾添加两行  
  291. ## [paste_deploy]  
  292. ## flavor = keystone  
  293. GLANCE_API_CONF=${GLANCE_API_CONF:-"/etc/glance/glance-api.conf"}  
  294. GLANCE_REGISTRY_CONF=${GLANCE_REGISTRY_CONF:-"/etc/glance/glance-registry.conf"}  
  295. PUBLIC_IP=${PUBLIC_IP:-"192.168.139.50"}  
  296. sed -i '/sql_connection = .*/{s|sqlite:///.*|mysql://'"$GLANCE_DB_USERNAME"':'"$GLANCE_DB_PASSWD"'@'"$PUBLIC_IP"'/glance|g}' $GLANCE_API_CONF  
  297. cat <<EOF >>$GLANCE_API_CONF  
  298. [paste_deploy]  
  299. flavor = keystone  
  300. EOF  
  301. sed -i '/sql_connection = .*/{s|sqlite:///.*|mysql://'"$GLANCE_DB_USERNAME"':'"$GLANCE_DB_PASSWD"'@'"$PUBLIC_IP"'/glance|g}' $GLANCE_REGISTRY_CONF  
  302. cat <<EOF >>$GLANCE_REGISTRY_CONF  
  303. [paste_deploy]  
  304. flavor = keystone  
  305. EOF  
  306.   
  307. ## 5:配置/etc/glance/glance-api.conf  
  308. ## 6:同步数据库  
  309. glance-manage version_control 0  
  310. glance-manage db_sync            
  311. service glance-api restart && service glance-registry restart  
  312.   
  313. ## 7:验证glance服务是否正常  
  314. # glance index  
  315. ## 没有任何的输出。表示正常。  
  316. ## #echo $?  
  317. ## 下面会输出0 ,表示正常。  
  318. ## # glance --version  
  319. ## glance 2012.1  
  320.   
  321. ## 8:下载镜像并上传  
  322. ## ubuntu官方专门提供image,http://uec-images.。不过一定要注意  
  323. ## 这些镜像,都是必须使用密钥登录,直接用用户名密码是无法的登录的。  
  324. ## 下载镜像  
  325. ## http://cloud-images./precise/current/  
  326. ## 这应该是ubuntu提供的最新的稳定的镜像。  
  327. wget http://cloud-images./precise/current/precise-server-cloudimg-amd64-disk1.img  
  328. ##  expect -c "spawn /usr/bin/scp  yuan@192.168.139.84:/home/yuan/precise-server-cloudimg-amd64-disk1.img .; expect {  
  329. ##     \"password:\"; {  
  330. ##    send \"yyhu\r\n\";  
  331. ##    }; \"Are you sure you want to continue connecting (yes/no)?\" {  
  332. ##    send \"yes\r\n\" ;  
  333. ##    expect \"password:\";  
  334. ##    send \"yyhu\r\n\";  
  335. ##    }  
  336. ##  } ; set timeout -1; expect -re \"100%\";"  
  337. ##^^####sleep 5; expect -re \"password\"; send \"yyhu\r\n\";  
  338.   
  339.   
  340. # glance add name="Ubuntu12.04-amd64" is_public=true container_format=ovf disk_format=qcow2 < precise-server-cloudimg-amd64-disk1.img  
  341. ## 这里还有一种方法上传,如果你没用环境变量。  
  342. ## 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  
  343. ## 上传完镜像后。在运行  
  344. ## glance index  
  345.   
  346.   
  347. ## 五:安装配置nova  
  348. ## 1:安装nova相关组件  
  349. 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  
  350. ## 2:配置 /etc/nova/nova.conf  
  351. ## 如果你是在虚拟机里测试Openstack。你需要把默认的虚拟化引擎从kvm改成qemu。  
  352. cat <<NOVAconf > /etc/nova/nova.conf  
  353. --dhcpbridge_flagfile=/etc/nova/nova.conf  
  354. --dhcpbridge=/usr/bin/nova-dhcpbridge  
  355. --logdir=/var/log/nova  
  356. --state_path=/var/lib/nova  
  357. --lock_path=/var/lock/nova  
  358. --allow_admin_api=true  
  359. --use_deprecated_auth=false  
  360. --auth_strategy=keystone  
  361. --scheduler_driver=nova.scheduler.simple.SimpleScheduler  
  362. --s3_host=192.168.139.50  
  363. --ec2_host=192.168.139.50  
  364. --rabbit_host=192.168.139.50  
  365. --cc_host=192.168.139.50  
  366. --nova_url=http://192.168.139.50:8774/v1.1/  
  367. --routing_source_ip=192.168.139.50  
  368. --glance_api_servers=192.168.139.50:9292  
  369. --image_service=nova.image.glance.GlanceImageService  
  370. --iscsi_ip_prefix=10.0.0  
  371. --sql_connection=mysql://novadbadmin:cloud1234@192.168.139.50/nova  
  372. --ec2_url=http://192.168.139.50:8773/services/Cloud  
  373. --keystone_ec2_url=http://192.168.139.50:5000/v2.0/ec2tokens  
  374. --api_paste_config=/etc/nova/api-paste.ini  
  375. --libvirt_type=kvm  
  376. --libvirt_use_virtio_for_bridges=true  
  377. --start_guests_on_host_boot=true  
  378. --resume_guests_state_on_host_boot=true  
  379.    
  380. #novnc  
  381. --novnc_enabled=true  
  382. --novncproxy_base_url= http://192.168.139.50:6080/vnc_auto.html  
  383. --vncserver_proxyclient_address=127.0.0.1  
  384. --vncserver_listen=127.0.0.1  
  385.   
  386. # network specific settings  
  387. --network_manager=nova.network.manager.FlatDHCPManager  
  388. --public_interface=eth0  
  389. --flat_interface=eth1  
  390. --flat_network_bridge=br100  
  391. --fixed_range=10.0.0.1/27  
  392. --floating_range=192.168.139.225/27   
  393. --network_size=32  
  394. --flat_network_dhcp_start=10.0.0.40  
  395. --flat_injected=False  
  396. --force_dhcp_release  
  397. --iscsi_helper=tgtadm  
  398. --connection_type=libvirt  
  399. --root_helper=sudo nova-rootwrap  
  400. #--verbose  
  401. --verbose=False  
  402. NOVAconf  
  403. ## if ! kvm-ok 1>/dev/null 2>&1; then  
  404. ##      sed -i -e "s/kvm/qemu/" /etc/nova/nova-compute.conf  
  405. ## fi  
  406.   
  407. sed -i -e "s/novadbadmin/$NOVA_DB_USERNAME/g;s/cloud1234/$NOVA_DB_PASSWD/g" /etc/nova/nova.conf  
  408. sed -i -e "s/192.168.139.50/$OUT_IP/g;s/192.168.139.225/$FLOAT_IP/g;" /etc/nova/nova.conf  
  409. 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  
  410. ## kvm or qemu?  
  411. sed -i -e "s/kvm/$VIRT_TYPE/g" /etc/nova/nova.conf  
  412. sed -i -e "s/kvm/$VIRT_TYPE/g" /etc/nova/nova-compute.conf  
  413.   
  414. ## 3:配置/etc/nova/api-paste.ini  
  415. sed -i -e "  
  416.        s/%SERVICE_TENANT_NAME%/admin/g;  
  417.        s/%SERVICE_USER%/admin/g;  
  418.        s/%SERVICE_PASSWORD%/$ADMIN_TOKEN/g;  
  419.     " /etc/nova/api-paste.ini  
  420. # 4:停止和重启nova相关服务  
  421. 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  
  422.   
  423.   
  424. ## 六:安装和配置Dashbaord  
  425. ## 1:安装dashbaord  
  426. apt-get install -y libapache2-mod-wsgi openstack-dashboard  
  427. /etc/init.d/apache2 restart  
  428.   
  429. ## 这个时候,你就可以登录dashboard  
  430. ## http://192.168.139.50  
  431. ## user:admin  
  432. ## pass:ADMIN  
  433. ## 之后通过前端web管理  
  434.   
  435.   
  436. ## 七:创建第一个VM,可以通过上面安装的web管理系统创建。  
  437.   
  438. # 0:同步数据库  
  439. ## 以前我运行同步数据库,如果正确, 当nova.conf  
  440. ## --verbose=False  
  441. ## 是没有任何的输出,否则有一堆是输出。  
  442. nova-manage db sync  
  443.   
  444. # 创建网络  
  445. nova-manage network create private --fixed_range_v4=10.0.0.1/27 --num_networks=1 --bridge=br100 --bridge_interface=eth1 --network_size=32  
  446.   
  447. ## 设定floating IP  
  448. nova-manage floating create --ip_range=192.168.139.225/27  
  449.   
  450. ## 设置权限  
  451. chown -R nova:nova /etc/nova  
  452. ## 再重启相关服务  
  453. 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  
  454. sleep 10  
  455.    
  456. ## 1:检查nova服务  
  457. ## 一路回车,就可以了。通过expect可以不用输入。  
  458. if [ ! -e ~/.ssh/id_rsa ]; then  
  459. 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;"  
  460. fi  
  461. ## 2:上传密钥到数据库  
  462. nova keypair-add --pub_key ~/.ssh/id_rsa.pub key1  
  463. ## nova keypair-list  
  464.   
  465. ## 打开防火墙  
  466. nova secgroup-add-rule default tcp 1 65535 0.0.0.0/0  
  467. nova secgroup-add-rule default udp 1 65535 0.0.0.0/0  
  468. nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0  
  469.   
  470. ## 4:开始创建虚拟机  
  471. ## nova image-list  
  472. ## nova flavor-list  
  473. ## 创建虚拟机  
  474. # nova-manage flavor create --name=m1.minitest --memory=384 --cpu=1 --root_gb=1 --flavor=6 --ephemeral_gb=1  
  475. glance add name="Ubuntu12.04-amd64" is_public=true container_format=ovf disk_format=qcow2 < precise-server-cloudimg-amd64-disk1.img  
  476. nova boot --flavor 1 --image "Ubuntu12.04-amd64" --key_name key1 cloud01  
  477. # nova show cloud01  
  478. # nova console-log cloud01  
  479.   
  480. ##关联vm  
  481. sleep 10  
  482. ## nova floating-ip-create  
  483. ## nova add-floating-ip cloud01 192.168.139.226  
  484. nova show cloud01  
  485. nova add-floating-ip cloud01 `nova floating-ip-create | awk 'FNR==4{print $2}'`  
  486. nova list  
  487. nova show cloud01  
  488. # ssh instance  
  489. # ssh-keygen -f "/home/cloud/.ssh/known_hosts" -R 10.0.0.2  
  490. # ssh -i ~/.ssh/id_rsa ubuntu@10.0.0.2  
  491.   
  492. ## 八、完成安装部署  
  493. cat <<EOF >&1  
  494.  1. login the dashboard  
  495.    http://192.168.139.50  
  496.    user:admin  
  497.    pass:ADMIN or $ADMIN_TOKEN  
  498.  2. login a instance("cloud01")  
  499.    ssh -i ~/.ssh/id_rsa ubuntu@10.0.0.2  
  500.  3. view & manage  
  501.    nova list  
  502.    nova show cloud01  
  503.    ...  
  504.  4. enjoy yourself! (Contact Hily.Hoo@gmail.com)  
  505. EOF  

附录2:安装后web登录(dashboard)截图


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

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

Installing OpenStack Essex (2012.1) on Ubuntu 12.04 ("Precise Pangolin")(原文) 

http://www./resources/docs/installing-openstack-essex-20121-ubuntu-1204-precise-pangolin

“OpenStack Documentation”team(文档、bug报告) https:///~openstack-doc

Quora上关于openstack的话题 http://www./OpenStack
stackoverflow上关于openstack资源的讨论 http:///questions/5882333/good-tutorials-and-resources-for-openstack

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多