自定義數(shù)據(jù)
自定義數(shù)據(jù)(UserData)是指主機(jī)初次啟動(dòng)或每次啟動(dòng)時(shí),系統(tǒng)自動(dòng)運(yùn)行的配置腳本,該腳本可由控制臺(tái)/API等傳入元數(shù)據(jù)服務(wù)器,并由主機(jī)內(nèi)的cloud-init程序獲取。
判斷主機(jī)是否支持用戶自定義數(shù)據(jù),需要確認(rèn)鏡像內(nèi)部已安裝了cloud-init(對(duì)于新網(wǎng)云提供的官方鏡像,或基于新網(wǎng)云鏡像制作的自定義鏡像,可通過(guò)鏡像的Feature數(shù)組中是否包含CloudInit項(xiàng),來(lái)判斷系統(tǒng)中是否安裝該程序),當(dāng)符合條件時(shí),主機(jī)創(chuàng)建頁(yè)面會(huì)展示“自定義數(shù)據(jù)”選項(xiàng)。
Cloud-Init
Cloud-init是由Linux發(fā)行版Ubuntu的母公司Canonical推出的一款開源軟件,此軟件可被安裝在主流的Linux發(fā)行版上(Ubuntu,CentOS,Debian,等),主要的用途是在云計(jì)算平臺(tái)上幫助用戶初始化其創(chuàng)建的云主機(jī)。
用戶自定義數(shù)據(jù)(Userdata)是Cloud-Init默認(rèn)提供的機(jī)制,多云通用。
創(chuàng)建主機(jī)時(shí)傳入自定義數(shù)據(jù)
通過(guò)控制臺(tái)/API,可以在創(chuàng)建主機(jī)時(shí)傳入自定義數(shù)據(jù)。支持的腳本類型包括:User-Data、Cloud Config、Include、Gzip壓縮腳本、 Upstart Job等。
注意:腳本內(nèi)容不能超過(guò)16 KB。
User-data腳本
首行固定為#!,例如#!/bin/bash,或#!/bin/python等
僅在首次啟動(dòng)實(shí)例時(shí)執(zhí)行一次。
示例 1:在主機(jī)創(chuàng)建完成后輸出Hello World
Plaintext #!/bin/shecho “Hello World!”CopyErrorSuccess |
創(chuàng)建完成后,將能在/var/log/cloud-init-output.log日志文件的末尾看到”Hello World!”字樣。
示例 2: 主機(jī)啟動(dòng)開啟Httpd服務(wù)
Plaintext #!/bin/bashservice httpd start chkconfig httpd onCopyErrorSuccess |
Cloud Config腳本
首行固定為#cloud-config
表明你提供的是一段由Cloud-Init原生定義的一套yaml格式的專用配置數(shù)據(jù),它幾乎囊括了所有與操作系統(tǒng)配置相關(guān)的抽象描述。
詳情請(qǐng)參考
示例 1: 修改Hostname
Plaintext #cloud-confighostname: uhost1CopyErrorSuccess |
示例 2: 修改數(shù)據(jù)盤掛載點(diǎn)到/opt/data
Plaintext #cloud-configmounts:- [ /dev/vdb, /opt/data ]CopyErrorSuccess |
示例 3: 主機(jī)創(chuàng)建后自動(dòng)執(zhí)行一次yum update或者apt-get upgrade
Plaintext #cloud-configpackage_upgrade: trueCopyErrorSuccess |
示例 4: 創(chuàng)建主機(jī)時(shí)配置密鑰
Plaintext #cloud-configssh_authorized_keys:- ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAGEA3FSyQwBI6Z+nCSjUUk8EEAnnkhXlukKoUPND/RRClWz2s5TCzIkd3Ou5+Cyz71X0XmazM3l5WgeErvtIwQMyT1KjNoMhoJMrJnWqQPOt5Q8zWd9qG7PBl9+eiH5qV7NZ mykey@host CopyErrorSuccess |
其他腳本類型
UHost還支持傳入Include腳本、Gzip壓縮腳本、 Upstart Job等腳本類型。
詳情請(qǐng)參考
主機(jī)內(nèi)獲取自定義數(shù)據(jù)
通過(guò)以下方式,可在主機(jī)內(nèi)部獲取用戶自定義數(shù)據(jù)
Plaintext curl http://100.80.80.80/user-dataCopyErrorSuccess |