AWS 启动配置未获取用户数据
AWS Launch Configuration not picking up user data
我们正在尝试在 AWS 中构建一个配置有弹性负载均衡器(假设为 ELB)的自动缩放组(假设为 AS)。自动缩放组本身配置有启动配置(比如说 LC)。据我从 AWS 文档中了解到,在启动配置的用户数据部分按原样粘贴脚本将 运行 每个实例的脚本都启动到与该自动缩放关联的自动缩放组中组.
例如,将此粘贴到用户数据中会在 t2 micro ubuntu 图像的主文件夹中提供一个名为 configure 的文件:
#!/bin/bash
cd
touch configure
我们的最终目标是:
增加 Auto Scaling 组中的实例,它们使用我们的启动脚本启动,并且这个新实例被添加到标记有 Auto Scaling 组的负载均衡器后面。但是脚本没有在实例启动时执行。我的问题是:
1.我在这里遗漏了什么吗?
2. 在 Auto Scaling 组中启动任何新实例时,我应该如何处理 运行 我们的启动脚本?
3. 有什么方法可以验证用户数据是否真的被发布时获取了?
你的方向是对的。你的用户数据脚本有问题。
问题一:
您必须记住,用户数据将作为用户 root
而不是 ubuntu
执行。因此,如果您的脚本运行良好,您会在 /root/configure
中找到您的文件,而不是在 /home/ubuntu/configure
.
中
问题二:
您的脚本实际上正在执行,但它不正确并且在 cd
命令中失败,因此未创建文件。
cd
没有给定任何目录的内置命令将尝试执行 cd $HOME
,但是 $HOME
在 cloud-init 运行 期间未设置,因此您必须在这里明确。
将您的脚本更改为以下,它会起作用:
#!/bin/bash
cd /root
touch configure
您还可以通过检查 /var/log/cloud-init.log
日志文件来调试用户数据脚本的问题,特别是检查其中的错误:grep -i error /var/log/cloud-init.log
希望对您有所帮助!
我们正在尝试在 AWS 中构建一个配置有弹性负载均衡器(假设为 ELB)的自动缩放组(假设为 AS)。自动缩放组本身配置有启动配置(比如说 LC)。据我从 AWS 文档中了解到,在启动配置的用户数据部分按原样粘贴脚本将 运行 每个实例的脚本都启动到与该自动缩放关联的自动缩放组中组.
例如,将此粘贴到用户数据中会在 t2 micro ubuntu 图像的主文件夹中提供一个名为 configure 的文件:
#!/bin/bash
cd
touch configure
我们的最终目标是: 增加 Auto Scaling 组中的实例,它们使用我们的启动脚本启动,并且这个新实例被添加到标记有 Auto Scaling 组的负载均衡器后面。但是脚本没有在实例启动时执行。我的问题是: 1.我在这里遗漏了什么吗? 2. 在 Auto Scaling 组中启动任何新实例时,我应该如何处理 运行 我们的启动脚本? 3. 有什么方法可以验证用户数据是否真的被发布时获取了?
你的方向是对的。你的用户数据脚本有问题。
问题一:
您必须记住,用户数据将作为用户 root
而不是 ubuntu
执行。因此,如果您的脚本运行良好,您会在 /root/configure
中找到您的文件,而不是在 /home/ubuntu/configure
.
问题二:
您的脚本实际上正在执行,但它不正确并且在 cd
命令中失败,因此未创建文件。
cd
没有给定任何目录的内置命令将尝试执行 cd $HOME
,但是 $HOME
在 cloud-init 运行 期间未设置,因此您必须在这里明确。
将您的脚本更改为以下,它会起作用:
#!/bin/bash
cd /root
touch configure
您还可以通过检查 /var/log/cloud-init.log
日志文件来调试用户数据脚本的问题,特别是检查其中的错误:grep -i error /var/log/cloud-init.log
希望对您有所帮助!