"source" Chef 中包资源的属性



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

就像资源"cookbook_file"如何将文件保存在说明书目录的"file"目录中一样: 阿帕奇食谱的树结构

资源"包"的"源"属性从哪个本地文件系统上获取文件?它是否从同一个"文件"目录中抓取文件?还是在任何其他文件夹中?我写了一本简单的食谱,假设"源"属性默认会从"文件"目录中获取文件。但这行不通:

包 '安装 JAVA' 做 来源 'JDK-8U131-Linux-x64' 操作:安装 结束

包"安装 tomcat 版本 9"做 来源 'apache-tomcat-9.0.0.M22.tar' 操作:安装 结束

请帮帮我!

你在这里错过了很多。软件包资源用于声明要安装的软件包,您不必告诉 chef 如何或在哪里获取您声明要安装的软件包。Chef 将使用您的本地系统存储库和您的发行版包管理器来执行此操作,但您无需告诉 chef 这一点。在这种情况下,您也不需要文件目录中的 tomcat 和 java 文件。它会自己弄清楚的。

正如我在上面看到的,您想安装apache-tomcat-9.0.0.M22.tar.gzjdk-8u131-linux-x64.rpm.我看到文件在文件DIR中,这没问题。在这种情况下,您将需要另一位厨师。请参阅下文,了解如何实现这一目标

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

> 软件包上的source是普通的本地文件系统路径。如果你想使用食谱中的东西,你需要把它与cookbook_file资源一起使用。

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

最新更新