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原理的更多相关文章

  1. Android启动篇 — init原理(二)

    ========================================================          ================================== ...

  2. Android启动篇 — init原理(一)

    ========================================================          ================================== ...

  3. Android 7.0 启动篇 — init原理(二)(转 Android 9.0 分析)

    ========================================================          ================================== ...

  4. Android 7.0 启动篇 — init原理(一)(转 Android 9.0 分析)

    ========================================================          ================================== ...

  5. 拜托!面试请不要再问我Spring Cloud底层原理[z]

    [z]https://juejin.im/post/5be13b83f265da6116393fc7 拜托!面试请不要再问我Spring Cloud底层原理 欢迎关注微信公众号:石杉的架构笔记(id: ...

  6. openstack cloud init set password

    设置代理和password #!/bin/bash cd /home/ubuntu wget otcloud-gateway.bj.intel.com/script.tar.gz ]; then cu ...

  7. Spring Cloud底层原理(转载 石杉的架构笔记)

    拜托!面试请不要再问我Spring Cloud底层原理 原创: 中华石杉 石杉的架构笔记   目录 一.业务场景介绍 二.Spring Cloud核心组件:Eureka 三.Spring Cloud核 ...

  8. [转帖]Spring Cloud底层原理

    拜托!面试不要再问我Spring Cloud底层原理 https://mp.weixin.qq.com/s/ZH-3JK90mhnJPfdsYH2yDA 毫无疑问,Spring Cloud 是目前微服 ...

  9. 拜托!面试请不要再问我Spring Cloud底层原理

    概述 毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术.不过大多数讲解还停留在对Spring Cloud功能使用的层面,其底层的很多原理,很多人可能并不知晓 ...

  10. spring cloud bus原理总结

    1.spring cloud bus spring cloud是按照spring的配置对一系列微服务框架的集成,spring cloud bus是其中一个微服务框架,用于实现微服务之间的通信. spr ...

随机推荐

  1. ftp搭建后外网无法连接和访问阿里云服务器(非软件)

    阿里云服务器由于性价比高,是不少企业建站朋友们的首选.而在购买阿里云服务器后,不少客户反映其在搭建FTP后出现外网无法访问的问题,这里特意搜集整理了关于ftp搭建后外网无法连接和访问的问题,提供以下解 ...

  2. 在.Net Core中使用Swagger制作接口文档

    在实际开发过程中后台开发人员与前端(移动端)接口的交流会很频繁.所以需要一个简单的接口文档让双方可以快速定位到问题所在. Swagger可以当接口调试工具也可以作为简单的接口文档使用. 在传统的asp ...

  3. 【转载】C#中ArrayList集合类使用Add方法添加元素

    ArrayList集合是C#中的一个非泛型的集合类,是弱数据类型的集合类,可以使用ArrayList集合变量来存储集合元素信息,任何数据类型的变量都可加入到同一个ArrayList集合中,因此使用Ar ...

  4. Cheat Engine 基本用法

    打开游戏 当前血量2620 打开Cheat Engine 扫描2620 掉点血 再次扫描2600 此时,会根据第一次扫描结果,再次扫描 扫描成功 将数据放到修改区,点击箭头 修改数据 双击Value进 ...

  5. grub破解和bios加密

    grub破解通过单用户模式,可以实现修改密码 grub加密以后,只能通过bios解除grub密码,方法如下 进入bios 修改启动方式,从CD启动 加载系统镜像,原系统默认挂载到/mnt/sysima ...

  6. tail: inotify cannot be used, reverting to polling: Too many open files

    tail -f catalina.out 出现警告: tail: inotify cannot be used, reverting to polling: Too many open files l ...

  7. JVM垃圾回收器理论分析与详解【纯理论】

    继续上次[https://www.cnblogs.com/webor2006/p/10740084.html]的理论继续..有点吐血的感觉,都不知道学了这么一大堆理论有何实际意义,本身JVM就是个理论 ...

  8. Educational Codeforces Round 67 D. Subarray Sorting

    Educational Codeforces Round 67 D. Subarray Sorting 传送门 题意: 给出两个数组\(a,b\),现在可以对\(a\)数组进行任意次排序,问最后能否得 ...

  9. MySQL定义char和varchar类型,utf8编码,则最大值为多少?

    有道面试题:若一张表中只有一个字段VARCHAR(N)类型,utf8编码,则N最大值为多少?先明白计算的一些规则限制 4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只 ...

  10. xz格式解压

    1.安装xz命令 yum install xz -y 2.将xz文件解压为tar文件 xz -d example.tar.xz 3.将tar文件解压 tar xf example.tar 如果无法安装 ...