021-制作OpenStack镜像官方文档
可参考官方文档: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
021-制作OpenStack镜像官方文档的更多相关文章
- hbase官方文档(转)
FROM:http://www.just4e.com/hbase.html Apache HBase™ 参考指南 HBase 官方文档中文版 Copyright © 2012 Apache Soft ...
- 【Docker官方文档】理解Docker
本文来自Docker的官方文档,详细介绍了Docker的体系结构.重要概念.内部工作机理等内容,推荐不了解Docker内部原理的同学阅读. 什么是Docker? Docker是一个用于开发.交付和运行 ...
- HBase 官方文档
HBase 官方文档 Copyright © 2010 Apache Software Foundation, 盛大游戏-数据仓库团队-颜开(译) Revision History Revision ...
- Hive官方文档
Hive官方文档 内容列表 Cloudera制作的Hive介绍视频 安装与配置 系统需求 安装Hive发行版 从Hive源码编译 运行Hive 配置管理概览 运行时配置 Hive, Map-R ...
- HBase官方文档
HBase官方文档 目录 序 1. 入门 1.1. 介绍 1.2. 快速开始 2. Apache HBase (TM)配置 2.1. 基础条件 2.2. HBase 运行模式: 独立和分布式 2.3. ...
- 【Phabricator】教科书一般的Phabricator安装教程(配合官方文档并带有踩坑解决方案)
随着一声惊雷和滂沱的大雨,我的Phabricator页面终于在我的学生机上跑了起来. 想起在这五个小时内踩过的坑甚如大学隔壁炮王干过的妹子,心里的成就感不禁油然而生. 接下来,我将和大家分享一下本人在 ...
- 2DToolkit官方文档中文版打地鼠教程(二):设置摄像机
这是2DToolkit官方文档中 Whack a Mole 打地鼠教程的译文,为了减少文中过多重复操作的翻译,以及一些无必要的句子,这里我假设你有Unity的基础知识(例如了解如何新建Sprite等) ...
- Ionic2系列——Ionic 2 Guide 官方文档中文版
最近一直没更新博客,业余时间都在翻译Ionic2的文档.之前本来是想写一个入门,后来觉得干脆把官方文档翻译一下算了,因为官方文档就是最好的入门教程.后来越翻译越觉得这个事情确实比较费精力,不知道什么时 ...
- 一起学微软Power BI系列-官方文档-入门指南(1)Power BI初步介绍
我们在前一篇文章微软新神器-Power BI,一个简单易用,还用得起的BI产品中,我们初步介绍了Power BI的基本知识.由于Power BI是去年开始微软新发布的一个产品,虽然已经可以企业级应用, ...
随机推荐
- DjangoRestFrameWork 版本控制
DRF的版本控制 为什么需要版本控制 API 版本控制允许我们在不同的客户端之间更改行为(同一个接口的不同版本会返回不同的数据). DRF提供了许多不同的版本控制方案. 可能会有一些客户端因为某些原因 ...
- Oracle开发:dba和sysdba的区别
oracle dba和sysdba的区别如下: 1.dba是一种role对应的是对Oracle实例里对象的操作权限的集合,而sysdba是概念上的role是一种登录认证时的身份标识而已.而且,dba是 ...
- MyBaits动态sql语句
1 在接口中书写方法 public interface EmployeeMapperDynamicSQL { public List<Employee> getEmpsTestInnerP ...
- python学习笔记:(六)str(字符串)常用方法
注意点: 1.字符串是不可变的: 2.%格式化操作符:左侧放置字符串,右侧放置希望被格式化的值. 对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应 ...
- Linux centos 解决"不在 sudoers 文件中。此事将被报告"的问题
第一部分讲解如何从普通用户到root用户 网上看了很多,其实就是执行 su root ,然后输入当前用户密码,这个时候可能报错 这个问题不大,执行一下提示的语句: abrt-auto-reportin ...
- Java中关于Date等日期类的简单使用
Date Date类不常用,很多方法被废弃了,常用它的两个构造方法来new一个Date对象. Date d1 = new Date(); //不传任何参数,代表当前时间点 System.out.pri ...
- Java多线程学习——图片下载
实现多线程方式1:继承类Thread——重写方法run——调用方法start 从网络下载图片首先要增加包commons-io.jar import org.apache.commons.io.File ...
- 基于 Timer是一种定时器工具
没有依赖 通过Timer中的schedule方法启动定时任务 一般不采用此方法 /** * ------------------------------------------------------ ...
- 【嵌入式linux】用户登录密码验证配置
在配置BusyBox中配置登录密码: 配置位置BusyBox Setting --> General Configuration --> Suppo ...
- MySQL-快速入门(1)基本数据库、表操作语句
1.创建数据库 create database db_name;show create database db_name\G; //查看数据创建语句show databases; //查看当前创建的数 ...