源码安装openstack
A. 云平台openstack中,cloudinit装配,使用怎么解决
云平台openstack中,cloudinit安装、使用
cloudinit是专为云环境中虚拟机的初始化而开发的工具,它从各种数据源读取相关数据并据此对虚拟机进行配置。常见的数据源包括:云平台的metadata服务、ConfigDrive等,常见的配置包括:设定虚拟机的hostname、hosts文件、设定用户名密码、更新apt -get的本地缓存、调整文件系统的大小(注意不是调整分区的大小)等。
本文在openstack下进行测试。
(1)安装
centos 6.4和ubuntu server 12.04的官方源中已经包含cloudinit,直接采用yum 或者 apt -get安装即可
源码地址:https://launchpad.net/cloud-init
(2)配置
配置文件/etc/cloud/cloud.cfg
user: root
disable_root: 0
manage_etc_hosts: True
preserve_hostname: False
cloud_init_moles:
- bootcmd
- resizefs
- set_hostname
- update_hostname
- update_etc_hosts
- ca-certs
- rsyslog
- ssh
cloud_config_moles:
- mounts
- ssh-import-id
- locale
- set-passwords
- grub-dpkg
- landscape
- timezone
- puppet
- chef
- salt-minion
- mcollective
- disable-ec2-metadata
- runcmd
- byobu
cloud_final_moles:
- rightscale_userdata
- scripts-per-once
- scripts-per-boot
- scripts-per-instance
- scripts-user
- keys-to-console
- phone-home
- final-message
配置文件大致分为两部分,开头的变量/参数定义部分、后边要运行的模块列表(包括三大类cloud_init_moles、cloud_config_moles、cloud_final_moles)。
各模块在运行时,会根据之前定义的变量/参数的值,配置虚拟机的状态。
这里举一个简单的例子,update_etc_hosts模块(源文件:/usr/lib/python2.7/dist-packages/cloudinit/CloudConfig/cc_update_etc_hosts.py)
顾名思义,该模块用来设置主机的hosts文件,其中就用到了hostname、fqdn、manage_etc_hosts等变量的值。模块首先尝试从cloudinit的配置文件中读取这些变量的值,如果没有定义,则尝试从其他的数据源中获取变量的值,例如对于openstac来讲,可以从metadata service(http://169.254.169.254/latest/meta-data/hostname)获取虚拟机的主机名。
(3)运行流程
cloudinit会在虚拟机启动的过程中分四个阶段运行,按照时间顺序分为:cloud-init-local, cloud-init, cloud-config, cloud-final,例如对于centos:
cloud-init-local阶段主要是运行本地的一些初始化脚本(缓存下来的脚本??)
cloud-init阶段执行配置文件中名为cloud_init_moles下的所有模块,如果模块列表为空,则什么都不运行。其他两个阶段类似,就不介绍了。
分阶段执行的必要性在于,有些模块的执行对系统当前的状态会有要求(比如网络ready、文件系统挂载over),因此cloudinit抽象出了四个阶段,编写自己的初始化模块时可以根据情况归入不同的阶段。
另外,模块有多种运行模式,包括per-once、per-instance、per-always,对于模式为per-once的模块,一旦运行完毕会在一个名为sem的目录中创建一个信号文件,从而防止模块的在下次启动时重复运行。
B. 怎么在OpenStack源码社区贡献代码
1、签署ICLA
注意一定要把信息填全,特别是settings/contact里下面那几个,如果之前没有在OpenStack Foundation注册,会提示注册。如果是代表公司,邮箱最好是公司(huawei)邮箱。
2、上传自己的SSH Key
用于通过SSH向gerrit push代码,方法参见:
3、配置Git Bash
git config --global user.name "XXX"
git config --global user.email "[email protected]"
注意跟gerrit账户一致。
4、安装git-review
5、修改代码
下载代码
配置工程感知gerrit:
cd nova
git review -s
首先会确保能使用你的ssh key登录gerrit,默认使用当前git环境变量配置的用户,否则,会提示输入gerrit用户名,可以通过这个链接查看gerrit用户名。
成功后,会在nova目录下生成一个.gitreview目录
先确保代码是最新的:
git checkout master
git pull
新建分支,如果是blueprint,分支名是“bp/BP-NAME”,其中的BP-NAME是在launchpad上bp的名称;如果是修复bug,分支明是“bug/BUG-NUMBER”,其中BUG-NUMBER可以在bug页面上找到:
git checkout -b BRANTCH-NAME
6、提交代码
在单独的一行中写summary(小于50个字符),然后第二段进行详细的描述。如果是实现bp或修复bug,需注明:
blueprint BP-NAME
bug BUG-NUMBER
一个示例:
Adds some summary less than 50 characters ...Long multiline description of the change... Implements: blueprint authentication Fixes: bug #123456
修改完代码后,记得跑通UT测试。
然后提交代码,申请review
git commit -a
git review
7、review
提交review之后,可以查看状态和信息,自动跑CI,然后代码检视专家就可以进行代码检视。
如果jenkins报了failure,可以查看日志排错。如果确认不是自己的patch导致,可以在comment里留言“recheck no bug”,重新跑test。
8、修改
如果review过程中,发现代码需要修改,再次提交时直接使用已存在的Change-Id:
git commit -a --amend
git review
C. 源码安装openstack 的glance部分,没有glance命令,怎么安装
我也是看到这部分没有相关命令,我是直接检查yum list是否有glance包,然后yum安装glance一次。命令即可出现,并且后面很多配置文件和自启动文件,包括nova.conf配置文件等等,老男孩都没有放上去。后面,我都是自己手动写入到文本引入进去。还是建议楼主,查看官方手册。
D. ubuntu关机后怎么重启OpenStack服务,使用Devstack部署的
1、安装git:
sudo apt-get install git
这个很简单吧,但就是这个还着实让我费了一番力气。因为我担心ubuntu初始的源不给力,所以刚安装好便换成了国内的源,偏偏这国内的源无法安装git,换了好机会仍然是这样。(网络连接正常,不清楚为什么会这样)只能单独下载包,然后手动安装了,手动安装
其实不难(下载到包,之后执行 dpkg -i <包名>),关键是得找对版本。
2、获取devstack脚本:
git clone https://github.com/openstack-dev/devstack.git
3、执行:
cd devstack && ./stack.sh
脚本执行全程只需要按照提示设置几个密码,其他无需干预。我没有读脚本的源码,但是根据执行过程的输出信息大致总结出了他的执行过程:
(1)下载并安装Openstack运行所需要的系统软件,大概包括一些python的组件、mysql、rabbitmq-server等
(2)下载openstack组件,包括nova 、keystone、glance、noVNC、horizon等
(3)下载并安装openstack源码所依赖的python库和框架
(4)安装openstack各组件
(5)启动各项服务
在较好的网络环境下,有人用不到十分钟搞定了整个过程,但是我们公司网络环境不是很好,中间还中断了几次,大致都与网络有关。遇到较多的问题就是某些软件无法下载,好在脚本会比较清楚报出错误信息,可以将安装出错的软件手动安装,之后重新执行脚本(最好不要用国内源,用欧美源应该比较靠谱)。过程虽然不是很顺利,但是最后还是成功了,看到了dashboard界面。耗时大约3小时。
E. 如何在windows下安装openstack的依赖包
本文主要讲述在windows系统中如何安装openstack源代码的依赖包,以便于在windows操作系统下进行源码阅读。为了可以在windows下阅读openstack源码,首先我们需要在windows系统下安装python2.7。安装好后将python目录配置到系统的环境变量中(我的电脑->属性->高级->环境变量)。可以在命令行输入echo %PATH%观察系统其值是否发生了变化。如果发生了变化可以继续安装pip。如果没有包括python的路径则需要注销电脑,重新登陆或者重启电脑。
为了完成pip的安装,首先需要安装setuptools,下载完成后解压,然后使用命令行进入到解压后的目录,输入pythonsetup.py install进行安装。安装完成后就可以下载pip进行安装了,其安装过程与setuptools一样。在pip安装完成后,需要修改Path环境变量,将python目录下的Scripts添加进环境变量。然后参考上一段的做法激活环境变量后就可以使用pip方面地安装扩展包了。
在完成上面的操作后就可以安装openstack源代码中所需要的扩展包的。其安装命令主要是pip installrequirements.txt 或者pip install-r tools/requirements。至于执行哪个命令要根据openstack组件的源代码结构而定。
下面主要说明安装过程可能出现的问题。
1)distutils.errors.DistutilsError: Setup script exited with error:Unable to find vcvarsall.bat
注意:系统可能需要安装vs2008,因为windows python以来vc++ 2008版本的。
2)UnicodeDecodeError:'ascii' codec can't decode byte 0xb2 in position 0: ordinal not in range
3)以下这些扩展包需要手动安装或者下载安装,不能使用pip安装
A.pyOpenSSL
B.lxml
C.cffi
D.pycparser
E.thrift
F.mysql-python
F. Centos6下安装openstack yum install -y openstack-utils 会出错
在你的软件源里面没有这个软件包,建议你修改软件源或者下载源码包编译安装
G. 如何学习OpenStack与精通OpenStack好书推荐 00 OpenStack中国社区
如何学习OpenStack与精通OpenStack好书推荐
Joshua
2013-9-25
OpenStack的官方文档在开源世界里应该说做得还是很不错的,如果你只是想随便跑一下运行一下的话, 看看这些文档应该足够了。
但是如果它出问题了呢?由于还未真正懂OpenStack,可能你会感到:
一是解这个问题会很累;
二是经常性的没有思路,不知道如何下手;
三是花费的时间成本也不会少,会成十上百倍的大增;
四是下次遇到类似的问题可能依然不清楚,依然耽误时间;
五是由于未理解把不是问题的问题当成问题;
六是由于未理解也容易出方向性问题得不偿失;
七是一直看不到系统的全貌与本质始终在一个局部打转转,长时间处于恶性循环中;
八是同样没有真正理解给别人讲的时候也讲不明白,问个问题别人都不知道你在问什么耽误大家时间;
这样,无论对于公司还是对于你自己来说都是损失,不会有好效果,对于此类问题,笔者给出的药方就是系统性学习,没有捷径。
可能有人以为,系统性学习看起来在内功修炼未开窍之前会没有效率,那特错特错了,俗话说得好,磨刀不误砍柴工,你的Skill的提高带来的将是效率的成几 何倍数的提升。这也是为什么IT领域永远是20%的人干80%的活,看看Linux,看看Hadoop,看看那些创业公司就知道了。
既然从事了码农这一行,怎么着都是一个累,但是系统性学习了,开窍了,那就一劳永逸的解决这些问题了,上层再怎么变,底层的Linux内核或者网络这些知 识却不会变,并且万变不离其踪,有了这些底层牢靠的基础,是非常容易理解上层的变动的。这就会步入良性循环,你算算这其中的好处帐吧,呵呵。
下面是笔者这一年半学习OpenStack的历程,仅供参考:
1,首先随便找几篇架构方面的理论文章,心里清楚它是干什么的。
2,看代码之前,首先得会用。会用可以看官方的文档,我反正是没看,因为早期的文档并不像现在这么丰富。我直接看的devstack的脚本,照着它那脚本一步步手工源码安装一遍之后就基本能解决所有的安装使用方面的最基础的问题了。
3,做为一个程序员,首先debug得先行,使用pydev创建开发环境,在debug的过程中,你就知道它的运行流程了,当然现在有文档讲它的运行流程,但早期也少见啊。再怎么着,也没有你自己debug一遍来的印象深吧。
4,稍微fix一些bug,任何一个小bug都会把你带到实际代码之中去,遇到很多脚踏实地的问题。但是这个不用太多,因为你还要省时间出来系统性学习消化了。
5,多review社区那些高质量的代码,尤其是看那些对你理解代码有代表性的patch。每一个patch背后都会有它的背景知识,这个就需要系统性的学习了,刚开始一两周可能稍微影响效率一点,但接下来马上带来的效率提升就会大丰收了,绝对是划算的买卖。
6,反复地看,反复的加深印象,好记性不如烂笔头,慢慢随着你知识的广度的提高,你就能随意触类旁通了。如果再有机会对某一领域进行深度的探索时,你也总能把握住方向,出了问题就从理论上都能想象得到可能问题出在哪个环节,站得高,看得远,还轻松。
这期间笔者也系统性地学习了下列25本书,不包括电子文档等。基本原则就是:
1,想精通python的话,随便找本python的书花个半天时间了解一下就可以开始写代码了然后遇到什么回过头来再翻阅什么就行了,然后想精通 python的话最应该看的是C编程的书,如UNIX编程的大块头,慢慢啃吧,神马进程死锁啊,同步啊等等思想都在里头了,因为技术都是相通的,当然,世 间万事万物都是相通的,技术和非技术也是通着的。
2,学OpenStack当然要看OpenStack的代码,但也不是全看,笔者在之初就很少直接盯着看Neutron的代码,而是系统性学习它背后的知 识,然后再回过头来你就会发现原来这些代码都是按你心里预想的步骤来写的。举个例子,笔者最初想评审IPSec VPN的代码,直接上去看肯定看不懂,算了,不看了,回过头先花半天系统性过一下IPSec的理论与Linux下的IPSec的具体实现 strongwan的用法,再花一个小时回过头来仔细研究代码,你就会发现这些代码都是顺着你的思路来走的,这样又能review到点子上,也节省时间, 更轻松人不累,还能学到东西。我相信你直接一上来就对着这个patch干看,不系统的话,估计看两天也是一知半解吧,就像社区某些不是很懂的人一样看不懂 又要量化的数字就尽提一些莫名其妙的python的用法相关的comment。又累又没效果也没学到什么东西。Python也就是一个壳,掌握它远没有掌 握里面的领域知识更有意义。社区的有些core他们永远被那些量化的数字纠缠着,有美丽的光环,但很少有时间来掌握领域知识的,顶多多熟悉了点 python了而已,不熟悉,又要评审,就只能莫名的-2,不能服众,影响了组件的稳定性,延迟了openstack在企业的部署。
总之,系统性最重要,那才是正规军,非游击队。
这些书包括:
1, Computer network, version 5, the teaching material of the university of China, Publishing House of Electronics Instry, Xie Xiren
2, IPv6 technology, Publishing House of Tsinghua University, Huawei company
3, Cloud computing, second editon, Publishing House of Electronics Instry, Liupeng
4, Got Git: The Deinitive Guide of Git, China Machine Press, Jiang Xin
5, Python Core Program, PRENTICE HALL, Wesley J. Chun
6, The Python Standard Library by Example, Doug Hellmann
7, The storage network technology and application, Publishing House of Tsinghua University, Lu Shiwen
8, Network Warrior, O’REILLY, Gary A. Donahue
9, Network traffic monitoring and control, www.buptpress.com, Liu Fang
10, IPSec VPN design, ciscopress.com, Vijay Bollapragada, Mohamed Khalid, Scott Wainner
11, MPLS and VPN Architectures, ciscopress.com, Ivan PepeInjak, Jim Guichard
12, Technology & Practice of Network attack & defense, Publishing house of electronics instry, Zhuge Jianwei
13, The Principles & Practive of Virtualization Technology, Publishing house of electronics instry, Guang Xiaoming
14, Operating systems Internals and Design Principles, Sixth Editioin, William Stallings
15, Linux Kernel Development Third Edition, PEARSON Ecation, Robert Love
16, Understanding Linux network Internals, O’REILLY, Christian Benvenuti
17, Linux Device Drivers, O’REILLY, Jonathan Corbet, Alessandro Rubini & Greg Kroah-Hartman
18, Linux Kernel Hacks, O’REILLY, Munehiro IKEDA, Naohiro Ooiwa, Hiroshi Shimanmoto, Akio Takebe
19, Understanding the Linux kernel, Third Edition, O”REILLY, Daniel P. Bovet & Marco Cesati
20, Advanced Programming in the UNIX Environment Second Edition, TURING PEARSON, W. Richard Stevens Stephen A. Rago
21, Embedded Linux Primer, A Practica Real-World Approach, Second Edition, TURING PEARSON, Christopher Hallinan
22, Understanding the Eembedded Linux Device Driver Program, Publishing House of Electronics Instry, Cao Guohui
23, Custom your Own Linux System Step by Step, Posts & Telecom Press, Sun Haiyong
24, Puppet Master, Orion Children’s, Joanne Owen
25, Linux Iptable Firewall
H. “openstack”自动化部署有哪些工具
Fuel比较值得推荐
这是Mirantis出品的部署安装工具,2013年10月份,推出他的3.2版本,让人很震撼,基本算是把Openstack所有的部署都web化,你可以太多的选择:尤其是网络,存储。这基本都是大家学习的榜样。已经敢和企业签订SLA。
目前国内杜玉杰,九州云,在做该项目的汉化工作和考虑日后的技术支持。
Devstack
这应该算是Openstack最早的安装脚本,他是通过直接git源码,进行安装,目的是让开发者可以快速搭建一个环境。目前这套脚本可以在Ubuntu和Fedora下跑的很好。
如果你想了解新版本的功能,通过Devstack是一个最佳选择。我第一次成功安装Openstack,就是用这个。
Diablo安装脚本
这算是我知道的第一个基于ubuntu 源的安装脚本,当时Diablo发布的时候,有bug,keystone和Horizon无法一起工作,ubuntu 11.10源里的包也是有相同的bug,并且Ubuntu 官方并不打算维护和升级。这位作者个人身份,维护了Diablo 版本后来的升级,打包,并且写了一套脚本。
这套脚本,其实写的非常好,我同事改造了一下,就可以安装Essex版本。目前正在改进,用来安装Folsom版本。
Stackops
Openstack起步的时候,官方的安装文档,其实基本都是来自Stackops,当时他们提供Openstack的部署服务。你下载一个iso,装完一个ubuntu系统后,就会转到他们的web,你填写相关的配置参数,通过chef进行部署。
Stackops在Chef上是比较强悍的,包括Dell的Crowbar,也是和他合作,才搞定Chef。不过我的理解,他的Chef 脚本是没有开源的。
Stackops通过商业定制,进行收费。目前感觉有点走下坡路,业内的声音比较小了。对openstack的新版本支持比较慢,Essex支持,到9月份才支持。目前还没有任何关于Folsom 的支持。
Crowbar
在Openstack上,Dell是有点郁闷,中国的那句老话,起个大早,赶个晚集。Openstack刚发布的时候,Dell就号称要做一个工具部署,不过毕竟是硬件公司,对软件还是比较外行。
Dell的Crowbar,是一个iso,装完后,你可以在web界面进行Openstack的部署,底下其实也是使用Chef。集成了Nagios监控,安装OS是dell自己开发的,有点创新。
以前Dell的Crowbar一个大的特色就是可以远程设置机器的Raid和Bios,这是从Dell,我才知道可以这样做。不过也正因为这个特色,导致厂商绑定,还有Dell自己如何定位Crowbar,当初还想搞一个商业的版本,结果后来放弃。
Crowbar目前的开发,其实应该是遇到问题,任何做部署工具的,应该都是一个很好的失败的案例。后续的发展,维护,更新都是问题。
Maas+Juju
这是Canonical推出的部署工具,可以用在Openstack的部署,类似Puppet,Chef 的部署工具。Maas是用于安装ubuntu,juju是用于部署应用。
I. openstack自动化部署有哪些工具
Fuel比较值得推荐
这是Mirantis出品的部署安装工具,2013年10月份,推出他的3.2版本,让人很震撼,基本算是把Openstack所有的部署都web化,你可以太多的选择:尤其是网络,存储。这基本都是大家学习的榜样。已经敢和企业签订SLA。
目前国内杜玉杰,九州云,在做该项目的汉化工作和考虑日后的技术支持。
Devstack
这应该算是Openstack最早的安装脚本,他是通过直接git源码,进行安装,目的是让开发者可以快速搭建一个环境。目前这套脚本可以在Ubuntu和Fedora下跑的很好。
如果你想了解新版本的功能,通过Devstack是一个最佳选择。我第一次成功安装Openstack,就是用这个。
Diablo安装脚本
这算是我知道的第一个基于ubuntu 源的安装脚本,当时Diablo发布的时候,有bug,keystone和Horizon无法一起工作,ubuntu 11.10源里的包也是有相同的bug,并且Ubuntu 官方并不打算维护和升级。这位作者个人身份,维护了Diablo 版本后来的升级,打包,并且写了一套脚本。
这套脚本,其实写的非常好,我同事改造了一下,就可以安装Essex版本。目前正在改进,用来安装Folsom版本。
Stackops
Openstack起步的时候,官方的安装文档,其实基本都是来自Stackops,当时他们提供Openstack的部署服务。你下载一个iso,装完一个ubuntu系统后,就会转到他们的web,你填写相关的配置参数,通过chef进行部署。
Stackops在Chef上是比较强悍的,包括Dell的Crowbar,也是和他合作,才搞定Chef。不过我的理解,他的Chef 脚本是没有开源的。
Stackops通过商业定制,进行收费。目前感觉有点走下坡路,业内的声音比较小了。对openstack的新版本支持比较慢,Essex支持,到9月份才支持。目前还没有任何关于Folsom 的支持。
Crowbar
在Openstack上,Dell是有点郁闷,中国的那句老话,起个大早,赶个晚集。Openstack刚发布的时候,Dell就号称要做一个工具部署,不过毕竟是硬件公司,对软件还是比较外行。
Dell的Crowbar,是一个iso,装完后,你可以在web界面进行Openstack的部署,底下其实也是使用Chef。集成了Nagios监控,安装OS是dell自己开发的,有点创新。
以前Dell的Crowbar一个大的特色就是可以远程设置机器的Raid和Bios,这是从Dell,我才知道可以这样做。不过也正因为这个特色,导致厂商绑定,还有Dell自己如何定位Crowbar,当初还想搞一个商业的版本,结果后来放弃。
Crowbar目前的开发,其实应该是遇到问题,任何做部署工具的,应该都是一个很好的失败的案例。后续的发展,维护,更新都是问题。
Maas+Juju
这是Canonical推出的部署工具,可以用在Openstack的部署,类似Puppet,Chef 的部署工具。Maas是用于安装ubuntu,juju是用于部署应用。