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

上一节最后问了你们一个问题:若是 subnet 没有开 DHCP,会是怎样一个状况?json

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

不开 DHCP 也是一个常见的场景,为了让 instance 的网卡在这种状况下也可以被正确配置,咱们须要借助 config drive,下面开始实践。操作系统

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

[DEFAULT]code

flat_injected = Trueip

flat_injected 的做用是让 config drive 可以在 instance 启动时将网络配置信息动态注入到操做系统中。部署

当前网络的 DHCP 已经关闭。it

instance 部署时指定使用 config drive。test

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,设置用户初始密码,安装软件等。

相关文章
相关标签/搜索