热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Ubuntu12.04(或11.10)系统中使用OneStack快速安装openstack云

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

收到很多邮件和提问,精力有限没法一一回复,在此致歉。随手把记录的一些问题和解决方法整理了,供大家参考。
详见《OpenStack安装部署管理中常见问题解决方法(OpenStack-Lite-FAQ)》。
2012.07.09更新:

很多人来信问我单网卡怎么设置,以及其它网络问题,我后面写了一篇介绍OpenStack网络的,详见《OpenStack云平台的网络模式及其工作机制》。
2012.07.02更新:
1、受邀在vpsee上对这个项目进行了较为详细的介绍(OneStack:Ubuntu 12.04 上一键自动部署 OpenStack),对于项目来源、相关考虑、项目结构、具体安装步骤(参数设置和前期工作)和预期等做了说明,可以参考。
2、希望增加高可用性的云计算部署,构建OpenStack的高可用性(HA,High Availability) 对高可用性进行了初步介绍,欢迎提出意见和建议。

一、项目(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)描述:
一键完整部署OpenStack,可以自定义配置、方便地扩展功能组件,无交互地自动部署;
安装过程不需要等待配置:
功能齐全,附带了卸载、重置、添加计算节点等工具
可以卸载主要的opentack组件,包括nova、glance、keystone等;
可以重置数据库和配置,重新安装openstack组件;
可以根据需要自行更改脚本,方便部署自己的云计算平台。
经过多次测试,完整在VMware虚拟机上部署OpenStack
      测试环境:VMware ESXi 5.0虚拟Dell R210服务器,其中一个虚拟机上部署Opentack,启动多个实例,正常运行;远程访问和web管理正常;重启、重置、重新安装都正常。
      系统要求:双网卡,64位机器,支持VT技术
脚本运行过程会做如下工作:
配置网络相关;
安装和配置数据库;
安装和部署身份管理组件keystone;
安装和部署镜像管理组件glance;
安装和部署控制与计算组件nova;
安装和部署web管理组件dashboard;
上传和添加ubuntu12.04镜像;
设置项目安全规则和密钥;
启动实例,并正常运行。
欢迎反馈,谢谢.
本人尽力做到不出差错,但是限于学识和眼界,难免有考虑不周、冗余、没有最优化或者表达不好之处;
希望大家有任何意见建议随时联系我。

附录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 < mysql-server-5.1 mysql-server/root_password password $MYSQL_PASSWD
mysql-server-5.1 mysql-server/root_password_again password $MYSQL_PASSWD
mysql-server-5.1 mysql-server/start_on_boot boolean true
MYSQL_PRESEED
apt-get install --no-install-recommends -y mysql-server python-mysqldb
## chkconfig mysql on
## 让mysql支持外部访问
sed -i '/^bind-address/s/127.0.0.1/0.0.0.0/g' /etc/mysql/my.cnf
service mysql restart
if [ ! -s /etc/apache2/httpd.conf ]; then
        echo "ServerName localhost" >> /etc/apache2/httpd.conf
        /etc/init.d/apache2 restart
fi
## 2:安装phpmyadmin (可选)
cat < phpmyadmin phpmyadmin/reconfigure-webserver  text     apache2
phpmyadmin phpmyadmin/dbconfig-install       boolean  true
phpmyadmin phpmyadmin/app-password-confirm   password $MYSQL_PASSWD
phpmyadmin phpmyadmin/mysql/admin-pass       password $MYSQL_PASSWD
phpmyadmin phpmyadmin/password-confirm       password $MYSQL_PASSWD
phpmyadmin phpmyadmin/setup-password         password $MYSQL_PASSWD
phpmyadmin phpmyadmin/mysql/app-pass         password $MYSQL_PASSWD
PHPmyadmin
apt-get --no-install-recommends -yq install phpmyadmin
## 3:创建数据库
## nova数据库,   管理员:novadbadmin,密码是:cloud1234
## glance数据库,管理员:glancedbadmin,密码是:cloud1234
## 如果你修改密码,后面很多配置都需要相应更改。
##   mysql -uroot -p
##   CREATE DATABASE nova;
##   GRANT ALL PRIVILEGES ON nova.* TO 'novadbadmin'@'%' IDENTIFIED BY 'cloud1234';
##   CREATE DATABASE glance;
##   GRANT ALL PRIVILEGES ON glance.* TO 'glancedbadmin'@'%' IDENTIFIED BY 'cloud1234';
##   quit
mysql -uroot -p$MYSQL_PASSWD -e "DROP DATABASE IF EXISTS nova;"
mysql -uroot -p$MYSQL_PASSWD -e "CREATE DATABASE nova;"
mysql -uroot -p$MYSQL_PASSWD -e "GRANT ALL ON nova.* TO '$NOVA_DB_USERNAME'@'%' IDENTIFIED BY '$NOVA_DB_PASSWD';"
mysql -uroot -p$MYSQL_PASSWD -e "DROP DATABASE IF EXISTS glance;"
mysql -uroot -p$MYSQL_PASSWD -e "CREATE DATABASE glance;"
mysql -uroot -p$MYSQL_PASSWD -e "GRANT ALL ON glance.* TO '$GLANCE_DB_USERNAME'@'%' IDENTIFIED BY '$GLANCE_DB_PASSWD';"
if [ -e /var/lib/keystone/keystone.db ]; then
rm -rf /var/lib/keystone/keystone.db
fi
## 三:安装和配置keystone
## Openstack的各个组件,keystone是最难配置。搞定keystone,后面应该就没啥麻烦。
## 1:安装keystone
apt-get install -y keystone python-keystone python-keystoneclient
## 2:配置keystone
## 如果更改token,需要修改 /etc/keystone/keystone.conf 两个地方
##    默认定义的token就是ADMIN,web登录admin就是这个密码
##    [DEFAULT]
##    bind_host = 0.0.0.0
##    public_port = 5000
##    admin_port = 35357
##    admin_token = ADMIN
##    另外一个地方是
##    [catalog]
##    #driver = keystone.catalog.backends.sql.Catalog
##    driver = keystone.catalog.backends.templated.TemplatedCatalog
##    template_file = /etc/keystone/default_catalog.templates
##
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
sed -i -e "s/ADMIN/$ADMIN_TOKEN/g" /etc/keystone/keystone.conf
service keystone restart
## 3: 导入数据
## 这个比较有技术含量。通过修改devstack的keystone_data.sh 脚本。实现导入数据。如果你上面的设置都和我一样,那么其实直接运行这个脚本就可以。
## wget http://www.hastexo.com/system/files/user/4/keystone_data.sh_.txt -O keystone_data.sh
wget http://onestack.googlecode.com/files/gen_keystone_data.sh -O gen_keystone_data.sh
chmod +x gen_keystone_data.sh
## 运行脚本, 如果你修改的默认的用户名和密码,你需要修改脚本。修改两个地方
## 第一个是登录dashboard的admin的密码
## 第二个就是keystone的token
## #ADMIN_PASSWORD=${ADMIN_PASSWORD:-hastexo}
## ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin}
## SERVICE_PASSWORD=${SERVICE_PASSWORD:-$ADMIN_PASSWORD}
## #export SERVICE_TOKEN="hastexo"
## export SERVICE_TOKEN="Centrin"
## export SERVICE_ENDPOINT="http://localhost:35357/v2.0"
## SERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service}
sed -i -e "s/hastexo/$ADMIN_TOKEN/g" gen_keystone_data.sh
./gen_keystone_data.sh
##  顺利运行,会什么都没有输出
##  #echo $?
##  下面会输出0 ,表示正常。你就别再运行脚本
##  keystone --tenant=admin --username=admin --password=hastexo  --auth_url=http://127.0.0.1:5000/v2.0 user-list
##  看到这些,就说明keystone安装正常。
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)截图


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

推荐阅读
  • 深入探讨配置文件的管理与优化
    尽管配置文件的重要性不言而喻,但其管理和安全性问题却常被忽视。本文将详细讨论配置文件的不同管理策略及其优缺点。 ... [详细]
  • 本文基于https://major.io/2014/05/13/coreos-vs-project-atomic-a-review/的内容,对CoreOS和Atomic两个操作系统进行了详细的对比,涵盖部署、管理和安全性等多个方面。 ... [详细]
  • 本文详细介绍如何在Android模拟器上安装TaintDroid的过程,包括解决源代码链接失效及服务器文件变动等问题,旨在帮助后续用户避免不必要的麻烦。 ... [详细]
  • 本文是网络安全自学系列的一部分,旨在分享网络安全工具的使用技巧和实际操作案例。继之前讨论了XSS跨站脚本攻击的各个方面后,本文将重点介绍Powershell的基础知识及其在网络安全领域的应用。 ... [详细]
  • Git SSH配置及远程仓库操作指南
    本文介绍了如何配置Git环境,包括设置用户信息、生成和添加SSH密钥,并详细说明了如何通过SSH连接到远程仓库进行版本控制操作。 ... [详细]
  • 本文详细介绍了C++标准模板库(STL)中各容器的功能特性,并深入探讨了不同容器操作函数的异常安全性。 ... [详细]
  • 本文详细探讨了当前主流的两种系统架构——C/S(客户端/服务器)与B/S(浏览器/服务器)架构的特点、优缺点及未来的发展趋势。 ... [详细]
  • chrome安装reactdevtools开发工具
    我开始安装react-devtools的时候百度了一波,都是写的不清不楚,官网又都是英文的也不是完全理解,经过一番折腾出来以后,写个文档记录一下,也可避免新手首次安装走弯路我安装react-devtools的前提是本地安装了git以及node我相信准备学react的同学,应该都有了解使用1.首先打开官网:https:github.comfacebook ... [详细]
  • 本文详细探讨了 Java 中 Daemon 线程的特点及其应用场景,并深入分析了 Random 类的源代码,帮助开发者更好地理解和使用这些核心组件。 ... [详细]
  • 每位开发者都应该拥有一个展示自我技能与分享知识的空间——个人技术博客。本文将指导你如何使用静态网站生成器Hexo结合GitHub Pages搭建这样一个平台。 ... [详细]
  • APP数据包捕获挑战
    本文探讨了在使用Burp Suite捕获移动应用数据包时遇到的两大难题,尤其是SSL Pinning安全机制的影响,并提供了一种解决方案。 ... [详细]
  • 使用Docker部署Gitea自托管Git服务
    Gitea是由Gogs社区分叉而来的开源自托管Git服务,旨在提供一个更加灵活和易于维护的解决方案。本文将详细介绍如何利用Docker容器技术快速部署Gitea。 ... [详细]
  • 本文深入探讨了SSH隧道技术,详细介绍了如何利用SSH协议构建安全的通信通道,实现跨网络的数据传输。通过实例分析,分别阐述了动态SSH隧道、本地SSH隧道和远程SSH隧道的配置方法及应用场景。 ... [详细]
  • 本文详细探讨了在Python开发中遇到的ImportError: 无法找到名为Crypto.Cipher的模块的问题,并提供了多种解决方案,包括环境配置、库安装和代码调整等方法。 ... [详细]
  • 解决MySQL Administrator 登录失败问题
    本文提供了解决在使用MySQL Administrator时遇到的登录错误的方法,包括启动变量和服务部分禁用的问题。同时,文章还介绍了通过安全配置模式来解决问题的具体步骤。 ... [详细]
author-avatar
手机用户2502873943
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有