自定义数据
自定义数据(UserData)是指主机初次启动或每次启动时,系统自动运行的配置脚本,该脚本可由控制台/API等传入元数据服务器,并由主机内的cloud-init程序获取。
判断主机是否支持用户自定义数据,需要确认镜像内部已安装了cloud-init(对于安联云提供的官方镜像,或基于安联云镜像制作的自定义镜像,可通过镜像的Feature数组中是否包含CloudInit项,来判断系统中是否安装该程序),当符合条件时,主机创建页面会展示“自定义数据”选项。
Cloud-Init
Cloud-init是由Linux发行版Ubuntu的母公司Canonical推出的一款开源软件,此软件可被安装在主流的Linux发行版上(Ubuntu,CentOS,Debian,等),主要的用途是在云计算平台上帮助用户初始化其创建的云主机。
用户自定义数据(Userdata)是Cloud-Init默认提供的机制,多云通用。
创建主机时传入自定义数据
通过控制台/API,可以在创建主机时传入自定义数据。支持的脚本类型包括:User-Data、Cloud Config、Include、Gzip压缩脚本、 Upstart Job等。
注意:脚本内容不能超过16 KB。
User-data脚本
首行固定为#!,例如#!/bin/bash,或#!/bin/python等
仅在首次启动实例时执行一次。
**示例 1:**在主机创建完成后输出Hello World
#!/bin/sh
echo “Hello World!”
创建完成后,将能在/var/log/cloud-init-output.log日志文件的末尾看到”Hello World!”字样。
**示例 2: **主机启动开启Httpd服务
#!/bin/bash
service httpd start
chkconfig httpd on
Cloud Config脚本
首行固定为#cloud-config
表明你提供的是一段由Cloud-Init原生定义的一套yaml格式的专用配置数据,它几乎囊括了所有与操作系统配置相关的抽象描述。
详情请参考官方示例
示例 1: 修改Hostname
#cloud-config
hostname: uhost1
示例 2: 修改数据盘挂载点到/opt/data
#cloud-config
mounts:
- [ /dev/vdb, /opt/data ]
示例 3: 主机创建后自动执行一次yum update或者apt-get upgrade
#cloud-config
package_upgrade: true
示例 4: 创建主机时配置密钥
#cloud-config
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAGEA3FSyQwBI6Z+nCSjUUk8EEAnnkhXlukKoUPND/RRClWz2s5TCzIkd3Ou5+Cyz71X0XmazM3l5WgeErvtIwQMyT1KjNoMhoJMrJnWqQPOt5Q8zWd9qG7PBl9+eiH5qV7NZ mykey@host
其他脚本类型
云主机还支持传入Include脚本、Gzip压缩脚本、 Upstart Job等脚本类型。
详情请参考 Cloud-init官方文档
主机内获取自定义数据
通过以下方式,可在主机内部获取用户自定义数据
curl http://100.80.80.80/user-data