021-制作OpenStack镜像官方文档

可参考官方文档:https://docs.openstack.org/image-guide/

 制作centos7 :https://docs.openstack.org/image-guide/centos-image.html

手动创建OpenStack镜像:

上传centos7.iso 到/tmp下

1.创建虚拟磁盘
qemu-img create -f qcow2 /tmp/centos.qcow2 10G

2.创建虚拟机

  

virt-install --virt-type kvm --name Centos7-x86_64 --ram 1024 
--cdrom=/tmp/CentOS-7-x86_64-DVD-1810.iso 
--disk path=/tmp/centos.qcow2 
--network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

  

如果不能创建的 类型换成 qemu

如报错:ERROR    主机不支持 任意虚拟化选项
原因是没有安装qemu-kvm软件包,安装即可
yum -y install qemu-kvm

创建虚拟机:网络如果选择默认:network=default  就要有虚拟桥接网卡,也就是如下:virbr0与virbr0-nic 是按装libvirt 自动创建的。


[root@linux-node1 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master brqecad9a89-d0 state UP group default qlen 1000
    link/ether 00:0c:29:d1:eb:67 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::20c:29ff:fed1:eb67/64 scope link 
       valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:7c:7b:42 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
    link/ether 52:54:00:7c:7b:42 brd ff:ff:ff:ff:ff:ff
5: tap676e4377-48@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master brqecad9a89-d0 state UP group default qlen 1000
    link/ether 66:1e:88:49:1e:ab brd ff:ff:ff:ff:ff:ff link-netnsid 0
6: brqecad9a89-d0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:0c:29:d1:eb:67 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.230/24 brd 192.168.1.255 scope global brqecad9a89-d0
       valid_lft forever preferred_lft forever
    inet6 fe80::9472:d0ff:fe29:dcc5/64 scope link 
       valid_lft forever preferred_lft forever


如果没有虚拟网络就改成如下:bridge=brqecad9a89-d0 即可
virt-install --virt-type kvm --name centos --ram 1024 
  --disk /tmp/centos.qcow2,format=qcow2 
  --network bridge=brqecad9a89-d0 
  --graphics vnc,listen=0.0.0.0 --noautoconsole 
  --os-type=linux --os-variant=centos7.0 
  --location=/tmp/CentOS-7-x86_64-DVD-1810.iso

注意:虚拟机不分交换分区

3.启动虚拟机并用vnc链接
virsh list --all
virsh start centos

4.安装默认需要的软件
配置虚拟机网络,删除UUID,ONBOOT=yes,如果不用ipv6的话就删掉,PEERNDS=yes要删掉,因为他是默认使用NetworkManager来管理的,删掉PEERROUTES=yes,删掉DEFROUNT=yes
systemctl stop NetworkManager
systemctl disable NetworkManager
systemctl start network
vim /etc/resolv.conf
ping www.baidu.com

关闭selinux,防火墙,postfix
yum install acpid
systemctl enable acpid

  

yum install net-tools tree screen wget git vim salt-minion zabbix-agent
内部yum源
内部DNS
等

设置key,编写脚本
vim /opt/init.sh
#!/bin/bash

set_key(){
if [ ! -d /root/.ssh ]; then
	mkdir -p /root/.ssh
	chmod 700 /root/.ssh
fi

# Fetch public key using HTTP
for ((i=1;i<=5;i++)); do
    if [ ! -f /root/.ssh/authorized_keys ]; then
		curl -f http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key > /tmp/metadata-key 2>/dev/null
		if [ $? -eq 0 ]; then
			cat /tmp/metadata-key >> /root/.ssh/authorized_keys
			chmod 0600 /root/.ssh/authorized_keys
			restorecon /root/.ssh/authorized_keys
			rm -f /tmp/metadata-key
			echo "Successfully retrieved public key from instance metadata"
			echo "*****************"
			echo "AUTHORIZED KEYS"
			echo "*****************"
			cat /root/.ssh/authorized_keys
			echo "*****************"
		fi
	fi
done
}

set_hostname(){
    PRE_HOSTNAME=$(curl -s http://169.254.169.254/2009-04-04/meta-data/hostname)
    #echo $PRE_HOSTNAME > /etc/hostname
	hostnamectl set-hostname `echo $PRE_HOSTNAME`
}

set_static_ip(){
    PRE_IP=$(curl -s http://169.254.169.254/2009-04-04/meta-data/local-ipv4)
	NET_FILE=/etc/sysconfig/network-scripts/ifcfg-eth0
	echo "TYPE=Ethernet" > $NET_FILE
	echo "BOOTPROTO=none" >> $NET_FILE
	echo "NAME=eth0" >> $NET_FILE
	echo "ONBOOT=yes" >> $NET_FILE
	echo "DEVICE=eth0" >> $NET_FILE
	echo "IPADDR=${PRE_IP}" >> $NET_FILE
	echo "PREFIX=24" >> $NET_FILE
	echo "GATEWAY=192.168.1.1" >> $NET_FILE
	#echo "DNS1=192.168.1.1" >> $NET_FILE
}
#如果需要挂载数据云盘可编写 main(){ set_key; set_hostname; set_static_ip; echo > /opt/init.sh reboot }
main
chmod +x init.sh chmod +x /etc/rc.d/rc.loca vim /etc/rc.d/rc.loca /bin/bash /tmp/init.sh poweroff 5.上传镜像: openstack image create "Centos-7-x86_64" --file /tmp/centos.qcow2 --disk-format qcow2 --container-format bare --public https://www.cnblogs.com/linuxk/p/9455206.html
http://blogs.studylinux.net/?p=3481

  

原文地址:https://www.cnblogs.com/xuefy/p/11146678.html