如何使用云初始化用户数据升级 Linux 内核

Cloud-init 是一种开源软件或服务,允许用户创建自定义的云服务器和虚拟机。它由 Canonical 开发,可让您灵活地自动配置云实例。目前,它支持所有主要的 Linux 发行版,包括 Ubuntu,Debian,FreeBSD,CentOS,Fedora,Gentoo,OpenSUSE 等。所有主要的云供应商都使用它在启动时修改通用操作系统配置。

您可以使用所需的配置和软件来设置云实例,以便与 cloud-init 一起使用。云初始化服务在系统引导过程中启动,并使用云供应商提供的元数据。

Cloud-init 提供了通过用户数据执行一些常见任务的方法,例如:

  • 设置主机名
  • 设置装入点
  • 更新系统软件包和内核
  • 添加用户和组。
  • 在系统引导时运行特定命令
  • 安装和配置软件
  • 添加软件存储库
  • 重置实例并重新运行 cloud-init 而无需完全重新安装
  • 用您的用户数据覆盖 Vultr 的供应商数据。

这篇文章将解释如何使用云初始化用户数据升级 Vultr Linux 实例中的 Linux 内核。

一、创建云初始化配置文件

本节说明如何创建云初始化配置文件以升级 CentOS 7 操作系统中的 Linux 内核。

在云配置用户数据文件中编写以下代码:

#cloud-config



runcmd:

  - [ yum, "-y", --enablerepo=elrepo-kernel, install, "kernel-ml" ]

  - grub2-mkconfig -o /boot/grub2/grub.cfg

  - grub2-set-default 0



power_state:

  delay: now

  mode: reboot

  message: "Reboot after upgrading Kernel"

  condition: true

上述配置文件中每个指令的简要说明如下所示:

  • runcmd:您可以指定要在首次引导期间运行的命令列表。
  • power_state:您可以在执行指令中指定的所有命令后重新启动或关闭 Linux 实例。runcmd:
    • delay:您可以指定以分钟 (+m) 为单位的超时。
    • mode:您可以将操作指定为、或实例。poweroffhaltreboot
    • message:该过程完成后显示消息。
    • condition:以 true(始终满足)或 false(从不满足)指定条件。

当您预置新的 Vultr 实例时,cloud-init 会处理上述云配置文件,并按顺序执行以下步骤:

  1. 安装最新的主线稳定内核。
  2. 从目录中收集信息以查找新安装的 Linux 内核并生成新的配置文件。/bootgrub.cfg
  3. 将默认内核设置为最新的主线内核,以便在重新启动后引导系统。
  4. 升级 Linux 内核后重新启动系统。

二、使用云初始化用户数据升级 Vultr 实例上的内核

此时,cloud-init 配置文件已准备好升级 Linux 内核。你现在可以使用此配置文件来配置新的 CentOS 7 Vultr 实例并升级 Linux 内核。

请按照以下步骤配置 CentOS 7 Vultr 实例并升级 Linux 内核:

  1. 登录 Vultr 客户门户,如下所示:

    Vultr 仪表板屏幕

  2. 单击部署服务器按钮。
  3. 在“选择服务器”部分中选择首选服务器

    选择服务器屏幕

  4. “服务器位置”部分中选择您附近的位置。

    Choose Server Location Screen

  5. “服务器映像”部分选择一个CentOS映像和版本 7。

    Choose Server Image Screen

  6. “服务器大小”部分中选择服务器规格。

    Choose Server Size Screen

  7. 选中其他功能部分中的启用云初始化用户数据框,并以纯文本形式添加云初始化用户数据

    Add cloud-init user-data Screen

  8. 在“服务器主机名和标签”部分中定义服务器主机名和标签

    Choose Server Hostname & label Screen

  9. 单击立即部署以开始预置实例。

上述过程需要一些时间来预置实例。配置 CentOS 7 实例后,通过 SSH 登录到 CentOS 7 实例,然后执行以下命令以验证新安装的内核。

    # uname -r

您应该在以下输出中看到新的 Linux 主线内核:

6.0.8-1.el7.elrepo.x86_64

 三、排查云初始化问题

有时,云初始化并没有做你想要的事情。在这种情况下,您可以检查云初始化日志以排查问题。

云初始化主日志文件位于以下目录中:

  • /var/log/cloud-init.log
  • /var/log/cloud-init-output.log

您还可以在目录中找到更多日志。此外,您可以使用以下命令解析云初始化日志:/run/cloud-init

# cloud-init analyze -h

您可以使用以下任何子命令来解析日志:

usage: /usr/local/bin/cloud-init analyze [-h] {blame,show,dump,boot} ...



options:

  -h, --help            show this help message and exit



Subcommands:

  {blame,show,dump,boot}

    blame               Print list of executed stages ordered by time to init

    show                Print list of in-order events during execution

    dump                Dump cloud-init events in JSON format

    boot                Print list of boot times for kernel and cloud-init

 四、结论

在这篇文章中,您学习了如何使用 cloud-init 用户数据来升级 Vultr 云实例上的 Linux 内核。Cloud-init 是一个强大的工具,经常使用新模块和供应商数据源进行更新。有关更多信息,请访问云初始化官方文档。

赞(0)
未经允许不得转载:主机百科 » 如何使用云初始化用户数据升级 Linux 内核