我使用以下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,但没有看到那里的文件夹。
答案 0 :(得分:1)
Packer在创建图像之前运行Chef。所以,如果我理解正确的话:
AFAIK是预期的行为。该目录是在一个短暂的分区中创建的,并且预计这种分区不会持久。
总结一下,当您创建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 cookbook。
答案 1 :(得分:0)
amazon-ebs
是打包器构建器的名称:
amazon-ebs
- 通过启动源AMI和创建EBS支持的AMI 在配置之后将其重新打包成新的AMI。如有疑问,请使用 这个构建器,这是最容易上手的。
它以EBS支持的方式运行整个机器,因此它可以在以后将EBS卷转换为AMI。
这与Chef无关。