无法通过厨师食谱在 /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 在创建图像之前。所以,如果我理解正确的话:
- Chef 在实例临时存储上创建目录。
- Packer 创建 AMI。
- 您启动了 AMI,但目录在临时存储中不存在。
据我所知,这是预期的行为。该目录是在一个临时分区中创建的,这种分区预计不会持久。
总而言之,当您创建 AWS AMI 映像时,它不包括临时存储。只有 EBS 卷。临时分区在启动时始终为空。如果要保留该目录,它必须在 EBS 分区中。
如果您仍想使用 /mnt
目录,可以避免使用 ami_block_device_mappings
选项安装临时存储:
"ami_block_device_mappings": [
{
"device_name": "/dev/sdb",
"no_device": true
}
],
也一样
另一个解决方案可能是在新创建的实例中再次 运行 您的 Chef 食谱。
我正在使用以下 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 在创建图像之前。所以,如果我理解正确的话:
- Chef 在实例临时存储上创建目录。
- Packer 创建 AMI。
- 您启动了 AMI,但目录在临时存储中不存在。
据我所知,这是预期的行为。该目录是在一个临时分区中创建的,这种分区预计不会持久。
总而言之,当您创建 AWS AMI 映像时,它不包括临时存储。只有 EBS 卷。临时分区在启动时始终为空。如果要保留该目录,它必须在 EBS 分区中。
如果您仍想使用 /mnt
目录,可以避免使用 ami_block_device_mappings
选项安装临时存储:
"ami_block_device_mappings": [
{
"device_name": "/dev/sdb",
"no_device": true
}
],
也一样
另一个解决方案可能是在新创建的实例中再次 运行 您的 Chef 食谱。