パッケージの更新/アップグレードを自動化することは、最初に適切にテストしないと明らかにアプリケーションが壊れる可能性があるため、一般的には悪い考えです。
これを解決する 1 つの方法は、Cookbook でリポジトリをロックするか、指定されたバージョンで保持し、本番環境にプッシュする前に開発で徹底的にテストすることです。
Amazon Linux では、現在の状態の yum リポジトリの一意の URL を取得できます。したがって、dev で更新/アップグレードを実行し、一意の URL を見つけて、それを prod にプッシュできます。これにより、Chef がテストしたパッケージよりも新しいパッケージに更新されなくなります。
私はUbuntuとapt-getに精通していませんが、私が話していることはPinningまたはHoldingで実行できるようです:https ://help.ubuntu.com/community/PinningHowto
つまり、要約すると、開発マシンをアップグレード/更新し、それをテストし、リポジトリの状態を調べて、すべてのパッケージをそれらのバージョンに凍結します。次に、製品のリポジトリをそれらの状態に凍結します。次に、ドラコが述べたように、クックブックで「apt-get -y upgrade」を実行するだけです。