Openstack文件和元數據注入

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和fusepython

本文檔是以nova命令行的方式,圖形對有些參數的支持尚未ubuntu

使用nova命令須要設置如下參數vim

export OS_USERNAME=usercentos

export OS_PASSWORD=pass安全

export OS_TENANT_NAME='tenant'ssh

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

  1. 注入ssh密鑰

a) 建立密鑰(ssh-keygen)加密

b) 添加密鑰對url

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 <dst-path=src-path>

  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"}

獲得初始化腳本的地址,下載下來並執行,這樣的好處是對不一樣的須要能夠有多個初始化文件,而不用修改模板

相關文章
相關標籤/搜索