KVM虚拟机配置静态IP(四):Centos7

2023-05-16

该系列文章为制作KVM虚拟机镜像的同时配置静态IP,为用户直接提供好固定IP,无需手动配置

系列文章目录

  1. Ubuntu16.04
  2. Ubuntu18.04
  3. Centos6
  4. Centos7

文章目录

  • 系列文章目录
  • 软件环境
  • 一、安装Centos7
  • 二、镜像定制化
    • 1. 关闭防火墙
    • 2. 关闭selinux
    • 3. 使用qemu-ga管理虚拟机
    • 4. 配置console
  • 三、进行静态IP配置
    • 1. 安装cloud-init
    • 2. 重命名其他配置文件
    • 3. 修改cloud-init配置文件
    • 4. 编写网络配置脚本文件
  • 四、将虚拟机制作成镜像
    • 1. 清理镜像内的缓存信息
    • 2. 压缩镜像文件
    • 3. KVM虚拟机配置静态IP——Centos7配置完成
  • 参考内容


软件环境

  • 服务器操作系统:Ubuntu 16.04
  • 内核版本:4.15.0-142-generic
  • QEMU版本:2.5.0
  • virt-manager版本:1.3.2

一、安装Centos7

在搭建好KVM环境的服务器上通过Centos7的iso文件安装好一台虚拟机

二、镜像定制化

1. 关闭防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service

2. 关闭selinux

编辑/etc/selinux/config文件,并修改以下内容

SELINUX=disabled

3. 使用qemu-ga管理虚拟机

安装配置完以下软件后关闭虚拟机

yum install qemu-guest-agent
systemctl start qemu-guest-agent 
systemctl enable qemu-guest-agent

在服务器上修改虚拟机的xml文件

sudo virsh edit centos7(虚拟机名称)

在xml文件中添加以下内容后重启虚拟机

<channel type="unix">
  <source mode="bind"/>
  <target type="virtio" name="org.qemu.guest_agent.0"/>
</channel>

在服务器上测试qemu-ga是否可以使用,执行以下命令看是否能输出虚拟机的IP地址

sudo virsh qemu-agent-command centos7(虚拟机名称) '{"execute":"guest-network-get-interfaces"}'

4. 配置console

在虚拟机进行以下配置

  • 修改/etc/default/grub文件,添加console=ttyS0,115200到GRUB_CMDLINE_LINUX参数
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet console=ttyS0,115200”
  • 在虚拟机中执行以下命令后重启虚拟机
systemctl start serial-getty@ttyS0.service
systemctl enable serial-getty@ttyS0.service
  • 测试console是否能用,在服务器中执行以下命令看能否连接到虚拟机
sudo virsh console centos7(虚拟机名称)

三、进行静态IP配置

主要的思路主要是通过cloud-init工具,在虚拟机创建的时候进行初始化操作,执行脚本文件配置自动配置静态IP,以下操作在虚拟机中完成

1. 安装cloud-init

yum install cloud-init

2. 重命名其他配置文件

进入/etc/cloud/cloud.cfg.d,将该目录的所有以.cfg结尾的文件重命名,这样做的原因为cloud-init在执行初始化的时候会执行/etc/cloud/下所有以.cfg结尾的文件,并以最后一个为准,所以其他文件会导致我们的配置文件执行失败

sudo mv 05_logging.cfg 05_logging.cfg.bak

3. 修改cloud-init配置文件

进入/etc/cloud/,备份并修改cloud.cfg文件

sudo cp cloud.cfg cloud.cfg.bak
sudo vim cloud.cfg

将cloud.cfg中的所有内容修改为以下内容,该文件以yaml格式为准,需要注意格式

datasource_list: [ None ]

runcmd: 
  - sh /etc/cloud/network_static.sh

# The modules that run in the 'init' stage
cloud_init_modules:
 - migrator
 - seed_random
 - bootcmd
 - write-files
 - growpart
 - resizefs
 - disk_setup
 - mounts
 - set_hostname
 - update_hostname
 - update_etc_hosts
 - ca-certs
 - rsyslog
 - users-groups
 - ssh

# The modules that run in the 'config' stage
cloud_config_modules:
# Emit the cloud config ready event
# this can be used by upstart jobs for 'start on cloud-config'.
 - emit_upstart
 - snap
 - ssh-import-id
 - locale
 - set-passwords
 - grub-dpkg
 - apt-pipelining
 - apt-configure
 - ubuntu-advantage
 - ntp
 - timezone
 - disable-ec2-metadata
 - runcmd
 - byobu

# The modules that run in the 'final' stage
cloud_final_modules:
 - package-update-upgrade-install
 - fan
 - landscape
 - lxd
 - ubuntu-drivers
 - puppet
 - chef
 - mcollective
 - salt-minion
 - reset_rmc
 - refresh_rmc_and_interface
 - rightscale_userdata
 - scripts-vendor
 - scripts-per-once
 - scripts-per-boot
 - scripts-per-instance
 - scripts-user
 - ssh-authkey-fingerprints
 - keys-to-console
 - phone-home
 - final-message
 - power-state-change

以下为部分重要内容的解释:

1. datasource_list: [ None ]:设置获取源信息的数据源为空,如果不设置,则默认到外网下载,会导致虚拟机初始化失败
2. runcmd: 在配置模块中执行以下命令,即在初始化的时候执行我们编写的网络配置脚本文件进行静态IP配置
    - sh /etc/cloud/network_static.sh

4. 编写网络配置脚本文件

进入/etc/cloud,创建network_static.sh脚本文件并写入以下内容:

interface=eth0
ip=$(ifconfig $interface | grep inet | grep -v 127.0.0.1 | grep -v inet6 | awk -F " " '{print $2}')
mask=$(ifconfig $interface | grep netmask | awk -F " " '{print $4}')
route=$(route -n | grep $interface | awk 'NR==1' | awk '{print $2}')

echo "DEVICE=$interface
BOOTPROTO=static
IPADDR=$ip
NETMASK=$mask
GATEWAY=$route
ONBOOT=yes
TYPE=Ethernet
DNS1=8.8.8.8" | tee /etc/sysconfig/network-scripts/ifcfg-eth0 | cat > /dev/null

service network restart

该脚本适用于虚拟机包含单个网卡的情况,多块网卡没有进行测试,其中interface参数需要根据自己的实际情况进行修改,进行以上操作后关闭虚拟机

四、将虚拟机制作成镜像

在服务器上执行以下操作进行标准镜像的创建

1. 清理镜像内的缓存信息

sudo virt-sysprep -d centos7(虚拟机名称)

2. 压缩镜像文件

进入到虚拟机镜像存储的位置,进行压缩操作

sudo virt-sparsify --compress centos7.qcow2 Centos7.qcow2

3. KVM虚拟机配置静态IP——Centos7配置完成

参考内容

  1. Centos镜像定制:链接
  2. cloud-init使用:链接
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

KVM虚拟机配置静态IP(四):Centos7 的相关文章

  • 云安全技术——kvm虚拟化技术

    目录 10 1 kvm简介 10 2 在CentOS 7 图形化界面下安装KVM 使用IDEA开发读写MySQL数据库程序 实验目的 了解 CentOS7图形化界面的部署方法 了解 KVM的组成和作用 了解 KVM的技术架构 了解KVM的安
  • Qemu-KVM基本工作原理分析

    1 理解KVM与Qemu的关系 我们都知道开源虚拟机KVM 并且知道它总是跟Qemu结合出现 那这两者之间有什么关系呢 首先 Qemu本身并不是KVM的一部分 而是一整套完整的虚拟化解决方案 它是纯软件实现的 包括处理器虚拟化 内存虚拟化以
  • 使用 JeMalloc 查找 Java 应用程序中的本机内存泄漏

    目前我正在尝试解决 Java 内存问题 我的 Java 应用程序不断使用越来越多的内存 最终它被 Linux OOM 杀手杀死 很可能是本地内存泄漏 因为经过检查 使用 VisualVM 的 JVM 的元空间和堆看起来都不错 使用top命令
  • Jenkins 中的 Android 模拟器

    我尝试在 Jenkins 中使用 Android 模拟器 我遵循这个指南 詹金斯插件 我在无头构建机器 CentOS 上完成此操作 我尝试从詹金斯创建模拟器 就像示例一样 当我尝试像这个例子一样做 但是在我的版本中 我从詹金斯那里得到了这个
  • 使用 crontab/cron 安排 python 3.6 脚本

    我只是在我的 Centos 开发服务器上设置一个 crontab job 在我的 crontab 中 我有以下内容 忽略时间设置 这是在 UTC 服务器时间 15 32 左右添加的 只是为了获得下一次计划运行 34 15 cd welcom
  • xinetd 服务调用 python 脚本(无法正确执行)

    我读到了这个 您可以使用 xinetd 添加启动 python 脚本的服务 标准输入和输出将通过网络在所需端口上传输 因此您不需要修改脚本 input raw input 和 print 方法可以正常工作 因此 当建立到 192 168 2
  • KVM/桥接器:没有到主机的路由

    我已经在 Fedora 17 上使用 KVM 设置了虚拟机 并为 KVM 配置了桥接网络 主机和虚拟机均采用手动IP配置 主机IP为192 168 0 2 虚拟机IP为192 168 0 10 从虚拟机我可以毫无问题地连接到主机 但从主机我
  • 在 Apache Web 服务器上部署 Angular 4 应用程序

    我想在我的 Apache Web 服务器上部署我的 Angular 应用程序 我已经添加了一个 htaccess文件到我的 var www html文件夹中 我尝试了几个base hrefs 但和很多人一样 我在路由方面也遇到了问题 我只能
  • Centos 7 上phpMyAdmin无法登录MySQL服务器

    我安装了mysql community server 8 0 13 1 el7 x86 64在带有 Nginx 的 Centos 7 上 并添加了 phpMyAdmin 来管理数据库 但我不断收到错误Cannot log in to the
  • x86 PIC,QEMU 在所有 CPU 上引发中断是否正确?

    我最近不得不解决 x86 PIC 的专有操作系统问题 其中操作系统预期定时器中断仅在 CPU0 上 我启用了 IO APIC 来解决这个问题并进行了 CPU 控制 因此中断仅到达 CPU0 问题解决了 有人告诉我 我们的硬件已经损坏 无法做
  • Xen、QEMU 和 KVM 之间有什么区别?

    我知道Xen使用QEMU 而KVM是QEMU的一个分支 那么 KVM 包括 Xen 添加到 QEMU 中吗 是什么名字 Thanks QEMU 是一个功能强大的模拟器 这意味着它可以模拟多种处理器类型 Xen 使用 QEMUHVM http
  • 在 Centos 7 上安装 Node JS 4.8 则安装 6.11

    目前我尝试在我的 Centos 7 64 位机器上安装 Node Js 特定版本 4 8 使用以下命令 curl sL https rpm nodesource com setup 4 x bash yum install y nodejs
  • 如何在 CentOS 7 中为终端创建键盘快捷键

    刚刚在我的笔记本电脑上安装了 CentOS 7 这个新版本的 CentOS 与旧版本有很大不同 我无法以旧方式为终端创建键盘快捷键 有人知道怎么做吗 Go to Settings gt gt gt keyboard gt gt gt Sho
  • 通过 nginx 访问时,php 在 /tmp/systemd-private-nABCDE/tmp 中有自己的 /tmp

    我发现奇怪的行为php and tmp文件夹 Php 在使用时使用另一个文件夹 tmp PHP 5 6 7 nginx php fpm 我以两种方式执行相同的脚本 通过浏览器和通过 shell 但是当通过浏览器启动时 文件不是真实的 tmp
  • Centos 7 中 mysqld.service 作业失败

    OS Centos 7 Linux 3 10 0 229 el7 x86 64 MySQL mysql57 community release el7 7 noarch rpm 我通过安装MySQL服务器yum 当我跑步时systemctl
  • centos7中的Qt版本

    我使用的是centos 7 要检查安装的qt版本 我使用命令qmake version返回 Qmake version 1 07a Qt 3 3 8b Qmake is free software from Trolltech ASA 但是
  • 是什么导致我的 SDL2 程序中出现杂散像素?

    我发现使用 SDL2 绘制的对象上附加了很多杂散像素 添加额外像素的对象包括线条 填充矩形以及转换为纹理的 TTF 文本 这SDL RenderFillRect https wiki libsdl org SDL RenderFillRec
  • HRegionServer 显示“错误告诉主机我们已经启动”。显示套接字异常:参数无效

    我正在尝试在 3 台 centos 机器上创建一个 hbase 集群 Hadoop v 2 8 0 已启动并在我配置的 HBase v 1 2 5 上运行 Hbase 启动正常 它启动了 HMaster 和区域服务器 但仍然在区域服务器和
  • x86 平台中的 KVM 影子页表处理

    据我了解 在没有硬件支持来宾虚拟到主机物理地址转换的处理器上 KVM 使用影子页表 当来宾操作系统修改其页表时 会构建和更新影子页表 硬件中有没有专门的指令 以x86为参考 来修改页表 除非有特殊说明 否则不会对VMM 造成陷阱 Linux
  • 如何使用 hostPath 将单个文件映射到 kubernetes pod 中?

    我有一个自己的 nginx 配置 home ubuntu workspace web conf由脚本生成 我更喜欢把它放在下面 etc nginx conf d除了default conf 下面是nginx yaml apiVersion

随机推荐

  • linux命令之数据库操作

    五 数据库操作 1 mysql 重新启动 sudo etc init d mysql restart ps 看 etc mysql my conf 下的log的配置信息 一般在 var log mysql error log 2 mysql
  • Word删除单独页页眉与分节处理

    通常在word中处理页眉页脚时 xff0c 我们会发现一删全删 xff0c 一改全变的情况 xff0c 而网上方案往往难以解决且晦涩难懂 xff0c 因此 xff0c 将方法分享一下 xff0c 希望大家一看便懂 xff08 本文以遇到的三
  • Threat of Adversarial Attacks on Deep Learning in Computer Vision: A Survey 论文阅读笔记

    本文是论文的阅读笔记 Paper A Threat of Adversarial Attacks on Deep Learning in Computer Vision A Survey Author Naveed Akhtar cor n
  • ubuntu20.04安装skopeo

    文章目录 1 先安装好go环境2 配置环境3 安装skopeo3 1 安装依赖3 2 获取项目 xff0c 并进行编译3 3 构建文档3 4 安装3 5 验证 4 注意 1 先安装好go环境 如何安装go环境 xff0c 最好选择系统范围内
  • go get得到的东西不在$GOPATH中

    最近在ubuntu20 04上安装oci image tool xff0c 按照官方文档执行 xff0c 结果第一步就发现go get得到的东西找不到 xff0c 后来查阅了这篇博客 xff0c 发现了原因 xff0c 是因为开了gopro
  • 容器镜像加密-containerd imgcrypt实践

    最近在研究容器镜像加密 xff0c 发现国内对容器镜像这部分的博客好像不太多 xff0c 在看了一些人的博客后 xff0c 跟着他们的步骤进行了containerd imgcrypt的实践 xff0c 期间出现了一些错误 xff0c 决定记
  • ubuntu20.04安装howdy

    howdy是一款用于Linux系统的人脸识别身份验证系统 xff0c 可以看作是Windows中的Windows Hello的替代品 xff0c howdy在安装的过程中会去外网下载一些安装包 xff0c 所以前提条件是有访问外网的手段 h
  • zipimport.ZipImportError: can‘t decompress data; zlib not available

    在Ubuntu16 04上通过pyenv安装python3 6 8时出现以下错误 xff0c 记录一下 ubuntu 64 ubuntu pyenv span class token function install span 3 6 8
  • Ubuntu16.04安装zabbix4.0

    以下教程为Ubuntu16 04安装zabbix4 0 xff0c 需提前自己安装好Mysql数据库 其中第1 7点为主节点安装配置Zabbix server Zabbix agent Web前端 xff0c 第8点不用进行 xff1b 第
  • Ubuntu16.04搭建gitea1.14.1

    以下教程为在Ubuntu16 04上搭建gitea1 14 1 xff0c 同时附上官方教程链接 文章目录 1 数据库准备1 1 登录数据库1 2 创建gitea用户1 3 创建gitea数据库1 4 给gitea用户赋予数据库的权限1 5
  • ubuntu16.04搭建spice-html5用于配合KVM

    文章目录 0 配置需求1 启动spice客户端2 配置websockify3 配置spice html54 浏览器访问 0 配置需求 Firefox或Chrome浏览器 xff0c IE浏览器也可以 xff0c 但是效果不是太好 WebSo
  • python 数据挖掘中的数值计算

    一 环境安装 环境配置 xff1a OS xff1a Red Hat 4 4 7 11 查看命令 xff1a uname a xff1a 电脑以及操作系统的相关信息 cat proc version xff1a 正在运行的内核版本 cat
  • 银河麒麟下libguestfs-tools中virt工具无法使用情况

    银河麒麟下libguestfs tools中virt工具无法使用情况 问题描述 xff1a 在银河麒麟高级服务器版本V10下安装libguestfs tools工具包后 xff0c 使用virt xx等一系列命令都会出现以下错误 xff1a
  • ubuntu16.04搭建containerd

    本博客具体介绍在ubuntu16 04下安装containerd的过程 xff0c 有关ctr的命令都要有root权限才能运行 搭建过程 下载containerd安装包解压containerd安装包到根目录下启动containerd并设置开
  • KVM安装Windows11系列(一)

    本教程系列为KVM安装Windows11 xff0c 会分成两部分 xff0c 第一部分会跳过Windows11的硬件要求TPM和安全启动 xff0c 第二部分会安装TPM模拟器进行模拟 文章目录 软件环境下载Windows11镜像和驱动创
  • 容器技术对比(Docker/LXC/LXD/Multipass)

    DockerLXCLXDMultipass基本介绍为了打破 程序即应用 的观念 xff0c 通过镜像imges将作业系统核心除外 xff0c 运作应用程序所需的系统环境 xff0c 由下而上打包 xff0c 达到应用程序跨平台间的无缝接轨运
  • KVM虚拟机配置静态IP(一):Ubuntu16.04

    该系列文章为制作KVM虚拟机镜像的同时配置静态IP xff0c 为用户直接提供好固定IP xff0c 无需手动配置 系列文章目录 Ubuntu16 04Ubuntu18 04Centos6Centos7 文章目录 系列文章目录软件环境一 安
  • KVM虚拟机配置静态IP(二):Ubuntu18.04

    该系列文章为制作KVM虚拟机镜像的同时配置静态IP xff0c 为用户直接提供好固定IP xff0c 无需手动配置 系列文章目录 Ubuntu16 04Ubuntu18 04Centos6Centos7 文章目录 系列文章目录软件环境一 安
  • KVM虚拟机配置静态IP(三):Centos6

    该系列文章为制作KVM虚拟机镜像的同时配置静态IP xff0c 为用户直接提供好固定IP xff0c 无需手动配置 系列文章目录 Ubuntu16 04Ubuntu18 04Centos6Centos7 文章目录 系列文章目录软件环境一 安
  • KVM虚拟机配置静态IP(四):Centos7

    该系列文章为制作KVM虚拟机镜像的同时配置静态IP xff0c 为用户直接提供好固定IP xff0c 无需手动配置 系列文章目录 Ubuntu16 04Ubuntu18 04Centos6Centos7 文章目录 系列文章目录软件环境一 安