用 config drive 配置网络 - 每天5分钟玩转 OpenStack(173)

上一节最后问了大家一个问题:如果 subnet 没有开 DHCP,会是怎样一个情况?

在其他条件不变的情况下,cloud-init 依然会完成那 3 个步骤,也就是说网卡还是会被配置成 dhcp 模式,只是最后网卡没办法获得 IP 而已。

不开 DHCP 也是一个常见的场景,为了让 instance 的网卡在这种情况下也能够被正确配置,我们需要借助 config drive,下面开始实践。

在计算节点 /etc/nova/nova.conf 中需要添加一个配置,然后重启 nova-compute 服务。

[DEFAULT]

flat_injected = True

flat_injected 的作用是让 config drive 能够在 instance 启动时将网络配置信息动态注入到操作系统中。

当前网络的 DHCP 已经关闭。

instance 部署时指定使用 config drive。

Neutron 为 instance 分配的 IP 为 18.18.18.5

instance 启动后登录系统,ip a 验证 IP 已经成功配置,说明 config drive 起作用了。

重要的是弄懂 18.18.18.5 这个 IP 是如何配置上去的。打开 /var/log/cloud-init.log,分析如下:

① 扫描出 instance 中的所有网卡,这一步与不使用 config drive 的情况完全一样。

② 获取该网卡的配置信息。 日志显示配置信息是从 ds 获取。ds 是 datasource 的缩写,在这里指的就是 config drive。在不使用 config drive 的情况下采用的是 fallback 配置。网卡配置信息记录在 config drive openstack/latest/network_data.json 文件里,内容如下:

③ 将配置信息写入 /etc/network/interfaces.d/50-cloud-init.cfg,内容为:

可以看到 IP 以 static 方式配置。

总结一下:

1. 在没有使用 config drive 的情况下,cloud-init 只会配置第一块网卡,且设置为 dhcp 模式,所以:

① 如果 instance 只有一块网卡,且启用了 DHCP,网卡能够被正常拉起。

② 如果 instance 有多块网卡,第一块会尝试以 dhcp 方式拉起,其他网卡不作处理。

2. 使用 config drive 的情况下,无论是否启用 DHCP,所有网卡都能被正确配置且成功拉起(如果 dhcp 网卡 >= 2,CentOS 还是有问题,可能跟目前所用的 cloud-init 版本较低有关)。

3. 如果可能,尽量使用 config drive。

讨论完网络配置这个最重要的主题,下一节我们来看看 cloud-init 的其他典型应用:设置 hostanme,设置用户初始密码,安装软件等。

时间: 04-07

用 config drive 配置网络 - 每天5分钟玩转 OpenStack(173)的相关文章

配置 LBaaS - 每天5分钟玩转 OpenStack(121)

上一节学习了 Neutron LBaaS 的原理,今天开始实践.首先在配置中启用 LBaaS 服务. Neutron 通过 lbaas plugin 和 lbaas agent 提供 LBaaS 服务. lbaas plugin 与 Neutron Server 一起运行在控制节点上. lbaas agent 运行在网络节点上. 对于我们的实验环境,控制节点和网络节点是一个,都是 devstack-controller. 配置 LBaaS agent Neutron 配置 LBaaS agent

在 ML2 中配置 VXLAN - 每天5分钟玩转 OpenStack(110)

上一节我们介绍了 VXLAN 的基本概念,今天介绍如何在 ML2 中启用 VXLAN. 在 /etc/neutron/plugins/ml2/ml2_conf.ini 设置 vxlan network 相关参数. tenant_network_types = vxlan 指定普通用户创建的网络类型为 vxlan. 这里还使用了一个名为 "l2population" mechanism driver,我们放到后面单独介绍. 然后指定 vxlan 的范围. 上面的配置定义了 vxlan v

在 ML2 中配置 Vlan Network- 每天5分钟玩转 OpenStack(93)

上一节我们学习了 Neutron Vlan Network 的原理,今天讨论如何在 ML2 配置中 enable 它. 首先在 /etc/neutron/plugins/ml2/ml2_conf.ini 中设置 vlan network 相关参数. tenant_network_types = vlan 指定普通用户创建的网络类型为 vlan. 然后指定 vlan 的范围: 上面配置定义了 label 为 “default” 的 vlan network,vlan id 的范围是 3001 -

写在最前面 - 每天5分钟玩转 OpenStack(1)

<每天5分钟玩转 OpenStack>是一个 OpenStack 教程,这是第 1 篇. 这个教程有下面两个特点: 系统讲解 OpenStack 从架构到各个组件:从整体到细节逐一讨论 重实践并兼顾理论 主要从实际操作的角度带着大家学习 OpenStack. 为啥要写这个? 简单回答是:因为OpenStack 学习难度大,但如果掌握了价值会很大 先做一个自我介绍吧. 本人网名CloudMan,在 IT 这个行当已经摸爬滚打了十多年,05年之前是搞上层应用开发的,那时候 Java 比较火,所以

创建 Pool & VIP - 每天5分钟玩转 OpenStack(122)

上节完成了 LBaaS 配置,今天我们开始实现如下 LBaaS 环境. 环境描述如下:1. 创建一个 Pool "web servers".2. 两个 pool member "WEB1" 和 "WEB2",均为运行 Ubuntu cloud image 的 instance.3. load balancer VIP 与 floating IP 关联.4. 位于外网的 client 通过 floating IP 外网访问 web server.

每天5分钟 玩转OpenStack

最近在学习OpenStack的相关知识,一直苦于OpenStack的体系庞大以及复杂程度,学习没有进度,停滞不前.偶然机会在51CTO上发现了一个热点的专题关于OpenStack的,题目叫做<每天5分钟 玩转OpenStack>,抱着试试的态度看了几篇,被文章的内容和书写风格吸引了,内容全面,思路清晰,简单易懂,关键是每篇博文的内容很少,绝对是一泡大便的功夫.每周一.周三.周五定时更新,微信也有同步更新.不过大神在博客园cnblogs上的博文没有目录,每次翻阅的时候甚是费劲,可能是大神太忙了,

实践 config drive - 每天5分钟玩转 OpenStack(170)

如果 instance 无法通过 metadata service 获取 metadata(无 DHCP 或者 nova-api-metadata 服务),instance 还可以通过 config drive 获得 metadata. config drive 是一个特殊的文件系统,OpenStack 会将 metadata 写到 config drive,并在 instance 启动时挂载给 instance.如过 instance 安装了 cloud-init,config drive 会

cloud-init 工作原理 - 每天5分钟玩转 OpenStack(171)

cloud-init 是 linux 的一个工具,当系统启动时,cloud-init 可从 nova metadata 服务或者 config drive 中获取 metadata,完成包括但不限于下面的定制化工作: 设置 default locale 设置 hostname 添加 ssh keys到 .ssh/authorized_keys 设置用户密码 配置网络 安装软件包 为了实现 instance 定制工作,cloud-init 会按 4 个阶段执行任务: local init conf

instance 网卡是如何被拉起来的?- 每天5分钟玩转 OpenStack(172)

instance 的网卡是如何被配置并拉起的?这是理解和用好 cloud-init 非常关键的一步.我们先讨论一个最简单基础的场景:镜像中没有安装 cloud-init. 此时 instance 启动时网卡能不能被拉起来完全 靠运气!是的,就是运气. 因为这种情况下网卡的配置是死的,完全依赖于镜像中 /etc/network/interfaces 原有的配置.比如原镜像中的配置是: auto eth0iface eth0 inet dhcp instance 只有满足下面所有条件网卡才能被拉起来