我正在学习厨师,在尝试安装httpd包时我遇到了困难.我有一个简单的方法在Mac OS上安装httpd包.我安装了ChefDK.
webserver.rb
package 'httpd'
当我跑chef-apply webserver.rb
,它会抛出错误:
Mixlib::ShellOut::ShellCommandFailed ------------------------------------ Expected process to exit with [0], but received '1' ---- Begin output of brew info --json=v1 httpd ---- STDOUT: STDERR: Error: No available formula with the name "httpd" ---- End output of brew info --json=v1 httpd ---- Ran brew info --json=v1 httpd returned 1 Resource Declaration: --------------------- # In webserver.rb 1: package 'httpd' Compiled Resource: ------------------ # Declared in webserver.rb:1:in `run_chef_recipe' homebrew_package("httpd") do action [:install] retries 0 retry_delay 2 default_guard_interpreter :default package_name "httpd" declared_type :package cookbook_name "(chef-apply cookbook)" recipe_name "(chef-apply recipe)" end
有人可以告诉我在这里错过了什么.谢谢.
那么让我们来看看你正在做的每一件事:
chef-apply
采用单个Chef配方并在本地运行.这意味着发生的一切都在Mac笔记本电脑上.
此配方使用package
资源来安装调用的东西'httpd'
.Chef包括一堆package
资源提供者,所以在Ubuntu上它使用APT,在CentOS上它使用YUM,而在OS X上它使用Homebrew(即brew install
).
在安装软件包之前,Chef会检查它是否已安装并收集软件包上的其他详细信息.对于Homebrew,它brew info
用于此.因此,您最终brew info httpd
得到命令,提供或获取JSON输出格式参数以使其更容易解析.Homebrew没有命名的包(公式),'httpd'
因此它返回一个错误,然后Chef将链引发.
在更深层次上,Homebrew没有包装Apache(我认为你试图安装),因为它默认出现在OS X中.即使它确实如此,大多数包装系统都会调用它apache2
.只有RHEL/CentOS衍生产品httpd
仍会调用该软件包.