我正在使用Chef Solo为Ubuntu 12.04提供一个基于Opscode的“Bento”盒子的Vagrant虚拟机。 当它完成configuration和我第一次SSH时,MOTD告诉我有包和安全更新。 然后,我手动运行sudo apt-get upgrade
,这会删除后续login中的消息。 厨师有没有办法让这个步骤自动化? “易”食谱似乎并没有处理这一点。 我所有的Googlesearch都只能findapt-get update
东西,而不是apt-get upgrade
。 我只能在Chef配方中执行apt-get命令,但在升级过程中,在粉红色屏幕上有一个伪GUI,我必须select驱动器进行安装(我认为这叫做GRUB,我是新的到Ubuntu),我不知道这部分如何自动与厨师。
我刚刚遇到了这个确切的问题,自己与厨师+stream浪汉,发现以下工作对我来说:
sudo dpkg-reconfigure -plow grub-pc
这允许你重新configurationgrub-pc并select你想要安装grub的设备(如果有的话)。 在此处将设备设置为默认设置应允许包括grub在内的升级不会提示进行设备select。 在这一点上,你可以创build一个新的stream浪者箱子,并使用它作为默认值。
要么
要运行apt-get upgrade / dist-upgrade而不提示,可以使用:
sudo DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade
DEBIAN_FRONTEND=noninteractive
使用任何提示的默认答案。 Dpkg::Options::="--force-confdef"
确保dpkg只覆盖你没有修改过的configuration文件 Dpkg::Options::="--force-confold"
确保当前configuration文件不被覆盖。 新的configuration文件使用.dpkg-dist后缀创build。 添加“-y”将超过提示。
sudo apt-get upgrade -y
你应该在厨师跑之前这样做,因为厨师可能已经在apt数据库中caching了包版本。
据jtimberman自己,你不应该自动运行apt-get升级。
opscode推荐的升级方法是使用软件包资源逐个打包。
package "php5-curl" do action :upgrade end
有关更多详细信息,请阅读Chef中的不要自动运行apt-get upgrade