openstack奠基篇:devstack (liberty)于centos 7安装
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安装的更多相关文章
- Ubuntu16手动安装OpenStack——glance篇--转
全文转自https://www.voidking.com/dev-ubuntu16-manual-openstack-glance/ 目标 紧接着<Ubuntu16手动安装OpenStack—— ...
- 在CentOS下安装配置MySQL(转)
今天刚把项目做完,需要马上部署到新到的测试服务器上,于是乎,要在服务器上安装环境,由于好久在linux上部署了,手有些生,比较费劲装完,现在把重要步骤贴出,供自己以后参照.1.首先要看看有没有已经安装 ...
- openstack外篇之认识mysql授权及一些操作
openstack外篇之认识mysql授权及一些操作 http://www.aboutyun.com/thread-11405-1-1.html
- 分布式文件系统 FastDFS 5.0.5 & Linux CentOS 7 安装配置(单点安装)——第一篇
分布式文件系统 FastDFS 5.0.5 & Linux CentOS 7 安装配置(单点安装)--第一篇 简介 首先简单了解一下基础概念,FastDFS是一个开源的轻量级分布式文件系统,由 ...
- Openstack入门篇(十五)之如何创建生产使用的openstack镜像
在linux-node1节点上: [root@linux-node1 ~]# yum install -y openstack-nova-compute [root@linux-node1 ~]# y ...
- 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 ...
- mysql 开发进阶篇系列 28 数据库二进制包安装(centos系统准备)
1. centos 7安装工作 对于mysql二进制安装,我这里在使用一台新的centos系统.准备好VMware,Xftp-6.0, Xshell-6.0.在VMware中网络使用桥接模式,分配20 ...
- Linux从入门到放弃、零基础入门Linux(第二篇):在虚拟机vmware中安装linux(一)超详细手把手教你安装centos分步图解
一.Vmware vmware介绍:VMware,Inc. (Virtual Machine ware)是一个“虚拟PC”软件公司,提供服务器.桌面虚拟化的解决方案.其虚拟化平台的产品包括播放器:它能 ...
- [第三篇]——CentOS Docker 安装之Spring Cloud直播商城 b2b2c电子商务技术总结
CentOS Docker 安装 Docker 支持以下的 64 位 CentOS 版本: CentOS 7 CentOS 8 更高版本... 使用官方安装脚本自动安装 安装命令如下: curl -f ...
随机推荐
- 第二个Sprint冲刺第二天
讨论地点:宿舍 讨论成员:邵家文.李新.朱浩龙.陈俊金 任务:解决了第二个Sprint冲刺第一天遇到的错误. 燃尽图: 遇到的问题: 解决之后: 开发感悟:最近一直在写代码,都很少外出活动了,不知不觉 ...
- excel表里的数据导入到数据库里
采用的是jxl,所以需要导jxl-2.4.2.jar的jar包.(前提知道excel表的目录): //用log记录异常信息 private static final Logger log = Logg ...
- EASYRECOVERY_3.3.29包含注册机、都教授数据恢复含注册码
用EASYRECOVERY恢复过U盘,和回收站永久清空的东西.效果很好.但疑惑doc,docx,后者恢复效果特别好 都教授没用过,别人买的,没用,很贵. 每次用,都找不着,还要重新淘宝买.这次分享给大 ...
- Core Java Volume I — 3.10. Arrays
3.10. ArraysAn array is a data structure that stores a collection of values of the same type. You ac ...
- Educational Codeforces Round 15 B
B. Powers of Two time limit per test 3 seconds memory limit per test 256 megabytes input standard in ...
- Spring事务配置的五种方式 -- 越往后需要Spring版本越高
第五种 基本零配置 个人感觉第四种也可以 Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource.TransactionManager和代理机制这三部分,无论哪种配置方式, ...
- 浅谈C中的malloc和free
转自http://bbs.bccn.net/thread-82212-1-1.html非常感谢作者 浅谈C中的malloc和free 在C语言的学习中,对内存管理这部分的知识掌握尤其重要!之前对C中的 ...
- leetcode 100 Same Tree ----- java
Given two binary trees, write a function to check if they are equal or not. Two binary trees are con ...
- 微信JS-SDK应用DEMO
首先需要将以下函数写入TinkPHP的公用function.php文件中以便调用 // 基于ThinkPHP /** * php curl 请求链接 * 当$post_data为空时使用GET方式发送 ...
- Linux嵌入式入门
虚拟机Linux系统网络配置: 1.Vmware网络设置 虚拟机设置->网路适配器->网络连接 桥接模式:能提供独立的IP地址的情况下使用 NAT模式:一台计算机只能使用一个I ...