OpenStack Kolla 源码分析 --Ansible

OpenStack Kolla 源码分析 –Ansible

Kolla介绍

Kolla项目利用Docker、Docker-Compose、Ansible来完成部署OpenStack,目前Kolla已经能够完成一个all-in-one的开发环境的部署。从Kolla项目spec中的描述来看,主要是利用Docker容器的隔离性来达到OpenStack的原子升级、回退在升级。整个升级、回退的过程更容易控制影响范围,降低整个OpenStack的运维复杂度。Kolla 提供了生产级别的 OpenStack Service Containers。基于社区的最佳实践,提供了更好,更快,更可靠的 , 操作 OpenStack 的部署工具。
解决的问题:
平滑的升级 / 回滚 OpenStack
隔离 OpenStack 的不同组件的依赖环境。尤其是那些使用同一模块不同版本的情况。
保证环境的一致性。解决由于安装时间不同,造成的包版本不一致的情况。
支持多种安装源:源代码安装,CentOS binary 安装等。可以替代掉 devstack。
其实这些问题只要是由 Docker 来解决的。这也是 Kolla 使用 Docker 的原因。
Kolla定义了容器集合及容器两个概念

容器集合具有以下属性

容器集由一个或多个容器子集或者一个或多个容器组成;
一个容器集提供一个逻辑上的的服务;
启动、停止和版本的控制以容器集为粒度;
以容器集的粒度来完成安装;
包含容器子集的容器集也以一个独立单元启动,包含所有的容器子集及容器子集内的所有容器;
容器集合并不是原子的管理单位;
容器集必须提供进行服务状态监控的钩子;

容器具有以下属性

容器集能够原子的升级和回退;
容器包含一个单调增长的计数器,用来标志容器的存活时间;
容器的职责是单一的;
只赋予容器刚刚好的权限;
需要包含检查容器健康状态的脚本;
必须包含pid为1的进程用来回收推出的子进程;
Kolla的容器集集包含的容器有以下OpenStack组件:
Database control:
galera
mariadb
mongodb

Messaging control:
rabbitmq

High availability control:
HAProxy keepalived

OpenStack interface:
keystone
glance-api
nova-api
ceilometer-api
heat-api

OpenStack control:
glance-controller
glance-registry
nova-controller
nova-conductor
nova-scheduler
metadata-service
cinder-controller
neutron-controller
neutron-server
ceilometer-controller
ceilometer-alarm
ceilometer-base
ceilometer-central
ceilometer-collector
ceilometer-notification
heat-controller
heat-engine

OpenStack compute operation:
nova-compute
nova-libvirt
neutron-agents-linux-bridge
neutron-agents-ovs

OpenStack network operation:
dhcp-agent
l3-agent
metadata-agent
lbaas-agent
fwaas-agent

OpenStack storage operation:
Cinder
Swift
swift-account
swift-base
swift-container
swift-object
swift-proxy-server

现在 Kolla 主要分成两个部分。
1.Docker Images Build
2.Ansible 部署 ( 这部分将来会迁移到 kolla-ansible 项目 )

Docker Image Build

主要使用 Jinja2 模板生成 Dockerfile 文件。如果是源代码安装,还会把代码下载好。之后会通过Docker-py驱动Docker进行镜像构建。构建完成,还可以根据配置将镜像推送的指定的 Registry 服务器。
现在支持的不同的 Linux 发行版本 (Redhat 系和 Debian 系 ) 和不同的 OpenStack 安装包 ( 源代码和二进制包 )
下图是现在所有镜像的依赖关系。

这里写图片描述

Ansible 部署

提供一个完整的Ansible Playbook,来部署Docker的镜像。并提供all-in-one和multihost的环境
使用到的技术Docker/LXC、Ansible、Python(docker-py、Jinja2)

源码目录概要:

ansible – Contains Ansible playbooks to deploy Kolla in Docker containers.
demos – Contains a few demos to use with Kolla.
dev/heat – Contains an OpenStack-Heat based development environment.
dev/vagrant – Contains a vagrant VirtualBox/Libvirt based development environment.
doc – Contains documentation.
etc – Contains a reference etc directory structure which requires configuration of a small number of configuration variables to achieve a working All-in-One (AIO) deployment.
docker – Contains jinja2 templates for the docker build system.
tools – Contains tools for interacting with Kolla.
specs – Contains the Kolla communities key arguments about architectural shifts in the code base.
tests – Contains functional testing tools.

setup.cfg入口文件


[files]
packages =      //包名
kolla
data_files =     //pbr指定的数据文件
share/kolla/ansible = ansible/*
share/kolla/devenv = devenv/*
share/kolla/docker = docker/*
share/kolla/doc = doc/*
share/kolla/etc_examples = etc/*
share/kolla/vagrant = vagrant/*
share/kolla = tools/init-runonce
share/kolla = tools/openrc-example
share/kolla = setup.cfg

scripts =
tools/kolla-ansible  //该脚本通过ansible与koll进行交互。使用命令为:ansible-playbook -i $INVENTORY $EXTRA_OPTS 

$PLAYBOOK
[entry_points]
console_scripts =
kolla-build = kolla.cmd.build:main   //kolla程序的main主函数
oslo.config.opts =                  //oslo.config通用库用于解析命令行和配置文件中的配置选项
kolla = kolla.opts:list_opts    //字符串列表类型

[global]
setup-hooks =
pbr.hooks.setup_hook

ansible包

ansible简介

ansible是个什么东西呢?官方的title是“Ansible is Simple IT Automation”——简单的自动化IT工具。这个工具的目标有这么几项:
自动化部署APP;自动化管理配置项;自动化的持续交互;自动化的(AWS)云服务管理。
所有的这几个目标从本质上来说都是在一个台或者几台服务器上,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值