如何创建生产用的Openstack镜像

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

  1,创建虚拟机硬盘

qemu-img create -f qcow2 /tmp/centos.qcow2 10G

  2,创建虚拟机(没有virt-install命令使用yum -y install virt-install安装)

virt-install --virt-type kvm --name centos --ram 1024 \
--disk /tmp/centos.qcow2,format=qcow2 \
--network network=default \
--graphics vnc,listen=0.0.0.0 --noautoconsole \
--os-type=linux --os-variant=rhel7 \
--location=/tmp/CentOS-7-x86_64-Minimal-1708.iso

  PS:使用物理机作为控制节点安装的时候报 network default参数错误,把这个参数取消即可,不影响安装

  VNC客户端先准备好

  使用TightVNC连接

  选择支持中文,时区为亚洲上海

  分区只分一个/分区即可(设置为标准分区)

  PS:虚拟机不分swap分区因为虚拟机本来就是用硬盘创建出来的,没必要在用硬盘来做虚拟内存

  设置密码(以后创建的虚拟机密码均为这个)

  等待安装完成

  安装完毕点击重启,但是在该页面无法启动,需要在宿主机上面来启动

virsh start centos

  使用VNC登陆

  修改网卡硬配置 /etc/sysconfig/network-scripts/ifcfg-eth0

  删除不需要的配置

  关闭网络管理(记得首字母大写)

systemctl stop NetworkManager
systemctl disable NetworkManager

  重启网络

systemctl restart network

  PS:虚拟机没有通公网

  关闭selinux

  关闭防火墙postfix

systemctl disable firewalld
systemctl diaable postfix

  

  安装acpi或者其他需要在组件(比如生产需要配置yum源,安装一些常用的软件等)演示不安装了

  假设都安装完毕,写mate-data

  在虚拟机的/tmp/init.sh

#!/bin/bash

set_key(){
if [ ! -d /root/.ssh ]; then
mkdir -p /root/.ssh
chmod 700 /root/.ssh
fi
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/latest/meta-data/hostname)
DOMAIN_NAME=$(echo $PRE_HOSTNAME | awk -F '.' '{print $1}')
hostnamectl set-hostname `echo ${DOMAIN_NAME}.example.com`
} set_static_ip(){
PRE_IP=$(curl -s http://169.254.169.254/latest/meta-data/local-ipv4)
NET_FILE="/etc/sysconfig/network-scripts/ifcfg-eth0"
echo "TYPE=Ethernet" > $NET_FILE
echo "BOOTPROTO=static" >> $NET_FILE
echo "NAME=eth0" >> $NET_FILE
echo "DEVICE=eth0" >> $NET_FILE
echo "ONBOOT=yes" >> $NET_FILE
echo "IPADDR=${PRE_IP}" >> $NET_FILE
echo "NETMASK=255.255.255.0" >> $NET_FILE
echo "GATEWAY=192.168.0.1" >> $NET_FILE
} main(){
set_key;
set_hostname;
set_static_ip;
/bin/cp /tmp/rc.local /etc/rc.d/rc.local
reboot
} main

  PS:把获取key,hostname,静态ip写成3个函数,然后在main里面执行,在/tmp文件夹备份一份rc.local 设置完毕覆盖,以防虚拟机重启再次执行

  在/etc/rc.local添加

/bin/bash /tmp/init.sh

  给rc.local加执行权限(必须是/etc/rc.d/rc.local不能给/etc/rc.local加执行权限否则会不执行初始化文件需要手动执行初始化文件才能生效)

chmod +x /etc/rc.d/rc.local

  关闭镜像

shutdown -h now

  

  在控制节点操作,上传镜像

openstack image create "CentOS-7-x86_64" \
--file /tmp/centos.qcow2 \
--disk-format qcow2 --container-format bare \
--public

  删除镜像使用命令

openstack image delete CentOS-7-x86_64

  上传较慢

  镜像路径在/var/lib/glance/images

  使用命令查看

openstack image list

  使用admin登陆web界面也能看到

  使用新镜像创建虚拟机

  使用admin登陆web界面

  创建云主机类型

  谁能使用demo

  退出admin使用demo登陆

  创建云主机

  使用刚刚建立的源

  云主机类型web-node

  创建可以在node2的目录/var/lib/nova/instances/_base看到拷贝镜像

  PS:我试验中没有动静 可能和报错 构建已中止:分配网络失败,不重新调度有关

  

  重启主机可以正常创建了 但是该目录还是没有文件增加

  原来是创建在控制节点上面去了,因为控制节点也设置成了计算节点调度到上面了

  

  创建快照

  是一个私有快照

Openstack创建镜像的更多相关文章

  1. openstack 创建镜像生成虚拟机不知道密码如何解决

    背景: openstack juno版本,使用glance创建centos7镜像,然后生成虚拟机. 操作步骤: 首先获取镜像http://cloud.centos.org/centos/7/image ...

  2. 利用OpenStack Rest API 创建镜像

    服务端点: image API: POST     /v2/images Request1:     Method:Post     Url: http://192.168.31.147:9292/v ...

  3. 制作 OpenStack Linux 镜像 - 每天5分钟玩转 OpenStack(151)

    这是 OpenStack 实施经验分享系列的第 1 篇. OpenStack 的 instance 是通过 Glance 镜像部署的,所以准备镜像是必须要做的工作.本节介绍 Linux 镜像的制作方法 ...

  4. 制作 OpenStack Windows 镜像 - 每天5分钟玩转 OpenStack(152)

    这是 OpenStack 实施经验分享系列的第 2 篇. OpenStack 通过 Glance 镜像部署 instance,上一节我们介绍了 linux 镜像制作方法,windows 镜像与 lin ...

  5. OpenStack 创建虚机过程简要汇总

    1. 总体流程 翻译自原文(英文):https://ilearnstack.com/2013/04/26/request-flow-for-provisioning-instance-in-opens ...

  6. ubuntu openstack windows 镜像制作

    openstack  windows 镜像制作 首先下载windows所需要的驱动,virtio-win-1.1.16.vfd virtio-win-0.1-59.iso 下载的官方地址是: http ...

  7. openstack导入镜像

    本文以制作CentOS7.2镜像为例,详细介绍手动制作OpenStack镜像详细步骤,解释每一步这么做的原因.镜像上传到OpenStack glance,支持以下几个功能: 支持密码注入功能(nova ...

  8. VMware 接入 Openstack — 使用 Openstack 创建 vCenter 虚拟机

    目录 目录 软件环境 前言 Openstack 接口驱动 使用 KVM 在 Compute Node 上创建虚拟机的流程 使用 VCDirver 在 vCenter 上创建虚拟机的流程 配置 vCen ...

  9. openstack——glance镜像服务

    一.glance介绍:                Glance是Openstack项目中负责镜像管理的模块,其功能包括虚拟机镜像的查找.注册和检索等. Glance提供Restful API可以查 ...

随机推荐

  1. TCP网络传输, 数据类型的问题

    转载: http://blog.csdn.net/highfly591/article/details/45309239 1.采用TCP传输时, 应用层为什么要做超时重传: tcp保证数据可靠传输,传 ...

  2. ajax实现json循环输出结果

    $.post("bankInfo.php",{key:jee_server,uid:jee_uid},function(data) { var strs=JSON.stringif ...

  3. gdi软光栅化注意事项

    1,opengl viewport原点在左下角,而gdi画图api原点在左上角,所以在实现了整个opengl管线,最后将点通过gdi函数画到屏幕时要进行临时转化. 2,注意gdi画点的api传入的颜色 ...

  4. atitit.userService 用户系统设计 v6 q413

    atitit.userService 用户系统设计 v6 q413 1. 新特性1 2. Admin  login1 3. 用户注册登录2 3.1. <!-- 会员注册使用 -->  商家 ...

  5. Atitit.获取主板与bios序列号获取硬件设备信息  Wmi wmic 的作用

    Atitit.获取主板与bios序列号获取硬件设备信息  Wmi wmic 的作用 1 获取硬件核心基础核心基础Wmi1 2 其他资料2 3 Wmic WMI 命令行接口2 4 Atitit.获取主板 ...

  6. Javascript网页截屏的方法

    最近我在研究开发一个火狐插件,具体的功能是将网页内容截屏并分享到微博上.目前基本功能已经实现,大家可以在 @程序师视野 里看到用这个截图插件分享的微博的效果. 之前我曾写过如何将canvas图形转换成 ...

  7. 纯真IP数据库解析Delphi D10.1下正常使用

    直接一个单元,代码分享出来. unit   Net.IPLocation; interface uses System.Classes, System.SysUtils, Winapi.WinSock ...

  8. mysql之slave_skip_errors选项

    要说slave_skip_errors选项,就不得不提mysql的replication机制,总的来说它分了三步来实现mysql主从库的同步 master将改变记录到二进制日志(binary log) ...

  9. 解决eclipse偶尔无视breakpoint的行为

    一般是如果你使用了T[]这样的参数列表,也就是generic array作为参数,你就算给函数打了断点,有时也会被eclipse无视 比如如下代码,你在调试main的时候,eclipse就会把doPa ...

  10. 关于 web中 使用 java.net.URLEncoder.encode 要编码两次呢 , js的encodeURIComponent 同理

    因为在jsp中对中文进行了编码的时候用的是UTF-8的编码方式,而在servlet中调用request.getParameter();方法的时候使用服务器指定的原始编码格式(ISO-8859-1)自动 ...