无法通过厨师食谱在 /mnt 上创建文件夹

unable to create folder on /mnt via chef recipe

我正在使用以下 chef 命令在 /mnt 上创建一个文件夹

directory '/mnt/node/deploy' do
  owner 'ubuntu'
  group 'ubuntu'
  mode '0755'
  recursive true
  action :create
end

这是通过打包程序调用以创建 AWS AMI 的配方的一部分。 ubuntu 是我用来将代码部署到已配置机器的用户。 当我使用 AMI 启动 EC2 实例时,该文件夹并未在计算机上创建。可能是什么问题呢?我在创建 AMI 时没有看到任何错误。

更新-1

这些是日志。我尝试使用 root。

`amazon-ebs: * directory[/mnt/node/deploy] action create`
`amazon-ebs: - create new directory /mnt/node/deploy`
`amazon-ebs: - change mode from '' to '0755'`
`amazon-ebs: - change owner from '' to 'root'`
`amazon-ebs: - change group from '' to 'root'`

我看到 EC2 正在 /mnt 上安装临时存储。 我想在临时存储上创建这些文件夹。 我卸载了 /mnt,但没有看到那里的文件夹。

amazon-ebs 是打包器生成器的名称:

amazon-ebs - Create EBS-backed AMIs by launching a source AMI and re-packaging it into a new AMI after provisioning. If in doubt, use this builder, which is the easiest to get started with.

它将整个机器作为 EBS-backed 运行,因此它可以稍后将 EBS 卷转换为 AMI。

这与 Chef 无关。

Packer 运行s Chef 在创建图像之前。所以,如果我理解正确的话:

  1. Chef 在实例临时存储上创建目录。
  2. Packer 创建 AMI。
  3. 您启动了 AMI,但目录在临时存储中不存在。

据我所知,这是预期的行为。该目录是在一个临时分区中创建的,这种分区预计不会持久。

总而言之,当您创建 AWS AMI 映像时,它不包括临时存储。只有 EBS 卷。临时分区在启动时始终为空。如果要保留该目录,它必须在 EBS 分区中。

如果您仍想使用 /mnt 目录,可以避免使用 ami_block_device_mappings 选项安装临时存储:

  "ami_block_device_mappings": [
    {
      "device_name": "/dev/sdb",
      "no_device": true
    }
  ],

launch_block_device_mappings

也一样

另一个解决方案可能是在新创建的实例中再次 运行 您的 Chef 食谱。