一.OpenStack的部署
学习任务:通过devstack自动化部署了解openstack的架构,并且最后部署一个openstack实验环境
1.俩种部署方式
自动化部署的单步执行就是手动部署。
将手动部署过程中命令的脚本自动化,自动化就是自动部署。
2.devstack自动化部署原理
自动化原理:
抓取源代码,自动执行安装脚本,自动生成配置文件,自动解决依赖关系。
3.下载
devstack通过git来实现代码的版本管理
ubuntu下git安装:sudo apt-get install git , git通过http和ssh两种协议实现传输
通过git clone https://github.com/openstack-dev/devstack.git 将devstack的源代码下载到本机
下载好源代码后,分析其结构:
stack.sh 安装自动化部署的入口,执行这个文件开始部署
unstack.sh 卸载部署好的服务,清理部署好的环境,有利于下一次部署
localrc 配置文件,传入stack.sh的参数,包括nova部署在哪个节点,用户名和密码啥的
lib 每个服务的自动化安装脚本,每个openstack服务对应一个文件
openrc 环境变量文件,在执行openstack命令时要导入一些环境变量,比如命令的用户名或密码
这个图lib文件下的所有文件,对应每一个服务的自动化shell脚本
database/databases 对应数据库服务自动化安装脚本,默认采用mysql
nove_plugins 针对每一种虚拟化技术的对应脚本,像KVM就是hypervisor-libvirt
neutron 网络通用部分的自动化
neutron_plugins 插件自动化
neutron_thirdparyt 第三方公司开发的驱动自动化,
这是neutron的全部插件
cinder 块存储通用部分的自动化
cinder_plugins 块存储插件自动化
其余不常见的
heat(应用的自动化部署AWScloudformation)
ceilometer (监控和计费)
sahara(BigData-as-a-Service> BDaaS,将hadoop部 署在openstack的虛拟机上)将大数据和云计算结合的
ironic (PXE+IPMI, 物理节点的自动化部署)主机操作系统的自动化
trove(Database-as-a-service,将数据库部署在openstack的虚拟机上)
tempest(openstack单元测试框架)
opendaylight(开源的sdn控制器)
ldap(轻量型目录访问协议,与keystone整合,实现多级用户的鉴权)
结论:每一个服务对应着一些自动化脚本,由这些脚本实现服务的自动化
4. devstack的执行方式和原理
**执行原理:**stack.sh判断是否存在localrc文件
是,进入配置模式,通过读取localrc文件完成,localrc文件记录了刚才交互模式里面需要用户输入参数的值
很多配置都是使用类似localrc的模板,想用那个服务,就ENABLED_SERVICES=服务中具体里项目
目前使用最多的是VXLAN模式,也是一个发展趋势否,进入交互模式,通过与用户的交互输入stack.sh需要的参数,包括数据库密码,Rabbit MQ的密码,Service TOKEN的密码