Centos6.7 Openstack映象製作.md
Centos6.7 Openstack映象製作
映象需求
- 磁碟分割槽,自動resizefs(虛擬機器啟動時自動將額外分割槽擴充套件到/ cloud-init)
- 沒有硬體 MAC address information
- ssh server 執行
- 禁用防火牆、selinux
- 訪問instance use ssh public key (cloud-init)
- 接受 user-data 和metadata
- qemu-guest-agent (支援操作虛擬機器,改密碼等操作 開機自動啟動)
映象製作
環境準備
NOTE: ‘#’開頭的是root許可權執行的命令 ‘virsh #’開頭的是virsh命令列下執行的命令
硬體環境
專案 | 版本 |
---|---|
伺服器型別 | VMware虛擬機器 |
伺服器系統 | CentOS7.1503 |
伺服器網路 | 橋接模式 |
伺服器IP | 192.168.1.111 |
軟體環境
專案 | 版本 |
---|---|
hypervisor | qemu-kvm-1.5.3-141.el7_4.4 |
映象網路模式 | Bridge |
映象版本 | CentOS7.1 |
VNC客戶端 | VNC-Viewer-6.17.1113-Windows-64bit |
kvm環境搭建
軟體安裝
安裝kvm等工具
# yum install -y qemu-kvm libvirt libvirt-python \
libguestfs-tools virt-install
啟動服務
# systemctl enable libvirtd && systemctl start libvirtd
網路設定
由於我用的是VMware虛擬機器,啟動的映象也採用bridge模式會使後續的遠端連線除錯更加方便 新增網橋br0需修改ifcfg-ens33與ifcfg-br0(dhcp模式),配置如下:
# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
DEVICE="ens33"
ONBOOT="yes"
BRIDGE="br0"
# cat /etc/sysconfig/network-scripts/ifcfg-br0
TYPE="bridge"
BOOTPROTO="dhcp"
DEVICE="br0"
ONBOOT="yes"
映象製作
建立磁碟(建立將來的Openstack映象)
# qemu-img create -f qcow2 /tmp/CentOS67.qcow2 30G
啟動虛擬機器
# virt-install --name CentOS67 --vcpu 4 --ram 4096 \
--disk path=/tmp/CentOS67.qcow2 \
--network bridge=br0 \
--graphics vnc,listen=0.0.0.0 --noautoconsole \
--os-type=linux --os-variant=rhel6 \
--cdrom=/data/img/CentOS-6.7-x86_64-minimal.iso
##cdrom後面的映象需要從CentOS官網下載
連線vnc進行系統安裝系統初始化
檢視vnc埠
virsh # vncdisplay CentOS67
:0
外部連線的vnc埠為590x例如上面就為5900,以192.168.1.111:5900連線之後進行安裝系統 如果要實現分割槽自動伸縮,必須在安裝系統的時候手動將檔案系統格式配置成ext4 lvm不支援自動伸縮功能 安裝完系統之後就開始一一實現功能
基礎軟體包
yum install -y ntp vim wget net-tools tcpdump strace \
sysstat iotop pciutils lsof telnet iftop lrzsz \
unzip dos2unix ipmitool psmisc tree
基礎優化配置
echo "
* soft nproc 655360
* hard nproc 655360
* soft nofile 655360
* hard nofile 655360" >>/etc/security/limits.conf
sed -i -e "/UseDNS/c UseDNS no" /etc/ssh/sshd_config
sed -i -e "/StrictHostKeyChecking/c StrictHostKeyChecking no\nUserKnownHostsFile /dev/null" /etc/ssh/ssh_config
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# 關閉SElinux
echo "net.ipv4.ip_forward=1
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.all.rp_filter=0" >> /etc/sysctl.conf
sysctl -p
service postfix stop
service iptables stop
chkconfig --del iptables
# 禁用防火牆
chkconfig --del postfix
磁碟分割槽,自動resizefs(虛擬機器啟動時自動將額外分割槽擴充套件到/ cloud-init)
redhat系可以通過cloud-utils-growpart
工具來實現,安裝即可用***非lvm才可用***
yum install -y epel-release
yum install cloud-utils-growpart
訪問instance use ssh public key (cloud-init),安裝即可用
安裝cloud-int
預設安裝之後會把ssh密碼登陸關掉需手動開啟
yum install cloud-init -y
開啟ssh密碼登陸
- 修改
/etc/cloud/cloud.cfg
users:
- default
disable_root: 0
ssh_pwauth: 1
- 修改
/etc/ssh/sshd_config
sed -i '/^#Port/c Port 22' /etc/ssh/sshd_config
sed -i '/^PasswordAuthentication/c PasswordAuthentication yes' /etc/ssh/sshd_config
- 安裝ssh客戶端
yum install -y openssh-clients
安裝qemu-guest-agent
yum install -y qemu-guest-agent
chkconfig --add qemu-ga
接受 user-data 和metadata
保證虛擬機器能連線到openstack元資料即可,一般情況用dhcp元資料,所以用不到zeroconf route,需將zeroconf禁用掉,否則zeroconf router在虛擬機器開機時會自動生成路由169.254.0.0/16 0.0.0.0 導致無法與元資料通訊
編輯vim /etc/sysconfig/network-scripts/ifup-eth
註釋掉以下部分
if [ -z "${NOZEROCONF}" -a "${ISALIAS}" = "no" -a "${REALDEVICE}" != "lo" ]; then
ip route add 169.254.0.0/16 dev ${REALDEVICE} metric $((1000 + $(cat /sys/class/net/${REALDEVICE}/ifindex))) scope link
fi
或者
echo "NOZEROCONF=yes" >> /etc/sysconfig/network
重啟網路 service network restart
沒有硬體 MAC address information
centos6中udev rule會在伺服器啟動時生成mac地址資訊,如果不清的話eth0網絡卡將無法正常使用 做完以上操作 清除mac資訊
rm -f /etc/udev/rules.d/70-persistent-net.rules
如果網絡卡配置不是按照上面配的,網絡卡配置中也可能有mac地址 需要刪掉
以上完成,就可以清除掉操作資訊,關閉虛擬機器匯入上傳映象
清除操作痕跡
> /root/.bash_history
關閉虛擬機器
poweroff
壓縮映象,便於傳輸
qemu-img convert -c -O qcow2 CentOS67.qcow2 CentOS67_convert.qcow2
測試
映象建立完先在vmvare上啟動虛擬機器測試一下,用建立的映象啟動虛擬機器
cp CentOS67_convert.qcow2 CentOS67_convert_test.qcow2
qemu-img resize CentOS67_convert_test.qcow2 +30G
#擴容映象 驗證映象分割槽自動擴充套件功能,首次啟動之後虛擬還需重啟一次才會擴容分割槽
virt-install --name centos67 --vcpu 2 --ram 4096 \
--disk /tmp/CentOS67_convert_test.qcow2 \
--import --network bridge=br0,model=virtio \
--graphics vnc,listen=0.0.0.0 --noautoconsole
啟動之後一一驗證功能,驗證沒問題之後,上傳至openstack
上傳
- 拷貝映象到Openstack控制節點
- 轉化成raw格式 Openstack glance nova後端用ceph的話raw格式最快
qemu-img convert -f qcow -O raw CentOS67_convert_test.qcow2 CentOS67.raw
- 上傳至Openstack
source ~/keystonerc_admin
glance image-create --name centos6.7 \
--file CentOS67.raw --dish-format raw \
--container-format bare --is-public true --progress