Vagrant 厨师长中的mktemp命令

Vagrant 厨师长中的mktemp命令,vagrant,chef-infra,chef-recipe,chef-solo,Vagrant,Chef Infra,Chef Recipe,Chef Solo,有人知道Chef是否有类似于linux上的mktemp命令的资源吗 基本上,我正在寻找一种远程下载文件并将其保存在/tmp下的方法,但我希望将其保存为uniq文件名 remote_file "/tmp/ec2-ami-tools.zip" do source "http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools-1.5.6.zip" action :create end 我希望有一个安全的uniq文件名,而不是使用/tmp/ec2 a

有人知道Chef是否有类似于linux上的
mktemp
命令的资源吗

基本上,我正在寻找一种远程下载文件并将其保存在/tmp下的方法,但我希望将其保存为uniq文件名

remote_file "/tmp/ec2-ami-tools.zip" do
  source "http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools-1.5.6.zip"
  action :create
end
我希望有一个安全的uniq文件名,而不是使用
/tmp/ec2 ami tools.zip
作为目标文件名。除了使用datetime random,Chef中是否有官方资源可以这样做?我想知道厨师是否有可以生成UUID的资源


感谢您准确回答您的问题(创建临时文件):

我强烈反对这样做,因为在每次运行时,文件都会被下载并解压缩(临时文件会更改),而不会对配方进行任何幂等处理


警察可以在这个案子上帮你

它有一个轻量级的资源提供者正是针对这个目标,下载一个tarball,提取它,然后选择做一些事情

《方舟自述》中的示例:

本例将ivy.tar.gz复制到/var/cache/chef/ivy-2.2.0.tar.gz, 将其内容解压缩到/usr/local/ivy-2.2.0/--剥离引线 目录和符号链接/usr/local/ivy到/usr/local/ivy-2.2.0

 # install Apache Ivy dependency resolution tool
 ark "ivy" do
   url 'http://someurl.example.com/ivy.tar.gz'
   version '2.2.0'
   checksum '89ba5fde0c596db388c3bbd265b63007a9cc3df3a8e6d79a46780c1a39408cb5'
   action :install
 end
根据你的例子,我会这样做:

ark 'ec2-ami-tools' do
  url 'http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools-1.5.6.zip'
  version '1.5.6'
  action :install
end
校验和将避免调用Web服务器查看文件是否已更改,因为磁盘上的zip校验和将与资源校验和进行比较,如果它们匹配,则将在此时停止


ckecksum是该文件的一个
sha256sum

您能再解释一下您的用例吗?我几乎不知道如何使用
mktemp
获得幂等元,但ruby有一个等价的IIRC。我想从互联网上下载一个zip文件,用uniq名称(ex:/tmp/abc1232341234.zip)本地存储在临时文件夹中,然后运行unzip命令来解压(ex:unzip/tmp/abc1232341234.zip)。我不明白的是希望使用唯一的名称,而不是下载的文件名或选择名称。看一看方舟食谱,它可以下载和解包,我想它应该能满足你的需要。(抱歉,目前没有链接)
ark 'ec2-ami-tools' do
  url 'http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools-1.5.6.zip'
  version '1.5.6'
  action :install
end