实现 instance 定制化,cloud-init(或 cloudbase-init)只是故事的一半,metadata service 则是故事的的另一半。两者的分工是:metadata service 为 cloud-init 提供自定义配置数据,cloud-init 完成配置工作。

Metadata Service

前面讨论了一些 cloud-init 和 cloudbase-init 相关的经验,收到了很多反馈,大家对 instance 启动时是如何完成自定义配置这个过程非常感兴趣,希望能够系统讲一下。这个主题确实很重要,实际应用场景很多,确实很有必要系统讨论一番,作为对现有教程的补充。

instance 是通过 image 部署出来的,image 中包含了操作系统(例如 Ubuntu 16.04),最常用的软件(例如 SSH)以及最通用的配置(例如 eth0 dhcp)。然而在创建 instance 的时候,我们往往希望对 instance 进行一些额外的配置,比如:安装某些包、开启一些服务、添加 SSH 秘钥、配置 hostname 等等。

有几个方法可以完成这项工作:

1. 将这些东西统统做到 image 中。

这种方案可以实现,但不现实。image 应该被看着是一个模板,存放的是通用的内容。在 image 中加入个性化配置的做法要么使 image 变得非常庞杂,要么导致数量众多的 image,不易管理。

2. instance 部署出来之后手工完成个性化配置。

由于需要手工操作,instance 数量多了之后工作量会激增,而且容易出错。

3. 推荐方案:由 OpenStack Metadata Service 提供 instance 的配置信息(这些信息被统称为 metadata)。instance 启动时向 Metadata Service 请求并获得自己的 metadata,instance 的 cloud-init(或 cloudbase-init)根据 metadata 完成个性化配置工作。

这个方案的优点是不需要修改基础 image,保证了 image 的稳定性,同时实现了 instance 自动化地个性配置。

最高频的应用

将 ssh public key 添加到 instance。

首先在 “Project -> Compute -> Access & Security” 中创建 Key Pair。

OpenStack 会创建一对 ssh pulbic key 和 private key,public key 存放在 OpenStack 数据库中,private key 会在我们点击 “Create Key Pair” 按钮时自动下载。

现在 "cloudman" 这个 key pair 就是我们要用的 metadata 了。部署 instance 时,选择 "cloudman"。

instance 启动后,可以看到这个 cloudman 的 public key 已经保存到 .ssh/authorized_keys 中了。

这样我们就可以用 cloudman 的 private key 直接登录 instance。

本节我们了解了 Metadata Service 的概念及其作用,并通过一个例子获得了些感性认识。下一节就要深入学习了,我们将从 Metadata Service 的架构开始。

Metadata Service 最高频的应用 - 每天5分钟玩转 OpenStack(164)的更多相关文章

  1. Service 之间如何通信?- 每天5分钟玩转 Docker 容器技术(101)

    微服务架构的应用由若干 service 组成.比如有运行 httpd 的 web 前端,有提供缓存的 memcached,有存放数据的 mysql,每一层都是 swarm 的一个 service,每个 ...

  2. Metadata Service 一个最简单的应用 - 每天5分钟玩转 OpenStack(164)

    实现 instance 定制化,cloud-init(或 cloudbase-init)只是故事的一半,metadata service 则是故事的的另一半.两者的分工是:metadata servi ...

  3. Metadata Service 架构详解 - 每天5分钟玩转 OpenStack(165)

    下面是 Metadata Service 的架构图,本节我们详细讨论各个组件以及它们之间的关系. nova-api-metadata nova-api-metadata 是 nova-api 的一个子 ...

  4. 获取 metadata 的完整例子 - 每天5分钟玩转 OpenStack(166)

    我们将通过实验详细分析 instance 从 nova-api-metadata 获取信息的完整过程. 环境介绍 1. 一个 all-in-one 环境(多节点类似). 2. 已创建 neutron ...

  5. Service Plugin / Agent - 每天5分钟玩转 OpenStack(73)

    Core Plugin/Agent 负责管理核心实体:net, subnet 和 port.而对于更高级的网络服务,则由 Service Plugin/Agent 管理.Service Plugin ...

  6. 获取 metadata 过程详解 - 每天5分钟玩转 OpenStack(167)

    接上节,启动 neutron router 后 instance c1 终于拿到了 metadata, 从下面 c1 的启动日志可知: c1 所认为的 metadata 服务地址是 169.254.1 ...

  7. 通过 dhcp-agent 访问 Metadata - 每天5分钟玩转 OpenStack(168)

    OpenStack 默认通过 l3-agent 创建和管理 neutron-ns-metadata-proxy,进而与 nova-metadata-api 通信.但不是所有环境都有 l3-agent, ...

  8. instance 怎么获得自己的 Metadata - 每天5分钟玩转 OpenStack(169)

    要想从 nova-api-metadata 获得 metadata,需要指定 instance 的 id.但 instance 刚启动时无法知道自己的 id,所以 http 请求中不会有 instan ...

  9. 运行第一个 Service - 每天5分钟玩转 Docker 容器技术(96)

    上一节我们创建好了 Swarm 集群, 现在部署一个运行 httpd 镜像的 service,执行如下命令: docker service create --name web_server httpd ...

随机推荐

  1. NanoPiM1开箱测试

    等了快一周了,终于那M1与那外壳一起给我寄过来了. 上午收到,开箱图就不亮了,来一上好电的图! 一同购买来的MSD卡里什么也没有,上电测试时只看到绿色的灯微微亮(这是一个BUG吗!!!!哈哈). 所以 ...

  2. ngnix+uwsgi+django 部署mezzanine

    以下是我用ngnix+uwsgi+django 部署mezzanine全过程,其中ngnix+uwsgi这块是看了虫师大神的博客(http://www.cnblogs.com/fnng/p/52686 ...

  3. CArray,CList,CMap如何实例化

    1.定义一个CMap,向这个CMap中增加数据项(键-值对).CMap<CString, LPCTSTR, CString, LPCTSTR>m_ItemMap;CString strKe ...

  4. mac下导出JetBrains IDE Support插件给linux

    自从google被和谐以后,上google的store安装插件是如此的费劲,好在mac下的chrome已经装好了,直接导出给linux就可以 mac下chrome的插件目录为 ~/Library/Ap ...

  5. 杂项:NoSQL

    ylbtech-杂项:NoSQL NoSQL,泛指非关系型的数据库.随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站 ...

  6. scrapy_redis 实现多进程配置部分代码

    # 启用Redis调度存储请求队列SCHEDULER = "scrapy_redis.scheduler.Scheduler"# 确保所有的爬虫通过Redis去重DUPEFILTE ...

  7. Java中的GetOpt操作

    在shell工具中,有专门的getopt函数,使用方法如下所示: while getopts "d:t:vh" opt; do case "${opt}" in ...

  8. Rhythmk 一步一步学 JAVA (12) Spring-1 之入门

    (一)简单对象Spring  XML配置说明 使用Spring (Spring 3.0) 实现最简单的类映射以及引用,属性赋值: 1.1.新建类UserModel: package com.sprin ...

  9. python学习——练习题(13)

    """ 题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个" ...

  10. 针对android&ios yuv旋转、镜像、格式转换、裁剪 算法实现<转>

    http://blog.csdn.net/dangxw_/article/details/50903693