openstack是什么,能做什么,我就不说了,他的优势和伟大,可以想想AWS的云服务平台。学习和研究openstack(IaaS),个人的习惯是有一个可以操作的平台,然后结合代码看看详细逻辑,这个过程,最好的选择就是devstack了,一个单机安装openstack的最佳选择,简化了我们的入门难度。

第一步,下载源码(注意版本不要忘记了哦,否则下载的可能就是master分支的东西了,这个可能会遇到奇奇怪怪的问题的,我自然遇到过,因为这个不是stable的,就不说了。。。):

 git clone https://git.openstack.org/openstack-dev/devstack -b stable/liberty

然后将devstack/samples下面的local.conf拷贝到devstack目录下,修改一下里面的内容,根据自己的需要吧,初次安装,还是简单点,默认应该也行。或者直接在devstack目录下新建一个localrc的文件。 我修改的local.conf主要内容如下:

 # Misc
ADMIN_PASSWORD=shihuc
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
SERVICE_TOKEN=$ADMIN_PASSWORD # Target Path
DEST=/opt/stack # Enable Logging
LOGFILE=$DEST/logs/stack.sh.log
VERBOSE=True
LOG_COLOR=True
SCREEN_LOGDIR=$DEST/logs KEYSTONE_TOKEN_FORMAT=UUID # Nova
enable_service n-novnc n-cauth # Neutron
disable_service n-net
ENABLED_SERVICES+=,q-svc,q-agt,q-dhcp,q-l3,q-meta,neutron
ENABLED_SERVICES+=,q-lbaas,q-vpn,q-fwaas # Swift
#enable_service s-proxy s-object s-container s-accounts
#SWIFT_HASH=66a3d6b56c1f479c8b4e70ab5c2000f5 # Cinder
VOLUME_GROUP="cinder-volumes"
ENABLED_SERVICES+=,cinder,c-api,c-vol,c-sch,c-bak # Ceilometer
#enable_service ceilometer-acompute ceilometer-acentral ceilometer-anotification ceilometer-collector ceilometer-api
#enable_service ceilometer-alarm-notifier ceilometer-alarm-evaluator # Heat
enable_service heat h-api h-api-cfn h-api-cw h-eng
enable_service tempest # Trove
enable_service trove tr-api tr-tmgr tr-cond # Sahara
enable_service sahara HOST_IP=10.121.2.117
FIXED_RANGE=10.121.2.0/
NETWORK_GATEWAY=10.121.2.1
#FLOATING_RANGE=10.0.0.0/
#PUBLIC_NETWORK_GATEWAY=10.0.0.2
#Q_FLOATING_ALLOCATION_POOL=start=10.0.0.100,end=10.0.0.150

liberty版本的devstack安装需求是Centos要求版本要至少是7,我这里安装用的是7.2,由于自己工作用的Linux OS是centos6.4,我尝试将devstack的local.conf里面添加FORCE=True,最终安装还是不成功,第一个错误如下:

 [root@CloudGame tools]# ./create-stack-user.sh
/mnt/workwps/OpenCloud/devstack/functions-common: line : conditional binary operator expected

这个问题,非常诡异,应该是shell版本的问题吧,上面的错误所在的源代码如下:

       $xtrace
} function isset {
[[ -v "$1" ]]
} # Control Functions
# =================

起初,我依据函数名isset猜测这个函数是判断参数是否赋值了,所以我将其改为下面:

 function isset {
#[[ -v "$1" ]]
[[ ! -z "$1" ]]
}

这个问题是解决了,可以往下面继续执行,但是后面有遇到了其他的问题,pip安装的问题,我本地安装的pip是1.5.5的老版本,可以看下面的错误日志,算是比较容易解决的问题:

 -- ::27.802 | + sudo -H -E python /mnt/workwps/OpenCloud/devstack/files/get-pip.py
-- ::28.959 | /usr/local/lib/python2./site-packages/distribute-0.6.-py2..egg/setuptools/command/install_scripts.py:: UserWarning: Module pip was already imported from /tmp/tmpIgbaRF/pip.zip/pip/__init__.py, but /usr/local/lib/python2./site-packages/pip-1.5.-py2..egg is being added to sys.path
-- ::28.959 | from pkg_resources import Distribution, PathMetadata, ensure_directory
-- ::29.449 | Collecting pip
-- ::29.523 | Using cached pip-7.1.-py2.py3-none-any.whl
-- ::29.578 | Installing collected packages: pip
-- ::29.578 | Found existing installation: pip 1.5.
-- ::29.579 | Uninstalling pip-1.5.:
-- ::29.584 | Successfully uninstalled pip-1.5.
-- ::30.250 | Successfully installed pip-7.1.
-- ::30.668 | + [[ -n '' ]]
-- ::30.668 | + pip_install -U setuptools
-- ::30.877 | + sudo -H http_proxy= https_proxy= no_proxy= PIP_FIND_LINKS= /usr/bin/pip install -c /opt/stack/requirements/upper-constraints.txt --upgrade -U setuptools
-- ::30.917 | Traceback (most recent call last):
-- ::30.917 | File "/usr/bin/pip", line , in <module>
-- ::30.917 | from pkg_resources import load_entry_point
-- ::30.917 | File "/usr/local/lib/python2.7/site-packages/distribute-0.6.27-py2.7.egg/pkg_resources.py", line , in <module>
-- ::30.917 | working_set.require(__requires__)
-- ::30.917 | File "/usr/local/lib/python2.7/site-packages/distribute-0.6.27-py2.7.egg/pkg_resources.py", line , in require
-- ::30.917 | needed = self.resolve(parse_requirements(requirements))
-- ::30.917 | File "/usr/local/lib/python2.7/site-packages/distribute-0.6.27-py2.7.egg/pkg_resources.py", line , in resolve
-- ::30.917 | raise DistributionNotFound(req)
-- ::30.918 | pkg_resources.DistributionNotFound: pip==1.5.

后来,为了让脚本不去对我的本地的pip版本进行检查,我手动安装了7.1.2的版本:

 [root@CloudGame devstack]# easy_install-2.7 pip==7.1.
Searching for pip==7.1.
Reading http://pypi.python.org/simple/pip/
Best match: pip 7.1.
Downloading https://pypi.python.org/packages/source/p/pip/pip-7.1.2.tar.gz#md5=3823d2343d9f3aaab21cf9c917710196
Processing pip-7.1..tar.gz
Writing /tmp/easy_install-_3i7r6/pip-7.1./setup.cfg
Running pip-7.1./setup.py -q bdist_egg --dist-dir /tmp/easy_install-_3i7r6/pip-7.1./egg-dist-tmp-a6bKaB
warning: no previously-included files found matching '.coveragerc'
warning: no previously-included files found matching '.mailmap'
warning: no previously-included files found matching '.travis.yml'
warning: no previously-included files found matching 'pip/_vendor/Makefile'
warning: no previously-included files found matching 'tox.ini'
warning: no previously-included files found matching 'dev-requirements.txt'
no previously-included directories found matching '.travis'
no previously-included directories found matching 'docs/_build'
no previously-included directories found matching 'contrib'
no previously-included directories found matching 'tasks'
no previously-included directories found matching 'tests'
Removing pip 1.5. from easy-install.pth file
Adding pip 7.1. to easy-install.pth file
Installing pip script to /usr/local/bin
Installing pip2. script to /usr/local/bin
Installing pip2 script to /usr/local/bin Installed /usr/local/lib/python2./site-packages/pip-7.1.-py2..egg
Processing dependencies for pip==7.1.
Finished processing dependencies for pip==7.1.

注意咯,这个安装的路径是在/usr/local/bin下面,而stack.sh脚本中显示的是在/usr/bin下面哟,这个也简单,创建一个软链接就可以了:

[root@CloudGame bin]# ln -s /usr/local/bin/pip pip

接下来,继续在本地的非官方建议的版本上(人家说了,centos要求7以上)折腾,发现还有问题,首先是yum_install epel-release这个操作总失败,其次还有df: `/root/.gvfs': Permission denied,算了,不折腾了,也许这个就是一个走不下去的死路。

最后,我选择了在AWS上创建一个VM,选择了一个platform是CentOS7.2的PV AMI创建了一个机器。2个cpu,8G RAM,估计是没有什么问题的,就一个devstack的安装过程而已!的确,在这个上面确实比较顺利。VM建好后,SSH登录上去,我是在/opt下面进行的所有的操作。下面简单列一下正常的顺序(注意,保证本地git能用):

Step 1:

 git clone https://git.openstack.org/openstack-dev/devstack -b stable/liberty

Step 2:

如前面所述的local.conf进行配置local.conf。

Step 3:

devstack运行在非root用户下,下面进行创建和配置stack用户,并且修改属组:

 [root@ip---- tools]# ./create-stack-user.sh
Creating a group called stack
Creating a user called stack
Giving stack user passwordless sudo privileges ----------------------------------------------------------------------
[root@ip---- devstack]# chown -R stack:stack /opt/devstack/ ----------------------------------------------------------------------
10 [root@ip-10-121-5-244 devstack]# su stack

Step 4:

下面开始执行安装过程的脚本:

 [root@ip---- devstack]# ./stack.sh 

这个过程会花一段时间哟,耐心等等吧。最终执行完毕后,你会看到下面的congratulation的信息:

 This is your host IP address: 10.121.5.244
This is your host IPv6 address: ::
Horizon is now available at http://10.121.5.244/dashboard
Keystone is serving at http://10.121.5.244:5000/
The default users are: admin and demo
The password: shihuc

其实,这个过程中的日志信息很有价值,但是不知如何上传日志,就算了。自己安装应该也可以看到自己的日志,个人觉得比较有信息含量。

最后,打开上面恭喜信息中的dashboard,看看是什么模样呗。这里,主要截取的是有点内容的图,多数的页面都是空的,因为是新启动的devstack。

这个是登录的界面,可以用demo或者admin用户登录,密码是自己配置的密码哟,就在local.conf里面。

这个是登录后的第一个页面,是个资源的统计信息展示页面。

这个是默认的镜像文件列表,可以用来创建instance的哟。

访问与安全信息页面。

这个是能够创建的instance的类型列表,以及对应的资源分配信息。是不是和AWS的EC2的类型有些不同???没关系的,不同的产品嘛!

元数据定义列表,可以作为参考。了解openstack的内部定义。

这个是用户列表。

最后展示一下,创建实例的图片,有个感性的认识吧:

说明下,我这里没有创建instance,只是看看这个创建实例的配置页面是什么样子,对比与AWS EC2的配置页面,还是有很大的不同哟。。。

好了,奠基篇到此为止。

openstack奠基篇:devstack (liberty)于centos 7安装的更多相关文章

  1. Ubuntu16手动安装OpenStack——glance篇--转

    全文转自https://www.voidking.com/dev-ubuntu16-manual-openstack-glance/ 目标 紧接着<Ubuntu16手动安装OpenStack—— ...

  2. 在CentOS下安装配置MySQL(转)

    今天刚把项目做完,需要马上部署到新到的测试服务器上,于是乎,要在服务器上安装环境,由于好久在linux上部署了,手有些生,比较费劲装完,现在把重要步骤贴出,供自己以后参照.1.首先要看看有没有已经安装 ...

  3. openstack外篇之认识mysql授权及一些操作

    openstack外篇之认识mysql授权及一些操作  http://www.aboutyun.com/thread-11405-1-1.html

  4. 分布式文件系统 FastDFS 5.0.5 & Linux CentOS 7 安装配置(单点安装)——第一篇

    分布式文件系统 FastDFS 5.0.5 & Linux CentOS 7 安装配置(单点安装)--第一篇 简介 首先简单了解一下基础概念,FastDFS是一个开源的轻量级分布式文件系统,由 ...

  5. Openstack入门篇(十五)之如何创建生产使用的openstack镜像

    在linux-node1节点上: [root@linux-node1 ~]# yum install -y openstack-nova-compute [root@linux-node1 ~]# y ...

  6. Setting up multi nodes live migration in Openstack Juno with devstack

    Setting up multi nodes live migration in Openstack Juno with devstack Summary Live migration overvie ...

  7. mysql 开发进阶篇系列 28 数据库二进制包安装(centos系统准备)

    1. centos 7安装工作 对于mysql二进制安装,我这里在使用一台新的centos系统.准备好VMware,Xftp-6.0, Xshell-6.0.在VMware中网络使用桥接模式,分配20 ...

  8. Linux从入门到放弃、零基础入门Linux(第二篇):在虚拟机vmware中安装linux(一)超详细手把手教你安装centos分步图解

    一.Vmware vmware介绍:VMware,Inc. (Virtual Machine ware)是一个“虚拟PC”软件公司,提供服务器.桌面虚拟化的解决方案.其虚拟化平台的产品包括播放器:它能 ...

  9. [第三篇]——CentOS Docker 安装之Spring Cloud直播商城 b2b2c电子商务技术总结

    CentOS Docker 安装 Docker 支持以下的 64 位 CentOS 版本: CentOS 7 CentOS 8 更高版本... 使用官方安装脚本自动安装 安装命令如下: curl -f ...

随机推荐

  1. nginx+lua项目学习

    1.启动nginx命令 /usr/local/ngx_openresty/nginx/sbin/nginx -p /usr/local/ngx_openresty/nginx/ -c /usr/loc ...

  2. node实现http上传文件进度条 -我们到底能走多远系列(37)

    我们到底能走多远系列(37) 扯淡: 又到了一年一度的跳槽季,相信你一定准备好了,每每跳槽,总有好多的路让你选,我们的未来也正是这一个个选择机会组合起来的结果,所以尽可能的找出自己想要的是什么再做决定 ...

  3. Codeforces Round #301 (Div. 2) B. School Marks

    其实是很水的一道bfs题,昨晚比赛的时候没看清题意,漏了一个条件. #include<cstdio> #include<cstring> #include<iostrea ...

  4. Windows与Linux的双系统的安装顺序及Linux的补救办法

    如果安装多重引导,最好先安装Windows再安装Linux系统,因为: Linux在安装的时候,你可以选择将引导加载程序安装在MBR或个别分区的启动扇区,而且Linux的loader可以手动设置菜单( ...

  5. 解决LinearLayout中控件不能居右对齐

    转载自:http://lgb168.blog.163.com/blog/static/49674438201172492935235/ 2011-08-24 21:35:25|  分类: Androi ...

  6. Ansible安装配置及使用

    一.Ansible特点 1.不需要安装客户端,通过sshd通信 2.基于模块工作,模块可以由任何序言开发 3.不仅支持命令行使用模块,也支持编写yaml格式的playbook 4.支持sudo 5.有 ...

  7. 【BZOJ1010】【HNOI2008】玩具装箱

    继续看黄学长代码 原题: P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为1.. ...

  8. Java——正则表达式(字符串操作)

     public class Test1 { /* * 正则表达式:对字符串的常见操作: * 1.匹配: *  其实是用的就是string类中的matches(匹配)方法. * 2.切割 *  其实 ...

  9. (转)A Beginner's Guide To Understanding Convolutional Neural Networks Part 2

    Adit Deshpande CS Undergrad at UCLA ('19) Blog About A Beginner's Guide To Understanding Convolution ...

  10. 端口映射工具--socat

    需求 有些服务器没有公网IP, 在有公网IP的服务器上把端口映射出去. 这样的需求有很多实现, 我比较钟爱socat, 简单就是美. 示例脚本新建一个文件叫intershow.sh /usr/loca ...