virt-install創建虛擬機並制作成模板


一、使用virt-install創建新的虛擬機

virt-install --name CentOS7.6-template --ram 2048 --vcpu=2 --virt-type kvm --cdrom=/Data/kvm/iso/CentOS-7.6-x86_64-DVD-1810.iso \
--disk /Data/kvm/img/test/CentOS7.6-template.qcow2,size=50,bus=virtio --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole

# 命令解釋:
--name                # 虛擬機名稱,需全局惟一
--ram                 # 虛擬機內在大小,單位為MB
--vcpu                # VCPU個數及相關配置
--virt-type               # 使用的hypervisor,如kvm、qemu、xen等;所有可用值可以使用virsh capabilities命令獲取;
--cdrom                # 光盤安裝介質
--disk /Data/kvm/img/test/CentOS7.6-template.qcow2,size=50,bus=virtio               # 指定存儲設備及其屬性
--network bridge=br1        # 將虛擬機連入宿主機的網絡中
--graphics vnc,listen=0.0.0.0   # 使vnc可以連接
--noautoconsole           # 禁止自動連接至虛擬機的控制台

使用命令創建完成之后,查到vnc端口是5901,如果是第一次安裝默認是5900

 使用vnc連接並安裝系統

 為統一網卡的名稱為eth0所以要進行如下配置:

1. 選擇“Install Centos 72. 按Tab,打開kernel啟動選項后,增加 net.ifnames=0 biosdevname=0

 方案一:系統磁盤大小50G;最小化安裝配置,磁盤分區因為是虛擬機,為了不影響性能,只創建/根分區,不創建SWAP分區

 方案二:系統磁盤大小20G;再按需求掛載數據盤到系統的/Data目錄下;

二、系統層面初始化配置

2.1 安裝完成之后啟動虛擬機,先通過vnc連接

virsh start CentOS7.6-template

2.2 連接上之后啟動服務serial-getty@ttyS0.service,以便宿主機能使用console命令連接

systemctl start serial-getty@ttyS0.service
systemctl enable serial-getty@ttyS0.service

2.3 關閉firewalld和NetworkManager服務

systemctl stop firewalld
systemctl stop NetworkManager
systemctl disable firewalld
systemctl disable NetworkManager

2.4 禁用SELinux服務

setenforce 0
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config

2.5 配置網卡和DNS信息,ifcfg-eth0只保留如下幾行,一定要刪除UUID,或者手動指定IP需要時再進行替換

# 配置網卡信息
cat
/etc/sysconfig/network-scripts/ifcfg-eth0 TYPE=Ethernet BOOTPROTO=dhcp NAME=eth0 DEVICE=eth0 ONBOOT=yes

# 配置DNS
cat /etc/resolv.conf
nameserver 114.114.114.114
nameserver 223.5.5.5

# 修改主機名
hostnamectl set-hostname 192-168-5-29

2.6 配置epel源安裝常用軟件

rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
yum install -y net-tools vim lrzsz tree screen lsof tcp wget tcpdump nc mtr nmap openssl-devel ntpdate glances bash-completion psmisc

2.7 配置文件描述符數量

echo "* soft nofile 65535" >> /etc/security/limits.conf
echo "* hard nofile 65535" >> /etc/security/limits.conf
echo "* soft nproc 65535" >> /etc/security/limits.conf
echo "* hard nproc 65535" >> /etc/security/limits.conf

2.8 設置記錄歷史命令

echo 'export HISTTIMEFORMAT=" %F %T `whoami` "' >> /etc/profile
source /etc/profile

2.9 如果內網沒有ntpd服務可以同步公網的時間

crontab -e
*/5 * * * * /usr/sbin/ntpdate time1.aliyun.com

2.10 可以配置一些內核參數的優化,參見鏈接

https://www.cnblogs.com/cyleon/p/10309969.html
cat /etc/sysctl.conf 
# 表示套接字由本端要求關閉,這個參數決定了它保持在FIN-wAIT-2狀態的時間,默認值是60秒,建議調整為2,該參數對應系統路徑為:/proc/sys/net/ipv4/tcp_fin_timeout 60
net.ipv4.tcp_fin_timeout = 2

# 表示開啟TCP鏈接中TIME_WAIT sockets的快速回收,該參數對應系統路徑為:/proc/sys/net/ipv4/tcp_tw_recycle,默認為0 表示關閉,不建議開>啟,因為nat網絡問題
net.ipv4.tcp_tw_reuse = 1

# reuse和recycle這倆個參數是為防止生產環境下web,squid等業務服務器time_wait網絡狀態數量過多設置的
net.ipv4.tcp_tw_recycle = 0

#表示開啟SYN Cookies功能,當出現SYN等待隊列溢出時,啟用Cookies來處理,可防范少量SYN攻擊,該參數對應系統路徑為:/proc/sys/net/ipv4/tcp_syscookies,默認為1,表示開啟
net.ipv4.tcp_syncookies = 1

# 關閉ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

# 避免放大攻擊
net.ipv4.icmp_echo_ignore_broadcasts = 1

#允許系統打開的端口范圍,不建議從1024開始,因為某些端口會存在10000以內。一般情況下已夠用。
net.ipv4.ip_local_port_range = 10000    65000

2.11 允許root可以ssh登錄

# 打開允許root允許ssh登錄
sed -i 's#\#PermitRootLogin yes#PermitRootLogin yes#g' /etc/ssh/sshd_config 

# 安全配置可設置hosts.all和hosts.deny
cat /etc/hosts.allow
##IDC LAN ip
sshd:192.168.5.0/255.255.255.0
sshd:10.0.0.1/255.255.255.0

cat /etc/hosts.deny
sshd:all

# 重啟sshd服務
systemctl restart sshd

2.12 修改緩存、清理歷史命令

yum clean all
yum makecache
history -c

2.13 將ansible的公鑰推入模板中

[root@ansible ~]# ssh-copy-id -i .ssh/id_dsa.pub root@192.168.5.29

2.14 最后關機做成模板

三、使用模板創建虛擬機

可以制作多個不同的模板,按業務環境需求,直啟動。

或者模板創建完成之后再使用salt-stack或ansible按需求進行初始化配置。

cp /Data/kvm/img/test/CentOS7.6-template.qcow2 /Data/kvm/img/test/node-192.168.5.90-test.qcow2
virt-install --name node-192.168.5.90-test --ram 4096 --vcpu=2 --virt-type kvm --disk /Data/kvm/img/test/node-192.168.5.90-test.qcow2,bus=virtio --network bridge=br1,model=virtio --import --noautoconsole

 


免責聲明!

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



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