设置自定义数据(Linux 云服务器)

最近更新时间: 2023-03-24 10:48:12

操作场景
在创建云服务器时,您可以通过指定自定义数据,进行配置实例。当云服务器首次启动时,自定义数据将以文本的方式传递到云服务器中,并执行该文本。如果您一次申请多台云服务器,自定义数据会在所有的云服务器首次启动时运行该文本。
本文以 Linux 云服务器首次启动时,通过传递 Shell 格式的脚本为例。
注意事项

  • 支持自定义数据的 Linux 操作系统包括:
  • o64位操作系统:CentOS 6.8 64位及以上、Ubuntu Server 14.04.1 LTS 64位及以上、suse42.3x86_64
  • o32位操作系统:CentOS 6.8 32位及以上
  • 仅限首次启动云服务器时,通过传递文本执行命令。
  • 传递的文本必须经过 Base64 编码。请在 Linux 环境下进行编码,避免格式不兼容。
  • 使用 root 帐号执行用户数据输入的文本,在脚本中不使用 sudo 命令。您创建的任何文件都将归 root 所有,如果您需要非根用户具有文件访问权,请在脚本中修改权限。
  • 在启动时,执行自定义数据中指定的任务会增加启动服务器所需的时间。建议您等待几分钟,并在任务完成后,测试任务是否已成功执行。
  • 本示例中,Shell 脚本必须以#!字符以及指向要读取脚本的解释器的路径(通常为 /bin/bash)开头。
  • 操作步骤*
  • 编写 Shell 脚本*

1.执行以下命令,创建一个名称 “script_text.sh” 的 Shell 脚本文件。 vi script_text.sh
2.按 i 切换至编辑模式,参考以下内容,写入并保存 “script_text.sh” 脚本文件。
#!/bin/bash
echo "Hello Yun Cloud."
使用 Base64 编码脚本文件
1.执行以下命令,对 “script_text.sh” 脚本文件进行 Base64 编码操作。
2.# 对脚本进行 Base64 编码操作
base64 script_text.sh
返回以下信息:

编码之后的结果

IyEvYmluL2Jhc2gKZWNobyAiSGVsbG8gVGVuY2VudCBDbG91ZC4iCg==
3.执行以下命令,验证对脚本进行 Base64 编码的返回结果。

对返回的结果进行Base64解码,以验证是否为需要执行的命令

echo "IyEvYmluL2Jhc2gKZWNobyAiSGVsbG8gVGVuY2VudCBDbG91ZC4iCg==" | base64 -d
传递文本
当您通过 API 创建云服务器时,可以将 使用 Base64 编码脚本文件 中返回的编码结果赋值给 RunInstances 接口的 UserData 参数,以此来传递文本。
例如,创建一个带 UserData 参数的云服务器的请求参数,其示例如下:
https://cvm.cloudapi.com/?Action=RunInstances
&Version=2017-03-12
&Placement.Zone=ap-guangzhou-2
&ImageId=img-pmqg1cw7
&UserData=IyEvYmluL2Jhc2gKZWNobyAiSGVsbG8gVGVuY2VudCBDbG91ZC4iCg== &<公共请求参数>
查看执行日志
成功创建服务器后,您可执行以下命令,查看脚本执行日志:
cat /var/log/cloud-init-output.log