chef中包资源的“source”属性

时间:2017-07-08 15:36:47

标签: chef chef-recipe

我是厨师的初学者,并慢慢深入潜水。我对资源“Package”的“source”属性有疑问。文档说“source”属性使用本地文件系统存储的文件而不是HTTP或FTP。我有一个'TOMCAT tar'文件和'Java RPM'包安装在节点上。

就像资源“cookbook_file”如何将文件保存在cookbooks目录的“file”目录中一样: tree structure of apache cookbook

资源“package”的“source”属性从哪个本地文件系统获取文件?它是否从相同的'files'目录中获取文件?或在任何其他文件夹?我写了一个简单的食谱,假设“source”属性默认采用“file”目录中的文件。但这没有成功:

包'安装JAVA'做   源'jdk-8u131-linux-x64'   行动:安装 端

包'安装tomcat版本9'做     来源'apache-tomcat-9.0.0.M22.tar'     行动:安装 端

请帮助我!

2 个答案:

答案 0 :(得分:0)

套餐上的source是一个普通的'本地文件系统路径。如果您想使用烹饪书中的某些内容,则需要将其与cookbook_file资源一起使用。

但是我们真的不推荐这个。 Chef不是一个非常好的文件分发系统。它会起作用,并且在小范围内它是可以的,但从长远来看它确实不会令人愉快。对于包,您可以在网络上的某个位置托管内部Yum存储库,并使用Chef通过yum_repository资源对其进行配置。

答案 1 :(得分:0)

你在这里错过了很多。包资源用于声明您要安装的包,并且您不必告诉厨师如何或在何处获取您声明要安装的包。 Chef将使用您的本地系统仓库使用您的发行包管理器来执行此操作,但您不需要告诉厨师。在这种情况下,你也不需要文件目录中的tomcat和java文件。它会自己解决它。

如上所示,您要安装apache-tomcat-9.0.0.M22.tar.gzjdk-8u131-linux-x64.rpm。我看到文件在文件DIR中就可以了。在这种情况下,您将需要另一位厨师reosurce。请参阅下文,了解如何实现此目标

1)使用cookbook_file资源将文件从COOKBOOK_NAME/files/子目录传输到位于运行chef-client的远程主机上的指定路径。

cookbook_file '/opt/apache-tomcat-9.0.0.M22.tar.gz' do
  source 'apache-tomcat-9.0.0.M22.tar.gz'
  owner 'tomcat_user'
  group 'tomcat_user'
  mode '0755'
  action :create
end



cookbook_file '/opt/jdk-8u131-linux-x64.rpm' do
  source 'jdk-8u131-linux-x64.rpm'
  owner 'root'
  group 'root'
  mode '0755'
  action :create
end

2)现在使用执行资源

解压缩tomcat文件
execute 'extract tomcat' do
  command "tar xf /opt/apache-tomcat-9.0.0.M22.tar.gz -C /opt --strip-components=1"

end

3)现在安装java rpm包,如下所示

rpm_package 'jdk-8u131-linux-x64.rpm'

https://docs.chef.io/resource_file.html

https://docs.chef.io/resource_cookbook_file.html

https://docs.chef.io/resource_package.html

https://docs.chef.io/resource_rpm_package.html

https://docs.chef.io/resource_execute.html