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