设置自定义数据

最近更新时间:2018-12-10 11:09:49

操作场景

用户在创建云服务器时,您可以通过指定自定义数据配置实例。当服务器首次启动时,自定义数据将以文本方式传递到云服务器中,并执行该文本。如果您一次购买多台云服务器,自定义数据会在所有的云服务器首次启动时运行。
本文以 Linux 云服务器首次启动时,通过传递 Shell 格式的脚本,实现输出 "Hello Tencent Cloud" 为例。

注意事项

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

操作步骤

编写 Shell 脚本

参考以下内容,创建 Shell 脚本文件。
例如,按照以下内容,创建一个文件名称为 script_text 的 Shell 脚本文件。

#!/bin/bash
echo "Hello Tencent Cloud."

注意:

Shell 脚本必须以#!字符以及指向要读取脚本的解释器的路径(通常为/bin/bash)开头。有关 Shell 脚本的更多介绍,请参阅 Linux 文档项目 (tldp.org) 的 BASH 编程方法

使用 Base64 编码脚本文件

注意:

请在 Linux 环境下进行编码,避免格式不兼容。

  1. 执行以下命令,对脚本进行 Base64 编码操作。
    # 对脚本进行 Base64 编码操作
    base64 script_text
    进行 Base64 编码操作后,返回以下信息:
    # 编码之后的结果:
    IyEvYmluL2Jhc2gKCmVjaG8gIldlbGNvbWUgVG8gVGVuY2VudCBDbG91ZC4iCg==
  2. 执行以下命令,验证对脚本进行 Base64 编码的返回结果。
    # 对返回的结果进行Base64解码,以验证是否为需要执行的命令
    echo "IyEvYmluL2Jhc2gKZWNobyAiSGVsbG8gVGVuY2VudCBDbG91ZC4iCg==" | base64 -d

传递文本

我们提供多种启动实例的方式,主要分为以下两种情况。请根据您的实际情况进行选择:

通过官网或控制台传递

  1. 通过腾讯云官网或控制台创建云服务器。
  2. 4.设置安全组和主机界面中,选择高级设置,并在 “自定义数据” 中填写您 使用 Base64 编码脚本文件 返回的编码结果。如下图所示:
    例如,对 script_text 脚本文件进行 Base64 编码,返回 IyEvYmluL2Jhc2gKCmVjaG8gIldlbGNvbWUgVG8gVGVuY2VudCBDbG91ZC4iCg== 编码结果。
  3. 按照界面信息逐步操作,完成创建并启动云服务器。

    说明:

    腾讯云服务器将通过开源软件 cloud-init 执行脚本。有关 cloud-init 的更多内容,请参阅 cloud-init 官方网站

通过 API 传递

当您通过 API 创建云服务器时,可以将 使用 Base64 编码脚本文件 中返回的编码结果赋值给 RunInstances 接口的 UserData 参数,以此来传递文本。以创建一个带 UserData 参数的云服务器的请求参数为例:

https://cvm.tencentcloudapi.com/?Action=RunInstances
  &Version=2017-03-12
  &Placement.Zone=ap-guangzhou-2
  &ImageId=img-pmqg1cw7
  &UserData=IyEvYmluL2Jhc2gKCmVjaG8gIldlbGNvbWUgVG8gVGVuY2VudCBDbG91ZC4iCg==
  &<公共请求参数>