实例自定义数据2-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

实例自定义数据2

chenchuan 2018-08-22 06:35:04 777

Linux实例自定义数据

Linux实例自定义数据可以由几类Linux实例自定义脚本执行,包括 User-Data 脚本Cloud ConfigInclude 文件Gzip 压缩脚本 和 Upstart Job 等类型脚本。脚本采用开源的cloud-init架构,以 实例元数据 为数据来源,自动化配置Linux实例属性。更多详情,请参见cloud-init Formats

User-Data 脚本

User-Data可以是一个Shell脚本。仅在首次启动实例时执行一次。首行固定为 #!,例如 #!/bin/sh。User-Data脚本在Base64编码前脚本内容不能超过 16 KB。以下为User-Data脚本示例:



#!/bin/sh
echo "Hello World. The time is now $(date -R)!" | tee /root/output10.txt
service httpd start
chkconfig httpd on

实例创建完成后,启动并连接实例,执行命令 cat [file],查看脚本的执行结果。



[root@XXXXX2z ~]# cat output.txt
Hello World. The time is now Mon, 24 Jul 2017 13:03:19 +0800!
Cloud Config

Cloud Config是实现实例自定义数据最简单的方式,其交互方式非常友善。您可以使用Cloud Config预先配置实例的部分服务,如更新yum源、导入SSH密钥、安装依赖包等。Cloud Config首行固定为 #cloud-config,且页首不能有空格,需要以YAML文件的方式呈现。根据您配置的服务不同,实例自定义数据的运行频率也会不同。

Cloud Config 脚本在Base64编码前脚本内容不能超过16 KB。以下为Cloud Config脚本示例:



#cloud-config
apt:
primary:
- arches: [default]
uri: http://us.archive.ubuntu.com/ubuntu/
bootcmd:
- echo 192.168.1.130 us.archive.ubuntu.com >> /etc/hosts

实例创建完成后,启动并连接实例,查看运行结果。



Include文件

Include文件的内容由脚本链接组成,一行一个链接。实例启动时,cloud-init读取Include文件中脚本链接里的内容,一旦在某一行读取脚本内容时出错,实例停止读取自定义数据。Include文件首行固定为 #include且页首不能有空格。实例自定义数据的运行频率跟随Include文件中配置的脚本类型。

Include文件中脚本链接包含的内容在Base64编码前脚本内容不能超过16 KB。以下为Include文件示例:



#include
http://ecs-image-test.oss-cn-hangzhou.aliyuncs.com/UserData/myscript.sh

实例创建完成后,启动并连接实例,查看执行结果。

Gzip 压缩脚本

User-Data 脚本Cloud Config 和 Include文件 均要求脚本内容Base64编码前不能超过16 KB。若您的脚本内容有超出16 KB的趋势,可以采用Gzip压缩脚本。将脚本文件压缩后制作成脚本链接,以Include文件的形式呈现。Gzip压缩脚本首行固定为 #include,且页首不能有空格。实例自定义数据的运行频率跟随脚本类型。以下为Gzip压缩脚本示例:



#include
http://ecs-image-test.oss-cn-hangzhou.aliyuncs.com/userdata/config.gz
Upstart Job

使用Upstart Job类型脚本时,需要您的实例安装upstart作为init system,目前采用upstart的有CentOS 6、Ubuntu 10/12/14以及Debian 6/7。Upstart Job脚本将您的实例自定义数据放到 /etc/init 目录下。Upstart Job脚本首行固定为 #upstart-job,且页首不能有空格。每次启动实例均会执行您的实例自定义数据。以下为Upstart Job脚本示例:



#upstart-job
description "upstart test"
start on runlevel [2345]
stop on runlevel [!2345]
exec echo "Hello World. The time is now $(date -R)!" | tee /root/output.txt

Windows实例自定义数据

Windows实例自定义数据由ECS自主研发,为Windows实例提供运行初始化脚本的能力。在Base64编码前,自定义数据内容必须小于16 KB,只能输入半角字符,不能有多余字符。Windows实例自定义数据支持Bat批处理程序和PowerShell脚本。

Bat批处理程序

首行固定为 [bat],且页首不能有空格。例如:



[bat]
echo "bat test" > c:\1.txt

实例创建完成后,连接实例查看执行结果,在 C:\ 盘添加了 1.txt 文本文件。



PowerShell

首行固定为 [powershell],且页首不能有空格。例如:



[powershell]
write-output "Powershell Test" | Out-File C:\2.txt

参考链接

更多关于Linux实例自定义数据的信息,请参见 cloud-init Formats

更多关于自定义数据运行频率的信息,请参见 cloud-init 

数据实例 实例自定义数据 自定义实例
分享到
取消 提交回答
全部回答(0)
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

相似问题
最新问题
推荐课程