制作linux雲主機鏡像


制作linux雲主機鏡像

1、物理機環境准備

使用一台物理機來配置 kvm 環境,需要 cpu 支持 intel VT 等硬件虛擬化功能。

建議安裝CentOS 7操作系統,確保網絡及軟件源配置正確。

判斷是否支持虛擬化功能命令:確認有結果輸出。則表示該機器支持或已配置 intel VT vmx(intel)或 svm(AMD) 支持虛擬技術。

# 判斷是否有已經支持虛擬化
cat /proc/cpuinfo | grep vmx

安裝虛擬機化相關的軟件包

yum install libvirt qemu-kvm virt-install bridge-utils qemu-img libguestfs -y

啟動虛擬化服務

systemctl start libvirtd

2、安裝kvm虛擬機

准備ISO鏡像

/tmp/CentOS-7-x86_64-Minimal-1810.iso

創建一塊raw格式的硬盤

# 根據鏡像中軟件多少決定鏡像大小
# 盡可能使用較小的 disk,小的鏡像可以適配更大的 flavor
# 通常 Linux 基礎鏡像 4G 即可
qemu-img create -f raw /tmp/centos-7.6.raw 4G

啟動kvm虛擬機

virt-install --virt-type kvm --name centos-7.6 --ram 1024 \
   --disk /tmp/centos-7.6.raw,format=raw \
   --network network=ovs-external \
   --graphics vnc,listen=0.0.0.0 --noautoconsole \
   --os-type=linux --os-variant=rhel7 \
   --location /tmp/CentOS-7-x86_64-Minimal-1810.iso\
   --extra-args  'console=ttyS0,115200n8  serial' 
# console=ttyS0,115200n8  serial 這個參數,為了使用virsh console 連接虛擬機;無此參數,將不能使用virsh console 去連接

--disk 指定format格式,將虛擬硬盤制作成raw格式的。

# 查看當前虛機
virsh list --all
# 使用 virsh 從 console 登入機器
virsh console centos-7.6   
# 啟動虛擬機
virsh start centos-7.6
# 查看vnc端口
virsh vncdisplay centos-7.6
# 使用vnc viewer 軟件去連接

3、操作虛擬機

安裝軟件包

# 安裝NetworkManager,用於網卡的自動發現及管理
# 安裝acpid,用於虛擬機的電源管理
# 安裝epel-release,添加epel源
yum install NetworkManager acpid epel-release
# 開機啟動服務
systemctl enable acpid 
systemctl enable NetworkManager 

####################################################
# 安裝cloud-init,用於注入密碼/密鑰和主機名
# 安裝qemu-guest-agent,用於在面板更新密碼/密鑰
# 安裝cloud-utils,用於更改虛擬機根分區大小(可選安裝,需要啟用epel源)
yum install cloud-init qemu-guest-agent cloud-utils

# 開機啟動服務(有的linux發行版默認不開機自啟這些服務,需要手動設置開機自啟)
systemctl enable cloud-init 
systemctl enable cloud-init-local 
systemctl enable cloud-config 
systemctl enable cloud-final 
systemctl enable qemu-guest-agent    # CENTOS6 為qemu-qa

或者  
systemctl enable cloud-init cloud-init-local cloud-config  cloud-final  qemu-guest-agent

修改配置文件

disable_root: 0
ssh_pwauth:   1
locale_configfile: /etc/sysconfig/i18n
mount_default_fields: [~, ~, 'auto', 'defaults,nofail', '0', '2']
resize_rootfs_tmp: /dev
ssh_deletekeys:   0
ssh_genkeytypes:  ~
syslog_fix_perms: ~
datasource_list: ['ConfigDrive','Ec2','NoCloud']
datasource:
   Ec2:
     timeout: 2
     max_wait: 5
cloud_init_modules:
 - migrator
 - seed_random
 - bootcmd
 - write-files
 - growpart
 - resizefs
 - set_hostname
 - update_hostname
 - update_etc_hosts
 - ca-certs
 - rsyslog
 - users-groups
 - ssh
cloud_config_modules:
 - mounts
 - locale
 - set-passwords
 - timezone
 - puppet
 - chef
 - salt-minion
 - mcollective
 - disable-ec2-metadata
 - runcmd
cloud_final_modules:
 - rightscale_userdata
 - scripts-per-once
 - scripts-per-boot
 - scripts-per-instance
 - scripts-user
 - ssh-authkey-fingerprints
 - keys-to-console
 - phone-home
 - final-message
system_info:
  distro: rhel
  default_user:
    name: cloud-user
  paths:
    cloud_dir: /var/lib/cloud
    templates_dir: /etc/cloud/templates
  ssh_svcname: sshd

禁用默認的zero conf route

echo "NOZEROCONF=yes" >> /etc/sysconfig/network

修改linux 16所在行行尾,添加console字段

console=ttyS0,115200n8 console=tty0

關閉selinux服務

#修改 /etc/selinux/config 中 SELINUX 行
SELINUX=disabled

關閉開機啟動服務

systemctl  disable iptables
systemctl  disable postfix 

刪除特征性文件

# 清理臨時文件和日志
yum clean all
rm -rf /var/log/yum.log
rm -rf /var/lib/yum/*
rm -rf /root/install.log
rm -rf /root/install.log.syslog
rm -rf /root/anaconda-ks.cfg
rm -rf /var/log/anaconda*
history -c

poweroff

4、在物理機上處理鏡像

初始化kvm虛擬機

virt-sysprep -d centos-7.6

刪除虛擬機

virsh undefine centos-7.6

5、拷貝制作好的raw格式的鏡像

/tmp/centos-7.6.raw

6、發布鏡像到雲平台

[root@overcloud-controller-0 ~]# openstack image create \
  --container-format bare \
  --disk-format raw \
  --file a4230bd2-eac6-4769-beab-9ee06b08a248.raw \
  --public \
  --property hw_qemu_guest_agent=yes \
  --property image_type=distribution \
  --property os_admin_user=root \
  --property image_name_order=120 \
  --property image_label_order=100 \
  --property os_distro=centos \
  --property os_version="7.5-64bit" \
  --property image_build_version="2018-05-14-lnmp" \
  "CentOS 7.5 64bit 20180514 lnmp"
#######
hw_qemu_guest_agent=yes , 開啟qemu_guest_agent


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM