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各个基础模块的一条路径。

动手练习

  1. 在aio场景中添加sahara服务

  2. 在install_module.sh中的r10k命令的作用是?

  3. bundler的作用是什么?

Last updated

Was this helpful?