立即注册 登录
About云-梭伦科技 返回首页

xuanxufeng的个人空间 https://www.aboutyun.com/?53 [收藏] [复制] [分享] [RSS]

日志

Openstack文件和元数据注入

已有 1143 次阅读2015-11-30 11:54

openstack在创建实例的时候可以将文件注入到实例中,也可以传一些参数到实例,这在有些情况下会非常有用,比如修改root密码,注入ssh密钥,对实例的个性化定制(后面会举例子) 
Note: 只有注入文件失败才会使创建实例过程失败 
对注入的支持可以有loop, guestfs, nbd, mount等,其中 mount 不安全。缺省使用: 
img_handlers=”loop,nbd,guestfs” 
对于nbd,在ubuntu下只需要加载内核模块(modprobe nbd)和安装qemu-nbd 
在centos下就比较麻烦了,需要手工编译 nbd 和 qemu-nbd 
Guestfs方法比较简单,只需要安装正确的包就可以,ubuntu下安装guestmount, centos需要安装libguestfs和fuse

本文档是以nova命令行的方式,图形对有些参数的支持还没有

使用nova命令需要设置以下参数

export OS_USERNAME=user

export OS_PASSWORD=pass

export OS_TENANT_NAME='tenant'

export OS_AUTH_URL=http://localhost:5000/v2.0

  1. 注入ssh密钥

a) 创建密钥(ssh-keygen)

b) 添加密钥对

i. nova keypair-add –pub_key .ssh/id_rsa.pub mykey

c) 创建实例的时候注入密钥

i. nova boot –key_name mykey –image id_of_image –flavor 1 name_of_instance

Note: id_of_image可以通过nova image-list取得

  1. 注入文件

假如我要注入.vimrc这个文件到新创建的实例中,可以:

nova boot –file /root/.vimrc=/root/.vimrc –image id_of_image –flavor 1 name_of_instance

Note: 可以注入多个文件(最多5个),只要写多个–file

  1. 注入元数据

可以通过–meta给实例中传入键值对,注入后会写在/meta.js文件里,以类似python字典的方式存储在虚拟机的/meta.js文件中

nova boot –meta key2=value2 –meta key1=value1 –image id_of_image –flavor 1 name_of_instance

Cat /meta.js # 虚拟机中

{"key2”: “value2”, “key1”: “value1”}

  1. 示例:

假如我们想让新创建的实例运行一个初始化脚本,但这个脚本会根据不用的需求有所变化,我们可以这样做

在创建镜像模板的时候在/etc/rc.local中加入

/opt/init.py

Init.py可以读取注入的元数据(meta.js)比如

{“url”: “http://example.com/init.sh”}

得到初始化脚本的地址,下载下来并执行,这样的好处是对不同的需要可以有多个初始化文件,而不用修改模板


路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

关闭

推荐上一条 /2 下一条