1、创建openstack-linux镜像:

下载已经做好的的镜像:https://docs.openstack.org/image-guide/obtain-images.html#centos

(1)安装软件包:

yum install -y qemu-kvm libvirt virt-install

systemctl enable libvirtd

systemctl start libvirtd

(2)上传centos镜像到/tmp/目录下;

(3)创建虚拟机硬盘:

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

(4)创建虚拟机:

1)默认网卡:

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-DVD-1804.iso

2)如果是桥接网卡(推荐):

virt-install --virt-type kvm --name centos --ram 1024 \

--disk /tmp/centos.qcow2,format=qcow2 \

--network bridge=br0 \

--graphics vnc,listen=0.0.0.0 --noautoconsole \

--os-type=linux --os-variant=rhel7 \

--location=/tmp/CentOS-7-x86_64-DVD-1804.iso

提示:桥接网卡的建立方法参考文档'6、安装kvm虚拟机:';

(5)虚拟机安装:

参考文档'2.14、制作Centos模板及优化操作';

(6)开启虚拟机:

virsh start centos

(7)虚拟机优化:

参考文档'2.14、制作Centos模板及优化操作';

(8)给虚拟机安装acpi服务:

使虚拟机监控程序能够重新启动或关闭实例;

yum install acpid -y

systemctl enable acpid.service

systemctl start acpid.service

(9)给虚拟机安装cloud-utils-growpart以允许分区调整大小:

yum install cloud-utils-growpart

(10)禁用虚拟机zeroconf路由:

要访问元数据服务的实例,必须禁用默认的zeroconf路由;

echo "NOZEROCONF=yes" >> /etc/sysconfig/network

tail -1 /etc/sysconfig/network

NOZEROCONF=yes

(11)配置虚拟机输出控制台和设备内核兼容:

1)修改/etc/sysconfig/grub配置文件如下内容:

GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap console=tty0 console=ttyS0,115200n8 noapic"

2)运行以下命令使配置生效:

grub2-mkconfig -o /boot/grub2/grub.cfg

(12)编写虚拟机metada脚本:

1)编写脚本:

vim /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 "*****************"

break

fi

else

break

fi

done

}

set_hostname() {

PRE_HOSTNAME=$(curl -s http://169.254.169.254/latest/meta-data/hostname)

if [ $? -eq 0 ];then

DOMAIN_NAME=$(echo ${PRE_HOSTNAME} | awk -F '.' '{print $1}')

hostnamectl set-hostname `echo ${DOMAIN_NAME}`

fi

}

set_static_ip(){

PRE_IP=$(curl -s http://169.254.169.254/latest/meta-data/local-ipv4)

if [ $? -eq 0 ];then

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=10.0.0.253" >>${NET_FILE}

echo "DNS1=114.114.114.114" >>${NET_FILE}

fi

}

main(){

set_key;

set_hostname;

set_static_ip;

/bin/cp -a /tmp/rc.local /etc/rc.d/rc.local

reboot

}

main

2)将rc.local拷贝到/tmp/下:

cp -a /etc/rc.d/rc.local /tmp/

3)CentOS7开机执行rc.local,需将rc.local添加执行权限:

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

4)编辑rc.local

vim /etc/rc.d/rc.local

/bin/sh /tmp/init.sh

5)提示:

提示:启动时使用的是openstack分配的ip地址,然后执行/etc/rc.d/rc.local中的

的脚本把主机的ip地址静态化,再把/etc/rc.d/rc.loacl还原为原来的模式,重启系统使网卡、主机名生效,该脚

本只执行一次,如果执行失败使用的是openstack分配的动态地址(也可以到虚拟机内部执行sh /tmp/init.sh);

如果修改虚拟机模板需要重新执行上面的3)、4)、步骤;

(13)修改网卡:

因为台虚拟机的网卡在重启的时候都是不一

样的,需要清除网卡的唯一标识;

vim /etc/sysconfig/network-scripts/ifcfg-eth0

TYPE=Ethernet

BOOTPROTO=dhcp

NAME=eth0

DEVICE=eth0

ONBOOT=yes

(14)关闭虚拟机:

shutdown -h now

(15)在宿主机上初始化虚拟机镜像:

1)清除网络相关硬件生成信息(这里不使用该命令);

此操作会清理一些个性操作,比如/etc/rc.d/rc.local信息,清空/tmp/目录中

的文件等,如果配置了个性化操作,不要使用该命令,如果是全新的系统可以使用该命令;

yum install libguestfs-tools

virt-sysprep -d centos

2)压缩虚拟机镜像:

qemu-img convert -c -O qcow2 /tmp/centos.qcow2 /tmp/centos7.qcow2

(16)在控制节点上传镜像到glance:

1)获得管理员的身份:

. /scripts/admin-openstack.sh

#提示也可以登录界面上传专属于自己项目的镜像;

2)上传公共镜像:

openstack image create "CentOS-7.5-x86_64" \

--file /tmp/centos7.qcow2 \

--disk-format qcow2 --container-format bare \

--public

3)镜像位置:

du -sh /var/lib/glance/images/0a0362a3-5180-4347-8b4a-a74930378489

898M /var/lib/glance/images/0a0362a3-5180-4347-8b4a-a74930378489

(17)使用镜像创建虚拟机:

1)使用admin用户登录创建镜像的实例类型:

2)使用demo用户登录创建虚拟机:

提示:第一次使用镜像创建虚拟机时需要拷贝镜像到计算节点,孵化的过程可能有点慢,等下次再创建虚拟机就会快很多了;

3)验证:

在控制节点免秘钥登录新建的虚拟机;

[root@controller ~]# ssh -p22 root@10.0.0.71

Last login: Wed Apr 3 16:07:56 2019 from 10.0.0.11

[root@web-node1 ~]# ping www.baidu.com

PING www.a.shifen.com (183.232.231.172) 56(84) bytes of data.

64 bytes from 183.232.231.172 (183.232.231.172): icmp_seq=1 ttl=128 time=39.2 ms

64 bytes from 183.232.231.172 (183.232.231.172): icmp_seq=2 ttl=128 time=34.2 ms

^C

--- www.a.shifen.com ping statistics ---

2 packets transmitted, 2 received, 0% packet loss, time 1004ms

rtt min/avg/max/mdev = 34.284/36.757/39.230/2.473 ms

2、创建openstack-windows镜像:

下载已经做好的的镜像:https://docs.openstack.org/image-guide/obtain-images.html#microsoft-windows

(1)安装软件包:

yum install -y qemu-kvm libvirt virt-install

systemctl enable libvirtd

systemctl start libvirtd

(2)上传windows镜像到/tmp/目录下;

(3)下载windows驱动插件:

cd /tmp/

wget https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso

(4)创建虚拟机磁盘:

qemu-img create -f qcow2 /tmp/ws2012r2.qcow2 15G

(5)创建虚拟机:

virt-install --virt-type kvm --name ws2012r2 --ram 1024 \

--network bridge=br0,model=virtio \

--disk /tmp/ws2012r2.qcow2,format=qcow2,device=disk,bus=virtio \

--disk /tmp/cn_windows_server_2012_r2_x64_dvd_2707961.iso,device=cdrom,bus=ide \

--disk /tmp/virtio-win-0.1.141.iso,device=cdrom,bus=ide \

--graphics vnc,listen=0.0.0.0 --noautoconsole \

--os-type=windows --os-variant=win2k12r2 \

--check path_in_use=off

提示:桥接网卡的建立方法参考文档'6、安装kvm虚拟机:';

(6)安装虚拟机和虚拟机调优:

参考文档'6.11、制作windows虚拟机';

虚拟机密码是:a123456A

(7)将PowerShell执行策略设置为不受限制:

因为Cloudbase-Init在实例引导期间需要运行脚本;

1)更改命令:

PS C:\Users\Administrator> Set-ExecutionPolicy Unrestricted

执行策略更改

执行策略可帮助你防止执行不信任的脚本。更改执行策略可能会产生安全风险,如 http://go.microsoft.com/fwlink/?LinkID=135170

中的 about_Execution_Policies 帮助主题所述。是否要更改执行策略?

[Y] 是(Y) [N] 否(N) [S] 挂起(S) [?] 帮助 (默认值为“Y”): Y

2)查看更改:

PS C:\Users\Administrator> Get-ExecutionPolicy

Unrestricted

(8)安装Cloudbase-Init插件:

1)下载插件:

cd /tmp/

wget https://www.cloudbase.it/downloads/CloudbaseInitSetup_Stable_x64.msi

2)安装:

3)修改Cloud-Init的配置文件:

在C:\Program Files\Cloudbase Solutions\Cloudbase-init\conf\cloudbase-init.conf文件末尾添加如下内容:

netbios_host_name_compatibility=false

retry_count=40

retry_count_interval=5

first_logon_behaviour=no

[openstack]

add_metadata_private_ip_route=False

#使Windows系统的hostname长度支持到63个字符,默认最大时15个字符;

#获取metadata的重试次数;

#获取metadata的间隔时间,默认单位是秒;

#选择密码注入方式首次登录时不修改密码,系统默认强制用户修改登录密码;

#防止Windows添加默认路由导致metadata网络不通;

4)删除Cloudbase-Init安装包;

(9)将系统的网络设置为dhcp模式:

(10)初始化操作系统,使系统保持唯一的用户id:

1)注意:此操作会让操作系统保持唯一的id,尤其是域操作,必须保证域中操作系统用户id的唯一性;此

操作会删除用户的个性化操作,清除administrator的密码,登录时需要更改密码,激活的系统需要重新注册,本文使用了该方法;

如果操作系统不需要加入域,可以忽略此操作,系统不需再次注册,也不需要首次登录时修改administrator的密码;

查看当前系统用户的id的方法:在cmd窗口中输入'whoami /user'命令即可查看;

2)初始化:

清理回收站中的内容;

C:\Windows\System32\Sysprep.exe

(11)上传镜像到glance:

1)压缩镜像:

qemu-img convert -c -O qcow2 /tmp/ws2012r2.qcow2 /tmp/ws2012r2-model.qcow2

2)获得keystone管理员的权限:

. /scripts/admin-openstack.sh

3)上传:

openstack image create "ws2012r2-x86_64" \

--file /tmp/ws2012r2-model.qcow2 \

--disk-format qcow2 --container-format bare \

--public

(12)创建实例类型:

(13)创建实例:

(14)登录虚拟机:

1)通过dashboard控制台或者是vnc连接虚拟机;

2)修改administrator密码;

3)用修改后的面登录虚拟机;

4)查看系统的配置;

(15)验证:

[root@controller ~]# ping 10.0.0.77

PING 10.0.0.72 (10.0.0.72) 56(84) bytes of data.

64 bytes from 10.0.0.72: icmp_seq=1 ttl=128 time=9.53 ms

64 bytes from 10.0.0.72: icmp_seq=2 ttl=128 time=22.0 ms

64 bytes from 10.0.0.72: icmp_seq=3 ttl=128 time=17.8 ms

64 bytes from 10.0.0.72: icmp_seq=4 ttl=128 time=14.2 ms

^C

--- 10.0.0.72 ping statistics ---

4 packets transmitted, 4 received, 0% packet loss, time 3006ms

rtt min/avg/max/mdev = 9.534/15.901/22.023/4.602 ms

7.8、如何制作openstack镜像的更多相关文章

  1. 完整部署CentOS7.2+OpenStack+kvm 云平台环境(4)--用OZ工具制作openstack镜像

    在部署openstack云平台环境的时候,需要上传镜像到glance. 首先下载iso镜像,这里下载了centos6.5镜像,放到/usr/local/src目录下然后用OZ工具制作openstack ...

  2. 用OZ工具制作openstack镜像

    在部署openstack云平台环境的时候,需要上传镜像到glance. 首先下载iso镜像,这里下载了centos7.2镜像,放到/iso目录下 然后用OZ工具制作openstack的镜像 1.安装l ...

  3. OpenStack 镜像制作

    Contents [hide] 1 Centos6.5 img制作 1.1 基础环境安装 1.2 下载或从本地上传系统镜像 1.3 启动服务 1.4 建立镜像文件 1.5 通过virt-install ...

  4. 如何构建OpenStack镜像

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

  5. OpenStack 镜像制作之cloud-init

    Contents [hide] 1 背景 2 密钥登录 2.1 密钥登录的原理 2.1.1 openstack的私钥 2.1.2 密码注入 = 2.1.3 实际遇到的情况 2.1.4 解决办法 背景 ...

  6. OpenStack Nova 制作 Windows 镜像

    OpenStack Nova 制作 Windows 镜像   windows虚拟机ubuntuimage防火墙云计算 本贴转自http://www.vpsee.com 上次 VPSee 给 OpenS ...

  7. 制作OpenStack用的RHEL7系统镜像

    制作OpenStack使用的RHEL7系统镜像,并进行相关设置,安装XRDP以进行远程访问. 1.在KVM中安装RHEL7.2客户机: 2.设置网卡为dhcp并onboot=yes,使得虚拟机能自动获 ...

  8. OpenStack镜像制作-CentOS

    云平台中镜像还是很重要的,提供各种定制化的镜像使得用户体验更好. 最开始玩OpenStack的时候用的是安装文档中提到的cirros,其密码cubswin:) 刚开始感觉很怪,现在已经可以随手打出.p ...

  9. 制作openstack用的centos6.5镜像

    目的: 在centos6.5操作系统环境下制作一个centos6.5的kvm镜像,安装cloud-init,能自己主动扩展根分区 一.制作环境: 操作环境是在openstack平台开一个实例.装的是c ...

随机推荐

  1. 【yumex图形安装双击】【转载】CentOS yum的详细使用方法

    CentOS yum的详细使用方法 yum是什么yum = Yellow dog Updater, Modified主要功能是更方便的添加/删除/更新RPM包.它能自动解决包的倚赖性问题.它能便于管理 ...

  2. canal 环境搭建 canal 与kafka通信(三)

    canal 占用了生产者 .net core端 使用消费者获取canal 消息 安装 Confluent.Kafka  demo使用 1.3.0 public static void Consumer ...

  3. linux进阶之网络技术管理

    本节内容 1.      网络七层模型 物理层 数据链路层 网络层 传输层 会话层 表示层 应用层 2.  TCP/UDP (1)TCP面向连接,可靠传输,消耗系统资源比较多,传输速度较慢,但是数据传 ...

  4. Redis 快速集群环境搭建

    环境 Linux :centos 7 redis:redis-5.0.9 Redis 集群环境搭建步骤 早期 redis 版本集群环境搭建需要安装 ruby 运行环境,搭建步骤比较繁琐: redis ...

  5. Stm32高级定时器(转自:luowei_memory)

    1 定时器的用途 2 高级定时器框图 3 时基单元 4 通道 1 定时器的用途 已知一个波形求另一个未知波形(信号长度和占空比) 已知波形的信号长度和占空比产生一个相应的波形 增量正交编码器驱动电机获 ...

  6. Flex里的fx s mx

    笔记是从其他地方整合的,仅供参考 原来flex build 4有三个命名空间fx,mx,s,分别对应一下三个: •xmlns:fx="http://ns.adobe.com/mxml/200 ...

  7. Java - Java 8 新特性

    一.Java8新特性 Java8概述:Java8,也就是jdk1.8版本,是意义深远的一个新版本.是Java5之后一个大的版本升级,让Java语言和库仿佛获得了新生. 二.Lambda表达式 Lamb ...

  8. 治理对象ing

    计算治理项包括产出表未被读.暴力扫描.数据膨胀.数据倾斜.出错节点.导入为空和输入为空. 存储的治理项包括生命周期过长.未管理表.废弃表.空表.逻辑未管理表.逻辑废弃表.逻辑空表和黑盒物化空表.

  9. SQLZOO

    一.SELECT basics/zh 以顯示德國 Germany 的人口. select population from world where name = 'Germany'; 查詢面積為 5,0 ...

  10. jackson学习+CVE-2019-12086漏洞分析

    jackson和fastjson差不多,都是用来更方便的处理json 国人用fastjson,老外用jackson/gson比较多 环境搭建: pom.xml: <dependency> ...