有没有人知道厨师是否有类似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我希望有一个安全的/tmp/ec2-ami-tools.zip文件名,而不是使用uniq作为目标文件名。除了使用datetime random之外,Chef中是否有官方资源可以做到这一点?我想知道厨师是否有资源可以生成UUID
谢谢
发布于 2015-03-24 16:54:37
要准确回答您的问题(创建临时文件):
require 'tempfile'
mydest = Tempfile.new('ec2-ami-tools.zip')
remote_file mydest do
source "http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools-1.5.6.zip"
action :create
notifies :run,"execute[unzip #{mydest}", :immediately
end
execute "unzip #{mydest}" do
action :nothing
endI highly不鼓励这样做,因为在每次运行时,文件都会被下载并解压缩(临时文件会发生变化),而没有任何配方的幂等性。
在这个案例中,ark cookbook可以帮助你。
它有一个专门针对这个目标的LighWeight资源提供程序,它下载一个tarball文件,将其解压缩,然后可选地在之后做一些事情。
方舟自述文件中的示例:
此示例将缓存复制到/var/ ivy.tar.gz /chef/ Ivy -2.2.0.tar.gz,将其内容解压缩到/usr/http://someurl.example.com/ivy.tar.gz/ivy-2.2.0/ --剥离引导目录,并将/usr/local/ivy符号链接到/usr/local/ivy-2.2.0安装Apache ivy依赖项解析工具ark "ivy“do url 'http://someurl.example.com/ivy.tar.gz‘version '2.2.0’checksum 操作: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校验和将避免调用see服务器来查看文件是否已更改,因为磁盘上的zip校验和将与资源校验和进行比较,如果它们匹配,则将在此时停止。
校验和是文件的sha256sum。
https://stackoverflow.com/questions/29173046
复制相似问题