Mar*_*tuc 17 linux ubuntu apt-get chef-infra vagrant
如果package "nginx"
在Chef中将其翻译成apt-get install nginx
Ubuntu节点,那么可以在Chef配方中编写的内容将转换为:
apt-get -y update
apt-get -y upgrade
Run Code Online (Sandbox Code Playgroud)
无法从apt
食谱中找到答案.
jti*_*man 44
将运行Opscode"apt"cookbook的默认配方apt-get update
以确保更新包缓存.我们建议您尽早将其放在节点的运行列表中,以便稍后可以使用正确的版本安装软件包.
apt-get upgrade
出于某些原因,我们通常不建议用户在配方中使用" ".
apt-get
如果不再次运行命令或手动运行其他apt/dpkg命令,可能会升级具有冲突配置或无法解决的其他问题的程序包.相反,对应始终更新到最新版本的软件包使用"升级"操作.
package "nginx" do
action :upgrade
end
Run Code Online (Sandbox Code Playgroud)
如果您正在重复使用定义食谱的食谱,您可以编写修改现有资源操作的食谱,如下所示:
resources("package[nginx]").action(:upgrade)
Run Code Online (Sandbox Code Playgroud)
该#resources
配方中的方法将查找的资源集合中的指定资源(包nginx的).然后#action
使用参数发送方法:upgrade
将告诉Chef该操作应该是升级.
编辑 更新:选择以这种方式自动升级的软件包时要小心.包中的上游变化可能对系统造成不利影响.如果此类程序包重新启动它在安装后脚本期间管理的服务,则尤其如此.了解您的基础架构,如果有疑问,请运行您自己的软件包存储库,其中包含应用程序堆栈所需的关键软件包.