使用場景
當您有如下需求時,可以考慮使用文件注入功能將文件注入到彈性云主機:
- 需要通過腳本簡化彈性云主機配置
- 通過腳本初始化系統
- 已有腳本,在創建彈性云主機的時候一并上傳到服務器
- 其他可以使用腳本完成的事情
說明
虛擬化類型為KVM的彈性云主機,不支持文件注入功能,建議使用“用戶數據注入”功能,請參見用戶數據注入。
使用限制
-
Linux:
- 具有注入文件運行權限的用戶:root。
- 注入文件路徑:Linux系統分區下的任意目錄,路徑只能包含字母、數字、下劃線和點。例如/etc/foo.txt。
- Linux系統盤的文件類型支持:ext3和ext4。
- 注入腳本的默認權限是:讀寫。修改默認權限的方式:以root用戶登錄云主機后,進入注入文件目錄后執行如下命令:chmod 755 注入文件名。
- 注入文件執行方式:手工執行+自動執行
- 自動執行條件:注入文件的存放目錄為/etc/init.d且已修改了注入文件權限。
- 文件大小限制:小于等于1KB。
-
Windows
- 具有注入文件運行權限的用戶:administrator。
- 注入文件路徑:默認是C盤根目錄,不能在注入文件時修改文件注入路徑。
- Windows系統盤的文件類型支持:NTFS。
- 注入文件執行方式:手工執行。
- 文件大小限制:小于等于1KB。
使用方法
- 根據實際需要寫腳本,腳本符合操作系統要求即可。
- 創建彈性云主機時,選擇腳本并填寫腳本保存路徑。
- 系統創建彈性云主機,自動注入腳本。
- (Linux必選)修改腳本權限。
- 執行腳本。
使用場景1
該樣例介紹如何通過注入文件,簡化彈性云主機配置。
當您需要設置vim的“語法高亮顯示”、“制表符占用4個空格”和“顯示行數”屬性時,就可以寫一個腳本.vimrc,并將其注入到“/root/.vimrc”。在您創建完彈性云主機時,您的vim配置便完成了。這樣做可以大幅提高系統配置的效率,特別是在您一次性創建多臺彈性云主機時。
注入文件示例:
syntax on
set tabstop=4
set number
使用場景2
該樣例介紹如何通過注入文件方式,在系統開機時自動啟動腳本,完成初始化彈性云主機的操作。
當您希望每次開機時自動初始化防火墻配置,便可以將防火墻配置文件寫成腳本(假設腳本名initial.sh),并將其注入到“/etc/init.d”目錄。
腳本示例:
#! /bin/sh
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 49152:65534 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
注入腳本后的操作:
以下內容以CentOS6.5系統、文件名為initial.sh、runlevel為3為例。
由于默認情況下注入腳本是讀寫權限,因此在您第一次使用彈性云主機時,需要以root用戶登錄彈性云主機,執行如下命令修改文件權限并創建文件連接。
cd /etc/init.d
chmod 775 initial.sh
ln -s /etc/init.d/initial.sh /etc/rc.d/rc3.d/S98initial
說明
上述命令中的/etc/rc.d/rc3.d是runlevel為3時的腳本存放目錄。當runlevel取值為其他時,相應的目錄也需要修改,例如/etc/rc.d/rc2.d。
S98initial中S表示“系統啟動時運行”,98為腳本的啟動順序,也就是該腳本第98個啟動,可以根據需要調整。系統會按照啟動順序從小到大的依次執行腳本。
執行上述命令后,云主機每次開機時,會自動會啟動initial.sh,完成防火墻配置文件初始化。
使用場景3
該樣例介紹如何通過文件注入,激活彈性云主機的root用戶權限。注入成功后,您可以使用SSH密鑰方式,以root帳戶登錄彈性云主機。
注入文件示例:
#cloud-config
disable_root: false
runcmd:
- sed -i 's/^PermitRootLogin.*$/PermitRootLogin without-password/' /etc/ssh/sshd_config
- sed -i '/^KexAlgorithms.*$/d' /etc/ssh/sshd_config
- service sshd restart