上一节最后问了大家一个问题:如果 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,设置用户初始密码,安装软件等。

用 config drive 配置网络的更多相关文章

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

    上一节最后问了大家一个问题:如果 subnet 没有开 DHCP,会是怎样一个情况? 在其他条件不变的情况下,cloud-init 依然会完成那 3 个步骤,也就是说网卡还是会被配置成 dhcp 模式 ...

  2. VMware Workstation CentOS-6.4-x86_64-minimal 配置网络以及安装JDK和tomcat

    1.配置网络(能够联网)转自:http://blog.sina.com.cn/s/blog_75ad10100101ma4c.html 1)vmware的网卡连接方式选择为桥接(bridged)不要用 ...

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

    如果 instance 无法通过 metadata service 获取 metadata(无 DHCP 或者 nova-api-metadata 服务),instance 还可以通过 config ...

  4. centos6配置网络常见问题

    1. 启用网卡 查看网卡模块: lsmod 移除网卡:modprobe -r e1000 装载网卡: modprobe e1000 2. 配置网络 vim /etc/sysconfig/network ...

  5. (转)rabbitmq.config详细配置参数

    rabbitmq.config详细配置参数 Key Documentation tcp_listeners 用于监听 AMQP连接的端口列表(无SSL). 可以包含整数 (即"监听所有接口& ...

  6. c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程

    c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...

  7. rabbitmq.config详细配置参数

    原文:rabbitmq.config详细配置参数 rabbitmq.config详细配置参数 详细使用方法请点击:http://blog.csdn.net/Super_RD/article/detai ...

  8. kubernetes 配置网络插件 flannel

    概述 在学习docker时知道docker有四种常用的网络模型 bridge:桥接式网络 joined:联盟式网络,共享使用另外一个容器的网络名称空间 opened:容器直接共享使用宿主机的网络名称空 ...

  9. Kubernetes 学习18配置网络插件flannel

    一.概述 1.我们在学习docker时知道docker有四种常用的网络模型 a.bridge:桥接式网络 b.joined:联盟式网络,共享使用另外一个容器的网络名称空间 b.opened:容器直接共 ...

随机推荐

  1. 1305: [CQOI2009]dance跳舞

    Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 4169  Solved: 1804[Submit][Status][Discuss] Descripti ...

  2. 一、Shell 教程

    Shell 教程 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. Shell 是指一种应用程序,这个应用程序提供了一个 ...

  3. Install Jenkins 2.1.36 and openjdk 1.7.0 on centos 7

    #!/bin/bash## Copyright (c) 2014-2015 Michael Dichirico (https://github.com/mdichirico)# This softwa ...

  4. <Docker学习>1. 简介

    Q: Dokcer是什么? A: 是一种虚拟化技术.参考https://www.imooc.com/learn/867快速了解Docker. Q: 传统虚拟机技术和Dokcer的区别? A: 传统虚拟 ...

  5. The Moving Points - HDU - 4717 (模拟退火)

    题意 二维空间中有\(n\)个运动的点,每个点有一个初始坐标和速度向量.求出一个时间\(T\),使得此时任意两点之间的最大距离最小.输出\(T\)和最大距离. 题解 模拟退火. 这个题告诉了我,初始步 ...

  6. 动态规划、记忆化搜索:HDU1978-How many ways

    Problem Description 这是一个简单的生存游戏,你控制一个机器人从一个棋盘的起始点(1,1)走到棋盘的终点(n,m).游戏的规则描述如下: 1.机器人一开始在棋盘的起始点并有起始点所标 ...

  7. P1309 瑞士轮

    题目背景 在双人对决的竞技性比赛,如乒乓球.羽毛球.国际象棋中,最常见的赛制是淘汰赛和循环赛.前者的特点是比赛场数少,每场都紧张刺激,但偶然性较高.后者的特点是较为公平,偶然性较低,但比赛过程往往十分 ...

  8. 2 Model层-模型成员

    1 类的属性 objects:是Manager类型的对象,用于与数据库进行交互 当定义模型类时没有指定管理器,则Django会为模型类提供一个名为objects的管理器 支持明确指定模型类的管理器 c ...

  9. 等比例适配所有屏幕---css3 rem用法

    1,rem的定义 rem(font size of the root element)是指相对于根元素的字体大小的单位.rem是一个相对单位.和em非常相似.em(font size of the e ...

  10. 通过Gradle Plugin实现Git Hooks检测机制

    背景 项目组多人协作进行项目开发时,经常遇到如下情况:如Git Commit信息混乱,又如提交者信息用了自己非公司的私人邮箱等等.因此,有必要在Git操作过程中的适当时间点上,进行必要的如统一规范.安 ...