返回介绍

puppet-heat

发布于 2025-02-18 00:20:47 字数 4161 浏览 0 评论 0 收藏 0

本节作者:余兴超
阅读级别:必读
阅读时间: 1 小时

AWS CloudFormation 服务,为用户提供了编排 AWS 中的资源的能力。Openstack 社区在 2012 年推出了类似支持编排功能的服务 Heat。Heat 基本的 workflow 是这样的:

先睹为快

在了解完 Heat 后,我们首先通过快速部署一个带有 heat 所有服务的环境来快速地上手,首先我们需要做一点 hack,在 fixtures/scenario-aio.pp 文件中追加:

include ::openstack_integration::heat

然后在终端下执行:

   puppet apply -v fixtures/scenario-aio.pp

在执行完成后,我们通过 systemctl 命令,可以看到以下服务并启动:

 openstack-heat-api-cfn.service                                                   loaded    active   running   Openstack Heat CFN-compatible API Service
  openstack-heat-api-cloudwatch.service                                           loaded    active   running   OpenStack Heat CloudWatch API Service
  openstack-heat-api.service                                                      loaded    active   running   OpenStack Heat API Service
  openstack-heat-engine.service                                                   loaded    active   running   Openstack Heat Engine Service

先在终端下执行 list 命令,正常的返回值为空:

  openstack stack list

接着我们使用一个简单 HOT 模板来验证一下刚才 heat 的部署工作是否 work,手动创建一个 test.yaml 文件:

heat_template_version: 2015-04-30

description: Simple template to deploy a single compute instance

resources:
  my_instance:
    type: OS::Nova::Server
    properties:
      image: a0a885b4-4045-4dee-bb91-c163c4ba429a
      flavor: m1.nano

在终端下输入以下命令:

openstack stack create -t test.yaml test

观察输出信息中的 stack_status_reason ,若为 started ,则说明 stack 创建完成:

+---------------------+-----------------------------------------------------+
| Field               | Value                                               |
+---------------------+-----------------------------------------------------+
| id                  | 89ccfa5b-31c6-4a86-abe9-72c0a44729f8                |
| stack_name          | test                                                |
| description         | Simple template to deploy a single compute instance |
| creation_time       | 2016-05-31T11:50:39                                 |
| updated_time        | None                                                |
| stack_status        | CREATE_IN_PROGRESS                                  |
| stack_status_reason | Stack CREATE started                                |
+---------------------+-----------------------------------------------------+

核心代码讲解

class heat::api

和其他服务类似,heat::api 完成了对 heat-api 软件包,相关配置文件和服务管理。

class heat::api_cfn

和其他服务类似,heat::api_cfn 完成了对 heat-api-cfn 软件包,相关配置文件和服务管理。

class heat::api_cloudwatch

和其他服务类似,heat::api_cloudwatch 完成了对 heat-api-cloudwatch 软件包,相关配置文件和服务管理。

class heat::engine

和其他服务类似,heat::engine 完成了对 heat-engine 软件包,相关配置文件和服务管理。 这里有一个关于 sizemember 的用法实例:

  • size 的作用是返回一个字符串,列表或者哈希的长度。
  • member 函数则是判断一个变量是否为一个列表的成员。
  $allowed_sizes = ['16','24','32']
  $param_size = size($auth_encryption_key)
  if ! (member($allowed_sizes, "${param_size}")) { # lint:ignore:only_variable_string
    fail("${param_size} is not a correct size for auth_encryption_key parameter, it must be either 16, 24, 32 bytes long.")
  }

其他 class

  • heat::client 完成对 heatclient 软件包的安装配置
  • heat::keystone::auh 完成 heat user,role,endpoint 的管理
  • heat::keystone::domain 完成默认 heat domain 的创建
  • heat::db::mysql 完成了 heat 数据库的创建

小结

Heat 服务的架构比较简单,因此在配置上并没有太多复杂的地方,它的核心还是在于结合业务,完成 HOT 模板的编写。

动手练习

  1. 在 keystone 中添加 heat-api-cfn user,service 和 endpoint
  2. 仅部署 heat-api 和 heat-engine 服务

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文