可参考官方文档: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