设为首页 收藏本站
查看: 1193|回复: 0

[经验分享] 第三部分 OpenStack镜像管理

[复制链接]

尚未签到

发表于 2017-6-25 16:06:38 | 显示全部楼层 |阅读模式
一、简介
  很多源都有为OpenStack已经编译好的各种镜像了,您可以直接下载并通过使用这些镜像来熟悉OpenStack。
  不过如果是为生产环境进行部署的话,您一定需要构建含有定制软件或配置的镜像文件。不要着急,本章将引领您完成几种较为流行的Linux发行版镜像,最后也将制作一份Windows的镜像。
  由不同的Linux发行版制作镜像时,过程几乎一样,仅有微小的差别而已。由于含有cloud-ini软件包,人们用Ubuntu系统制作镜像文件变得非常容易。Cloud-init软件在实例运行时能够自动维护实例配置,也将为无密码登陆完成密匙导入以及完成设置主机名等任务。每个实例都将通过169.254.169.254的元数据接口,从nova运算中读取特定的配置。
  如果您制作发行版不含有诸如cloud-init此类的软件包,您就需要自行完成密匙导入等操作了。说来也简单,只需向rc.local文件中添加相关命令即可。
  如前所述,创建Linux不同发行版的过程除了几细微之处外,其余完全一致。不同点将在后文阐述。
  本文所有的例子,都是在KVM基础上完成的。正像前两章说道的那样,现在我正在使用client1。
  接下来的操作将制作很多镜像,这些镜像代表一个没有分区的硬盘。
二、创建Linux镜像
  第一部,首先是在Client1上创建一块空镜像,这块镜像用作虚拟机的硬盘,所以请保证留出你所需的空间的大小:
  kvm-img create -f qcow2 server.img 5G

(一)安装准备
  下载你所需的Linux发行版iso原镜像文件,比如您想安装Ubuntu,您可以使用wget或浏览器从网站“http://releases.ubuntu.com”获得iso文件。
  将下载的iso文件置入虚拟机的CD-ROM后,启动KVM一个虚拟机实例。您将看到安装过程的开始。键入如下命令,它将在端口0开放VNC服务:
  sudo kvm -m 256 -cdrom ubuntu-12.04-server-amd64.iso -drive file=server.img,if=virtio,index=0 -boot d -net nic -net user -nographic -vnc :0
  使用0这个展示端口连入虚拟机的VNC,并完成安装。
  举例如下,client1的IP地址是10.10.10.4,则通过下列命令访问vnc:
  vncviewer 10.10.10.4 :0
  注意,在制作Linux镜像过程中,请创建一个单独的ext4格式分区并将其挂在swap分区下。
  安装结束后,通过执行下列命令重新载入虚拟机:
  sudo kvm -m 256 -drive file=server.img,if=virtio,index=0 -boot c -net nic -net user -nographic -vnc :0
  此时,您可以在这个系统上安装定制的软件包,进行系统更新,添加用户或更改配置了。
(二)Ubuntu
  执行以下命令:
  sudo apt-get update
  sudo apt-get upgrade
  sudo apt-get install openssh-server cloud-init
  清除 /etc/udev/rules.d文件的网络设备命名规则,因为这些规则将从实例的网卡获得。
  sudo rm -rf /etc/udev/rules.d/70-persistent-net.rules


(三)Fedfora
  运行如下命令:
  yum update
  yum install openssh-server
  chkconfig sshd on
  然后编辑 /etc/sysconfig/network-scripts/ifcfg-eth0文件如下所示:
  DEVICE="eth0"
  BOOTPROTO=dhcp
  NM_CONTROLLED="yes"
  ONBOOT="yes"
  清除 /etc/udev/rules.d文件的网络设备命名规则,因为这些规则将从实例的网卡获得。
  sudo rm -rf /etc/udev/rules.d/70-persistent-net.rules
  关闭虚拟机。
  由于Fedora没有cloud-init或类似软件,您需要亲自进行几步配置使实例可以得到诸如ssh key这样的元数据。
  编辑 /etc/rc.local文件并且把以下内容粘贴到“touch /var/lock/subsys/local”行前:
  depmod -a
  modprobe acpiphp
  # simple attempt to get the user ssh key using the meta-data service
  mkdir -p /root/.ssh
  echo >> /root/.ssh/authorized_keys
  curl -m 10 -s http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key| grep 'ssh-rsa' >> /root/.ssh/authorized_keys
  echo "AUTHORIZED_KEYS:"
  echo "************************"
  cat /root/.ssh/authorized_keys
  echo "************************"

(四)OpenSUSE
  选择ssh服务,curl以及其他需要的包。
  安装ssh服务器:
  zypper install openssh
  安装crul:
  zypper install curl
  使用如下步骤将Ssh Key注入实例中:
  首先,创建文件 /etc/init.d/sshkey并且写入下列内容:
  echo >> /root/.ssh/authorized_keys
  curl -m 10 -s http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key | grep 'ssh-rsa' >> /root/.ssh/authorized_keys
  echo "AUTHORIZED_KEYS:"
  echo "************************"
  cat /root/.ssh/authorized_keys
  echo "************************"
  然后,为该文件设置权限:
  chmod 755 /etc/init.d/sshkey
  将sshkey服务设置为开机自动启动:
  chkconfig sshkey on
  使用下列命令设置防火墙(而非iptables),令其允许ssh服务:
  yast2
  最后同样地,清除 /etc/udev/rules.d文件的网络设备命名规则,因为这些规则将从实例的网卡获得。
  sudo rm -rf /etc/udev/rules.d/70-persistent-net.rules

(五)Debian
  安装时选择SSH服务器,Curl及相关软件。
  然后进行必要的设置,为key注入而编辑 /etc/rc.local文件并增加如下内容:
  echo >> /root/.ssh/authorized_keys
  curl -m 10 -s http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key | grep 'ssh-rsa' >> /root/.ssh/authorized_keys
  echo "AUTHORIZED_KEYS:"
  echo "************************"
  cat /root/.ssh/authorized_keys
  echo "************************"
  同样地,清除 /etc/udev/rules.d文件的网络设备命名规则,因为这些规则将从实例的网卡获得。
  sudo rm -rf /etc/udev/rules.d/70-persistent-net.rules

(六)CentOS6及RHEL6
  安装时选择SSH服务器,Curl及相关软件。
  然后进行必要的设置,为key注入而编辑 /etc/rc.local文件并增加如下内容:
  echo >> /root/.ssh/authorized_keys
  curl -m 10 -s http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key | grep 'ssh-rsa' >> /root/.ssh/authorized_keys
  echo "AUTHORIZED_KEYS:"
  echo "************************"
  cat /root/.ssh/authorized_keys
  echo "************************"
  编辑 /etc/sysconfig/network-scripts/ifcfg-eth0文件如下所示:
  DEVICE="eth0"
  BOOTPROTO=dhcp
  NM_CONTROLLED="yes"
  ONBOOT="yes"
  同样地,清除 /etc/udev/rules.d文件的网络设备命名规则,因为这些规则将从实例的网卡获得。
  sudo rm -rf /etc/udev/rules.d/70-persistent-net.rules

(七)上传Linux镜像
  使用如下命令上传镜像:
  glance add name="<Image name>" is_public=true container_format=ovf disk_format=qcow2 < <filename>.img

三、创建Windows镜像
  第一步,仍然是在Client1上创建一块空镜像,这块镜像用作虚拟机的硬盘,所以请保证留出你所需的空间的大小:
  kvm-img create -f qcow2 windowsserver.img 20G

(一)安装操作系统
  当实例运行时,OpenStack利用virtio接口来使用镜像,于是镜像中的操作系统需要装有virtio驱动。不巧的是,默认Windows Server 2008是没有virtio驱动的。您可以在如下网址:http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin 下载装有该驱动的iso镜像并使用该镜像进行安装。
  译者注1:Virtio 是半虚拟化 hypervisor 中位于设备之上的抽象层。virtio 由 Rusty Russell 开发,virtio 是对半虚拟化 hypervisor 中的一组通用模拟设备的抽象。该设置还允许 hypervisor 导出一组通用的模拟设备,并通过一个通用的应用编程接口(API)让它们变得可用。[来源:开源中国http://www.oschina.net/p/virtio]
  译者注2:该链接的virtio-win是0.1-22版,不能用。下载用1.1.16新版即可。
  执行此命令开始安装:
  sudo kvm -m 1024 -cdrom windows2008.iso -drive file=windowsserver1.img,if=virtio -boot d -drive file=virtio-win-0.1-22.iso,index=3,media=cdrom -device virtio-net-pci -net nic -net user -nographic -vnc :5
  当安装提示您选择一块硬盘设备步骤时,您并不能看到当前有可用设备。点击左下方的“载入设备(Load drivers)”按钮,选择第二CDROM后,含有virtio驱动的硬盘便被加载了。
  在安装结束之前,您需要重启系统一次,此时您可以安装其它您所需的软件或执行任何需要的配置更改。除此之外,请务必开放实例中的远程桌面,因为远程桌面将是您连接并使用该实例的唯一途径。同时,Windows防火墙应该相应地设置为对ICMP和RDP开放。

(二)上传Windows镜像

关闭虚拟机并将该镜像使用如下命令上传至OpenStack中:  glance add name="windows" is_public=true container_format=ovf disk_format=qcow2 < windowsserver.img

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-388062-1-1.html 上篇帖子: virsh 常用操作 下篇帖子: 关于CentOS 6下Hadoop占用系统态CPU高的处理办法【转】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表