【问题标题】:How do I get userdata to execute on a custom Ubuntu 18.04 AMI?如何让用户数据在自定义 Ubuntu 18.04 AMI 上执行?
【发布时间】:2019-05-06 01:40:49
【问题描述】:

我已经使用基于 Canonical 的官方 Ubuntu 18.04 AMI 的 Packer 创建了一个安装了 Nginx 的自定义 AMI,但是在部署 Packer 生成的 AMI 时我无法获取用户数据来执行。

以下是我在 Packer 构建中执行的 shell 命令:

"provisioners": [ { "type": "shell", "inline": [ "sudo apt-get update", "sudo apt-get upgrade -y", "sudo apt-get install nginx -y", "sudo rm -f /var/log/cloud-init.log", "sudo rm -f /var/log/cloud-init-output.log", "sudo rm -rf /var/lib/cloud/*", "sudo cloud-init init", "sudo cloud-init modules -m final" ] } ]

我已尝试删除最后 2 个命令,但似乎没有任何区别。

【问题讨论】:

  • 自定义AMI如何?您是否基于已安装 cloud-init 的现有 AMI(例如官方 Ubuntu/Amazon Linux AMI 等)?还是您是从服务器 ISO 创建的?
  • 源 AMI 是 Canonical 的官方 18.04 版本。将更新问题描述以反映这一点。
  • 是什么让您认为在重新烘焙 AMI 时需要对 cloud-init 执行任何操作?你不应该在这里做任何事情,所以你应该能够在你的第 3 行之后停下来,这应该没问题。如果它不起作用,那么您能否显示您尝试执行的用户数据并显示在使用 NGINX AMI 运行实例时触发的相关 cloud-init 日志?

标签: ubuntu amazon-ec2 terraform packer cloud-init


【解决方案1】:

我们尝试了这种方法,但无法在机器启动时运行自定义脚本。我假设您正在使用 Terraform/Ansible/Cloudformation 来配置资源。我们将用户数据脚本移至 terraform 脚本(也可以在 Ansible 中完成),该脚本提供基础设施并分配 AMI。它对我们有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-04
    • 2020-09-15
    • 1970-01-01
    • 2019-06-01
    • 2019-05-31
    • 2020-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多