有没有人知道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
而不是使用/tmp/ec2-ami-tools.zip
作为目标文件名,我希望有一个安全的uniq文件名。除了使用日期时间随机,是否在Chef中有官方资源?我想知道Chef是否有可以生成UUID的资源
由于
答案 0 :(得分:0)
准确回答您的问题(创建临时文件):
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
end
我高度不鼓励这样做,因为在每次运行时,文件将被下载并解压缩(Tempfile将更改),而不会对配方进行任何幂等性。
ark cookbook可以帮助您解决此问题。
它有一个LighWeight资源提供程序,完全针对这个目标,下载一个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
。