puppet-openstack-integration
Puppet-openstack-integration模块确保社区可以持续地测试和验证使用Puppet modules部署的Openstack集群。
建议在阅读其他module前,优先阅读本节内容。
本节作者:余兴超 阅读级别:必读 阅读时间 1小时
先睹为快
如果你想要使用puppet modules部署一套all-in-one的openstack集群,那么可以在虚拟机(Ubuntu 14.04或者CentOS 7.x)的终端下执行以下命令:
git clone git://git.openstack.org/openstack/puppet-openstack-integration
cd puppet-openstack-integration
./all-in-one.sh或者
curl -sL http://git.openstack.org/cgit/openstack/puppet-openstack-integration/plain/all-in-one.sh | bash整个过程约需要20分钟。
我们分析以下这是怎么做到的?
all-in-one.sh是一个逻辑比较简单的脚本,其调用了run_tests.sh脚本。 这个脚本的主要作用有3点:
安装Puppet相关软件包,
执行puppet apply命令,完成相应服务的安装配置
安装配置tempest并相应运行smoke测试
这里面主要讲解一下是如何实现服务的安装配置,主要使用的是run_puppet函数。
在下面连续调用了两次run_puppet函数:
核心代码讲解
目前Openstack Intra一共使用了三个测试场景,用于跑puppetopenstack的集成测试: scenario001, scenario002,scenario003.
而scenario-aio manifest是提供给想要了解和学习PuppetOpenstack项目的用户。它们之间的区别参见下表:
-
scenario001
scenario002
scenario003
scenario-aio
ssl
yes
yes
yes
no
ipv6
centos7
centos7
centos7
no
keystone
X
X
X
X
tokens
uuid
uuid
fernet
uuid
glance
rbd
swift
file
file
nova
rbd
X
X
X
neutron
ovs
ovs
linuxbridge
ovs
cinder
rbd
iscsi
iscsi
ceilometer
X
aodh
X
gnocchi
rbd
heat
X
swift
X
sahara
X
trove
X
horizon
X
X
ironic
X
zaqar
X
ceph
X
mongodb
X
scenario-aio
这里我们以scenario-aio来解释它是如何部署起一个Openstack All-in-One的环境的。 scenario-aio的文件路径为: fixtures/scenario-aio.pp
那么接下来,我们进入到这些被调用的类中一探究竟。为了节省篇幅,我们分别挑选了mq和glance进行解释和说明。
class openstack_integration::rabbitmq
我们可以理解为在openstack_integration的manifests目录下,所有和服务相关的类都是转发层,即对某个服务模块的调用。
在openstack_integration::rabbitmq中,通过调用class rabbitmq完成了对rabbitmq的安装和配置,并创建了一个路径为'/'的vhost,更多对rabbitmq类的介绍,请参见puppet-rabbitmq模块。
class openstack_integration::glance
挑选glance的原因在于其代码相比其他服务更简洁一些,读者理解起来会稍微容易一些。 我们可以看到其
调用glance::api和glance::resgistry完成了glance服务的配置
调用glance::notify::rabbitmq完成了MQ的配置
调用glance::db::mysql完成数据库的配置
调用glance::client完成client的配置
调用glance::keystone::auth完成glance keystone相关的配置
通过传递的参数值,选择调用glance::backend::file/glance::backend::rbd/glance::backend::swift完成后端存储的配置
小结
puppet-openstack_integration模块为PuppetOpenstack项目提供了集成测试的功能,同时也为用户提供了快速部署AIO测试环境的脚本。如果你是刚开始了解该项目,那么这个模块是快速熟悉Openstack各个基础模块的一条路径。
动手练习
在aio场景中添加sahara服务
在install_module.sh中的r10k命令的作用是?
bundler的作用是什么?
Last updated
Was this helpful?