KVM虚拟机配置静态IP(三):Centos6

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

系列文章目录

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


软件环境

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

一、安装Centos6

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

二、镜像定制化

1. 更换软件源

目前Centos6已停止更新,软件源无法使用,包括阿里云,可以更换腾讯源,先备份旧配置文件

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

下载源配置

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos6_base.repo

将http替换成https

sed -i 's#http#https#g' /etc/yum.repos.d/CentOS-Base.repo

清除并重建缓存

yum clean all
yum makecache

2. 关闭防火墙

service iptables stop 
chkconfig iptables off

3. 关闭selinux

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

SELINUX=disabled

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

yum install qemu-guest-agent
service qemu-ga start

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

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

5. 配置console

在虚拟机进行以下配置

  • 修改/etc/inittab文件,在最后一行添加以下内容
S0:12345:respawn:/sbin/agetty ttyS0 115200
  • 修改/etc/grub.conf文件,添加console=ttyS0
    在这里插入图片描述
  • 修改/etc/securetty文件,并重启虚拟机
echo "ttyS0" >> /etc/securetty
  • 测试服务器是否可以控制虚拟机
sudo virsh console centos6(虚拟机名称)

三、进行静态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 '{print $2}' | tr -d "addr:")
mask=$(ifconfig $interface | grep Bcast | awk -F : '{print $4}')
route=$(route | grep 'default' | awk '{print $2}')

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

service network restart

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

四、将虚拟机制作成镜像

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

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

sudo virt-sysprep --operations defaults,-machine-id -d centos6(虚拟机名称)

这里解释一下为什么centos6的清理信息语句与其他的镜像不一样,经过测试,virt-sysprep在没有指定清理参数的情况下会默认清理默认需要清理的内容,包括machine-id,centos6在清理machine-id后启动会导致无法输入密码,因此在这里不清理machine-id这个参数

2. 压缩镜像文件

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

sudo virt-sparsify --compress centos6.qcow2 Centos6.qcow2

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

参考内容

  1. Centos镜像定制:链接
  2. cloud-init使用:链接
  3. 可用镜像源:链接
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值