使用ISO文件制作openstack使用的coreOS镜像
OpenStack源码交流群: 538850354
本篇文章是使用coreOS ISO文件手动制作openstack使用的qcow2镜像文件,关于coreOS的介绍,可以看这里
使用服务器:centos6.5
1.下载coreOS镜像(444.5.0版本)
可能需要翻墙
#coreOS安装文件
#下面两个文件在安装过程中,coreOS会自动下载,但由于网络的原因,下载可能很耗时,所以这里提前下载好(可能需要使用代理才能下载)
wget http://stable.release.core-os.net/amd64-usr/444.5.0/coreos_production_image.bin.bz2
wget http://stable.release.core-os.net/amd64-usr/444.5.0/coreos_production_image.bin.bz2.sig #iso镜像文件
#使用这个ISO文件制作镜像
wget http://stable.release.core-os.net/amd64-usr/444.5.0/coreos_production_iso_image.iso
2.创建虚拟磁盘
#安装coreOS虚拟机到这块磁盘上
qemu-img create -f qcow2 coreOS_v1.qcow2 20G
#在之后步骤中我们会使用下载的ISO文件安装虚拟机到这块磁盘上,然后再经过自定义配置,这块qcow2格式的虚拟磁盘就是我们最终需要的虚拟机镜像
3.使用virt-install工具从ISO文件安装(从光盘引导系统)
virt-install -n core -r -c /data_lij/coreOS/coreos_production_iso_image.iso --disk path=/data/coreOS/coreos_test.qcow2,device=disk,bus=virtio,size=,format=qcow2 --vnc --vncport= --vnclisten=0.0.0.0 -v -n:虚拟机名称
-r:分配内存
-c:使用的ISO文件
--disk:安装磁盘
-vnc:使用vnc远程连接
--vncport:vnc客户端访问端口
这里使用到了virt-install工具,以及vnc远程连接
4.设置cloud-config
cloud-config介绍:
CoreOS allows you to declaratively customize various OS-level items, such as network configuration, user accounts, and systemd units. This document describes the full list of items we can configure. The
coreos-cloudinit
program uses these files as it configures the OS after startup or during runtime.Your cloud-config is processed during each boot. Invalid cloud-config won't be processed but will be logged in the journal. You can validate your cloud-config with the CoreOS validator or by running
coreos-cloudinit -validate
由于coreOS默认使用密钥登陆,所以我们必须想办法注入一个公钥到虚拟机中,这样制作出来的镜像我们才可以使用密钥访问
最简单的cloud-config.yaml只包括一个ssh_authorized_keys字段,用于密钥注入
新建一个cloud-config.yaml文件,ssh-rsa 后面粘贴需要注入的公钥
shell> cat cloud-config.yaml
#cloud-config ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC0g+ZTxC7weoIJLUafOgrm+h...
5.安装coreOS到虚拟磁盘
客户端使用vnc viewer工具连接虚拟机,当前运行的系统是我们下载的ISO镜像coreos_production_iso_image.iso,不同于centos可以直接安装系统到磁盘,对于coreOS,我们需要使用这个ISO提供的安装工具coreos-install去安装coreOS到磁盘
注意:执行下面的命令后coreos-install会自动下载安装程序,但是很容易下载出错,最好使用第6步中的本地下载方法
coreos-install -d /dev/vda -C stable -V 444.5. -c cloud-config.yaml #-d:参数指定安装磁盘,这里指第二步创建的虚拟磁盘
#-C:使用版本,stable稳定版
#-V:要安装的coreOS系统版本,coreos-install会根据这里指定的版本去官网下载相应版本安装程序
#-c:指定一个启动后可以执行的cloud-config配置文件,用于注入密钥
6.使用本地安装文件
执行上一步的安装命令后,coreos-install会自动调用下面命令下载所需安装文件,并自动安装
wget http://stable.release.core-os.net/amd64-usr/444.5.0/coreos_production_image.bin.bz2
wget http://stable.release.core-os.net/amd64-usr/444.5.0/coreos_production_image.bin.bz2.sig
由于网络的原因,下载可能不会成功,或者下载很慢,我们可以设置让coreos-install从本地地址下载代替从官网下载,从而节省时间
所有我们需要做的就是把这个地址:http://stable.release.core-os.net/amd64-usr/444.5.0 用本地可以访问的地址替换(自建web服务器)
6.1 首先需要设置解析,使stable.release.core-os.net解析为本地IP
echo "192.168.11.166 stable.release.core-os.net" >> /etc/hosts
6.2 下面配置一台web主机代替官网地址
#我们需要另外使用一台虚拟机,在其上搭建一个web服务器,替代http://stable.release.core-os.net/amd64-usr/444.5.0这个地址,假设其IP为192.168.11.166
#创建目录结构
mkdir /data/coreos/amd64-usr/444.5.0 -p
cd /data/coreos/amd64-usr/444.5.0
#复制第一步下载的安装文件到本目录
cp coreos_production_image.bin.bz2 coreos_production_image.bin.bz2.sig .
#进入/data/coreos目录,使用python启动一个http服务,其根目录为python运行目录
cd /data/coreos
python -m SimpleHTTPServer 80(这个命令新建一个web服务器,并把命令运行目录作为web根目录)
6.3 测试web服务器
经过上面两步,现在在服务器上访问http://stable.release.core-os.net/amd64-usr/444.5.0,会被解析到我们自建的http主机(192.168.11.166)上去
6.4 现在coreos-install可以使用本地安装文件了,重新执行下面命令安装虚拟机
coreos-install -d /dev/vda -C stable -V 444.5. -c cloud-config.yaml
7.开机启动脚本cloud-init
安装完成之后,为了使其可以从openstack获取主机名,密钥等,需要添加一个开机启动脚本
新建cloudinit.sh
#!/bin/bash #get the env
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin STATUS_CODE=`curl -I -m -o /dev/null -s -w %{http_code} http://169.254.169.254/latest`
if [ ! "$STATUS_CODE" -eq "" ]; then
/bin/sleep
fi # set the root password using user data
STATUS_CODE=`curl -I -m -o /dev/null -s -w %{http_code} http://169.254.169.254/latest/user-data`
if [ "$STATUS_CODE" -eq "" ]; then
PASS=`curl -m -s http://169.254.169.254/latest/user-data | awk -F '"' '{for(i=1;i<=NF;i++){if($i ~ /password/) print $(i+2)}}'`
if [ "$PASS" != " " ]; then
/usr/bin/echo "root:${PASS}" > tmp.txt
/usr/sbin/chpasswd < tmp.txt
rm -f tmp.txt
fi
fi # set the hostname using the meta-data service
STATUS_CODE=`curl -I -m -o /dev/null -s -w %{http_code} http://169.254.169.254/latest/meta-data/hostname`
if [ "$STATUS_CODE" -eq "" ]; then
curl -f http://169.254.169.254/latest/meta-data/hostname > /tmp/metadata-hostname 2>/dev/null
if [ $? -eq ]; then
TEMP_HOST=`cat /tmp/metadata-hostname | awk -F '.novalocal' '{print $1}'`
/usr/bin/hostnamectl set-hostname ${TEMP_HOST}
/usr/bin/hostname $TEMP_HOST
rm -f /tmp/metadata-hostname
fi
fi # get the user ssh key using the meta-data service
STATUS_CODE=`curl -I -m -o /dev/null -s -w %{http_code} http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key`
if [ "$STATUS_CODE" -eq "" ]; then
mkdir -p /root/.ssh
/usr/bin/echo >> /root/.ssh/authorized_keys
curl -m -s http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key | grep 'ssh-rsa' >> /root/.ssh/authorized_keys
chmod /root/.ssh
chmod /root/.ssh/authorized_keys
fi
8.设置开机启动
coreOS使用systemd管理启动项,关于systemd的介绍:http://www.ibm.com/developerworks/cn/linux/1407_liuming_init3/index.html
新建一个开机启动配置文件cloudinit.service
cd /etc/systemd/system
#cat cloudinit.service
[Unit]
Description=OpenStack nova
Requires=coreos-setup-environment.service
After=coreos-setup-environment.service
Before=user-config.target [Service]
Type=oneshot
RemainAfterExit=yes
EnvironmentFile=-/etc/environment
ExecStart=/usr/bin/bash /etc/cloud-init.sh #执行的脚本文件cloud-init.sh [Install]
WantedBy=multi-user.target
#加入systemd管理(设置开机启动)
systemctl enable cloudinit.service
#执行enable之后,cloudinit.service这个服务就会开机启动,从而我们的脚本cloud-init.sh就可以执行
#验证cloudinit.service服务是否设为开机启动
systemctl is-enabled cloudinit
使用ISO文件制作openstack使用的coreOS镜像的更多相关文章
- U深度利用iso文件制作U盘启动盘
利用U盘装win10系统: 工具:U深度装机版 文件:win10.iso 步骤1:下载U深度装机版安装 步骤2:打开U深度,制作U盘启动盘,注意选择iso模式,如下图所示 接下来下一步即可,工具会 ...
- 制作openstack使用的Ubuntu镜像
一.环境准备 OS:Ubuntu-14.04 制作镜像版本:Ubuntu-14.04.4-server-amd64.iso 查看是否支持虚拟化(有输出代表支持,否则在BIOS页面中设置即可): egr ...
- 制作OpenStack使用的windows镜像
1 安装vmware14 2 创建ubuntu-desktop-16.04虚拟机 选择自定义安装 选择ubuntu-16.04-desktop.iso 内存要大于2G,推荐4G. 磁盘要大于50G 关 ...
- centos6.5制作OpenStack云平台Windows7镜像
# yum install virt-manager libvirt qemu-img virt-viewer -y # vi /etc/libvirt/qemu.conf # service lib ...
- Ubuntu下制作ISO文件
利用Ubuntu自带的命令mkisofs就可以制作iso文件,具体方法如下: 1. 如果你是直接从cd压制iso文件的,执行 sudo umount /dev/cdromdd if=/dev/cd ...
- (转)Linux下用mkisofs制作光盘镜像ISO文件
我们都知道在windows下有winiso可以将光盘制作成光盘镜像ISO文件,在linux下一个命令就搞定了.那就是mkisofs.先看看mkisofs的help. rory@dev:~$ mkiso ...
- 如何制作iso文件
UltraISO 9.6.2.3059中文完美破解安装版 http://www.upantool.com/qidong/2011/UltraISO_v9.5.0.2800.html 软碟通v9.6.2 ...
- 问题:UltraISO:这个软件有问题,它制作的iso文件会造成无法正确识别。用PowerISO吧
最近研究硬盘安装 centos7.6 (rhel 7.6)的 硬盘安装,因为原版dvd超过4G了,所以通过删除java-open-jdk的方式减少dvd光盘的大小. 但是前期用UltraISO制作的i ...
- windows server 2012 r2 安装无法找到install.wim 错误代码0x80070026,以及制作U启动盘决解ISO文件超过5G大小限制的解决方案(转)
戴尔服务器r530 windows server 2012 r2 安装无法找到install.wim 错误代码0x80070026,以及制作U启动盘决解ISO文件超过5G大小限制的解决方案 关于在服务 ...
随机推荐
- 【缺少kubernetes权限】 namespaces "xxx" is forbidden: User "xxx" cannot xxx resource "xxx" in API group "xxx" in the namespace "xxx"
需要添加权限,添加权限方式: https://github.com/argoproj/argo/issues/1068
- 触屏Tap模拟事件
触屏的click因为有双击判断所以有200ms的延迟,zepto里的touch.js兼容不好所以tap也没法直接用. gibhub上有个fastclick太大了. 自己用touched写个简单的模拟t ...
- 原生Js页面滚动延迟加载图片
原理和过程1.页面滚动加载事件2.获取元素在页面里的top值 根据滚动条的位置 判断何时显示图片3.获取元素集合 加载过的图片从集合里删除 效果预览:http://jsfiddle.net/dtdxr ...
- Python3-ibm_db模块-数据库操作之DB2
官方文档 https://www.ibm.com/support/knowledgecenter/SSEPGG_9.5.0/kc_gen/developing-gen1.html 模块安装 Windo ...
- Python机器学习基础教程-第2章-监督学习之线性模型
前言 本系列教程基本就是摘抄<Python机器学习基础教程>中的例子内容. 为了便于跟踪和学习,本系列教程在Github上提供了jupyter notebook 版本: Github仓库: ...
- python字符串/列表/元组/字典之间的相互转换(5)
一.字符串str与列表list 1.字符串转列表 字符串转为列表list,可以使用str.split()方法,split方法是在字符串中对指定字符进行切片,并返回一个列表,示例代码如下: # !usr ...
- hdu 2476 题解
题目 题意 给出两个字符串 $ s1,s2 $,每次操作可以使一段连续的子串全变成一个字母,问最少多少次操作可以使 $ s1 $ 变为 $ s2 $. 例如 $ zzzzzfzzzzz $,长度为 $ ...
- 【MIT 6.824 】分布式系统 课程笔记(一)
Lecture 02 Infrastructure: RPC & threads 一.多线程挑战 共享数据: 使用互斥信号量.或者避免共享 线程间协作: 使用channels 或者 waitg ...
- hugepage设置
1.设置memlock 编辑/etc/security/limits.conf 增加: * Soft memlock 稍小于RAM值 * hard memlock 稍小于RAM值 Memlock,锁定 ...
- Python3 - 随便说一下
Ⅰ编程语言基础知识 ⅡPython 语言概述 Ⅰ编程语言基础知识 编程语言总体分以为机器语言.汇编语言.高级语言: 机器语言:计算机硬件能够直接使用的编程语言,二进制的集合,属于低级语言. 汇编语言: ...