使用场景
当您有如下需求时,可以考虑使用文件注入功能将文件注入到弹性云主机:
- 需要通过脚本简化弹性云主机配置
- 通过脚本初始化系统
- 已有脚本,在创建弹性云主机的时候一并上传到服务器
- 其他可以使用脚本完成的事情
说明虚拟化类型为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