Cloud-init原理
Ubuntu修改主机名后,重启自动恢复原来的主机名?
这是因为Ubuntu18.10上,默认安装并启动了cloud-init, 需要停止它的四个服务进程,才可以使用传统的方式修改主机名。
cloud-init: https://cloudinit.readthedocs.io/en/latest/topics/examples.html?highlight=lock-passwd#including-users-and-groups
这是它的官方帮助文档中的一篇。
配置参数参考: https://www.cnblogs.com/gushiren/p/9511234.html
元数据参考:https://www.cnblogs.com/gushiren/p/9511500.html
使用示例参考: https://www.cnblogs.com/gushiren/p/9511570.html
https://www.cnblogs.com/gushiren/p/9511593.html
cloud-init简介:
它是为解决云环境中,对新建虚拟机的初始化配置问题,所提供的一个解决方案,若你的非云环境,完全可以关闭它。
它能做什么?
它可以通过元数据服务来为批量创建的虚拟机设置主机名,配置创建什么用户,用户的密码,设置root是否能ssh登录,配置启动VM时,安装什么软件,以及执行什么脚本,甚至磁盘如何分区,分多大,格式化为什么文件系统,是否可自动增长等等,它都可以通过定义配置文件来实现。
它的基本工作原理:
local阶段:
首先cloud-init-local 服务在开机时,最先启动,它会试图从元数据服务哪里获取IP的配置信息,若没有找到IP信息,就设置为dhcp自动获取IP,需要注意: 元数据服务有很多种,似乎每个厂家的规则还不太相同,这个不是很确定,具体有哪些元数据服务可用,可查看 dpkg-reconfigure cloud-init 这是Ubuntu或Debian系统中的查看方法,其它还需自行查询。在ubuntu上,默认启用了所有元数据服务,若你是VMware安装的Ubuntu虚拟机,那默认将使用本地的元数据服务,即/var/lib/cloud/seed/ 下面的本地磁盘文件来存储安装系统时,根据你的设置,自动生成的元数据配置文件信息。
init, config, 和 final阶段:
接着根据/etc/cloud/cloud.cfg 定义的,此三个阶段分别要执行的任务,其中每个任务都是以模块(module)形式设置的。
虚拟机启动时 ,所有定制化项目都可在这三个阶段设置,但每个配置项,具体要做什么,就是由metadata(元数据)来决定了。
如: cloud.cfg 中指定了 set_hostname 这个 module,则意味着 cloud-int 会设置 instance(虚拟机) 的主机名,而具体设置成哪个主机名则由 metadata 中 hostname 参数决定。
关于其元数据配置文件:
root@zcf:~# cat /var/lib/cloud/seed/nocloud-net/user-data
#cloud-config #凡是用户自定义的cloud-init的配置文件,必须以#cloud-config开头,这是cloud-init识别它的方式。
growpart: {mode: 'off'} #这些配置信息的含义 在上面给出的官方连接中都有介绍,这里就不多说了。
hostname: zcf #另外,在OpenStack中,你创建VM时,可直接在启动VM时,给其传递执行脚本处,写这些信息,也是可别cloud-init识别的。
locale: en_US.UTF-8
resize_rootfs: false
users:
- gecos: zcf
groups: [adm, cdrom, dip, plugdev, sudo]
lock-passwd: false
name: zcf
passwd: $6$221/i.......m6G/
shell: /bin/bash
非云环境的Ubuntu主机如何关闭Cloud-init:
systemctl disable cloud-init-local cloud-init cloud-config cloud-final
systemctl stop cloud-init-local cloud-init cloud-config cloud-final
Cloud-init原理的更多相关文章
- Android启动篇 — init原理(二)
======================================================== ================================== ...
- Android启动篇 — init原理(一)
======================================================== ================================== ...
- Android 7.0 启动篇 — init原理(二)(转 Android 9.0 分析)
======================================================== ================================== ...
- Android 7.0 启动篇 — init原理(一)(转 Android 9.0 分析)
======================================================== ================================== ...
- 拜托!面试请不要再问我Spring Cloud底层原理[z]
[z]https://juejin.im/post/5be13b83f265da6116393fc7 拜托!面试请不要再问我Spring Cloud底层原理 欢迎关注微信公众号:石杉的架构笔记(id: ...
- openstack cloud init set password
设置代理和password #!/bin/bash cd /home/ubuntu wget otcloud-gateway.bj.intel.com/script.tar.gz ]; then cu ...
- Spring Cloud底层原理(转载 石杉的架构笔记)
拜托!面试请不要再问我Spring Cloud底层原理 原创: 中华石杉 石杉的架构笔记 目录 一.业务场景介绍 二.Spring Cloud核心组件:Eureka 三.Spring Cloud核 ...
- [转帖]Spring Cloud底层原理
拜托!面试不要再问我Spring Cloud底层原理 https://mp.weixin.qq.com/s/ZH-3JK90mhnJPfdsYH2yDA 毫无疑问,Spring Cloud 是目前微服 ...
- 拜托!面试请不要再问我Spring Cloud底层原理
概述 毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术.不过大多数讲解还停留在对Spring Cloud功能使用的层面,其底层的很多原理,很多人可能并不知晓 ...
- spring cloud bus原理总结
1.spring cloud bus spring cloud是按照spring的配置对一系列微服务框架的集成,spring cloud bus是其中一个微服务框架,用于实现微服务之间的通信. spr ...
随机推荐
- ASP.NET Core应用程序的参数配置及使用(转载)
本文结构 提前准备 参数配置方式 appsettings.json 环境变量 命令行参数 在控制器中使用配置参数 注入IConfiguration对象 注入IOptions对象 总结 应用程序的开发不 ...
- C# SQl通过对视图数据二次查询,统计数据
问题描述: 原数据---------需要在原视图数据中,统计出每个Device_Num设备号下面的交易的总额和分别统计出微信支付宝的交易总额. 解决:从上图数据没办法使用直接查询出要求的数据. .1. ...
- (原创)C#监控软件通信模型
直接操作现场的设备是PLC,不是服务器和客户端.所以,以PLC为核心分析设备故障以及在PC端的C#程序中加入故障处理代码. PC端读和写PLC哪个重要?写重要.因为写会影响PLC的寄存器值,进而影响工 ...
- web和网络基础
TCP/IP 协议族按层次分别分为以下 4 层: 应用层. 传输层. 网络层和数据链路层 把 TCP/IP 层次化是有好处的. 比如, 如果互联网只由一个协议统筹, 某个地方需要改变设计时, 就必须把 ...
- ISO模型学习
PDU:协议数据单元是指层次之间传递的数据单位 物理层PDU :PDU是数据位 bit数据链路层的PDU是数据帧frame网络层的PUD是数据包 packet传输层的PDU是数据段 segment其他 ...
- C#的静态类
静态类 静态类与非静态类的重要区别在于静态类不能实例化,也就是说,不能使用 new 关键字创建静态类类型的变量.在声明一个类时使用static关键字,具有两个方面的意义:首先,它防止程序员写代码来实例 ...
- Laravel - Method [xxx] does not exist on [xxx]
The controller is existing, and the method 'test' exist on 'App\Http\Controllers\Admin\IndexControll ...
- windows定时器编程
目前,Windows下的定时器编程主要有三种方式. 1)SetTimer定时器是利用Windows窗口消息WM_TIMER来实现的.使用方法非常简单,SetTimer创建定时器,KillTimer销毁 ...
- SqlServer中的更新锁(UPDLOCK和READPAST)
UPDLOCK和READPAST,通过UPDLOCK和READPAST的结合我们能够解决许多问题,比如我当前项目中对于更新预约人数,则用到了UPDLOCK和READPAST,因为考虑到并发如果固定预约 ...
- 文件上传与下载,PDF与Excel的操作
1.文件上传 前端代码 <el-upload class="upload-demo" ref="upload" :action="actionU ...