我是厨师的初学者,并慢慢深入潜水。我对资源“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' 行动:安装 端
请帮助我!
答案 0 :(得分:0)
套餐上的source
是一个普通的'本地文件系统路径。如果您想使用烹饪书中的某些内容,则需要将其与cookbook_file
资源一起使用。
但是我们真的不推荐这个。 Chef不是一个非常好的文件分发系统。它会起作用,并且在小范围内它是可以的,但从长远来看它确实不会令人愉快。对于包,您可以在网络上的某个位置托管内部Yum存储库,并使用Chef通过yum_repository
资源对其进行配置。
答案 1 :(得分:0)
你在这里错过了很多。包资源用于声明您要安装的包,并且您不必告诉厨师如何或在何处获取您声明要安装的包。 Chef将使用您的本地系统仓库使用您的发行包管理器来执行此操作,但您不需要告诉厨师。在这种情况下,你也不需要文件目录中的tomcat和java文件。它会自己解决它。
如上所示,您要安装apache-tomcat-9.0.0.M22.tar.gz
和jdk-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