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. Win 10下安装 Redis

    目录 写在前面 一.安装环境 二.下载windows版本的Redis 三.安装Redis 四.安装服务 五.启动服务 六.测试Redis 七.常用的Redis服务. 写在前面 Redis 是一个开源使 ...

  2. Maven中 jar包冲突原理与解决办法

    Maven中jar包冲突是开发过程中比较常见而又令人头疼的问题,我们需要知道 jar包冲突的原理,才能更好的去解决jar包冲突的问题.本文将从jar包冲突的原理和解决两个方面阐述Maven中jar包冲 ...

  3. Python - 实现矩阵转置

    有个朋友提出了一个问题:手头上现在有一个二维列表,比如[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]],现在要把该二维列表变成为[[1, 4, 7, 10 ...

  4. 44、css实现水波纹效果

    <div class="container"> <div class="wave"><span>50%</span&g ...

  5. Android ADB关闭Selinux ( adb shell setenforce 0 )

    adb shell setenforce 0 setenforce 0:设置SELinux 成为permissive模式 临时关闭selinux的 在eng/userdebug版本中使用setenfo ...

  6. Nginx学习(二)

    ------------恢复内容开始------------ Nginx配置文件 主配置文件结构:四部分 main block:主配置段,既全局配置段,对Http,mail都有效 event{ }事件 ...

  7. flask ajax发送请求返回400

    在flaskWTF使用csrf保护后,一般提交form表单都需要一个隐藏的csrf 这样可以成功提交,但是使用ajax提交时就不能成功提交,会返回400错误,服务器无法理解请求,这样就需要新的方法解决 ...

  8. /bin/false 和 /usr/sbin/nologin

    比较常用的用法: #添加一个不能登录的用户 useradd -d /usr/local/apache -g apache -s /bin/false apache 要拒绝系统用户登录,可以将其shel ...

  9. [FreeRTOS].FreeRTOS CortexM3 M4中断优先级设置总结

    转自:https://blog.csdn.net/xukai871105/article/details/53516857 前言本文将说明在FreeRTOS嵌入式操作系统中,如何设置STM32 Cor ...

  10. SQL注入(2)

    SQL注入id  title  content  time  author select * from news where id = 1; select 1,2,3,4,5,6 from table ...