web-dev-qa-db-ja.com

ChefSoloで「apt-getupgrade」を実行する

ChefSoloを使用してVagrantをプロビジョニングしていますVM Ubuntu 12.04用のOpscodeの「Bento」ボックスに基づいています。プロビジョニングが完了し、初めてSSHで接続すると、MOTDから次のように通知されます。パッケージとセキュリティアップデート。次にSudo apt-get upgradeを手動で実行すると、後続のログインでメッセージが削除されます。Chefでこの手順を自動化する方法はありますか?「apt」クックブックはこれを処理していないようです。すべてのGoogle検索ではapt-get updateについてのみ検索され、apt-get upgradeについては検索されません。Chefレシピでapt-getコマンドを実行することはできますが、アップグレードプロセス中に、ピンク色の画面に疑似GUIが表示されます。インストールするドライブを選択する必要があり(これはGRUBと呼ばれ、Ubuntuは初めてです)、Chefでこの部分を自動化する方法がわかりません。

4
Jimmy Cuadra

Chef + vagrantでこの正確な問題に自分で遭遇したところ、次のことがうまくいきました。

Sudo dpkg-reconfigure -plow grub-pc

これにより、grub-pcを再構成し、grubをインストールするデバイス(存在する場合)を選択できます。ここでデバイスをデフォルトとして設定すると、grubを含むアップグレードで、デバイスの選択を求めないようにする必要があります。この時点で、新しいvagrantボックスを作成し、それをデフォルトとして使用できます。

または

プロンプトを表示せずにapt-getupgrade/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が変更していない設定ファイルのみを上書きすることを保証します
  • Dpkg::Options::="--force-confold"は、現在の構成ファイルが上書きされないようにします。新しい設定ファイルは、.dpkg-distサフィックスで作成されます。
5
dok

「-y」を追加すると、プロンプトを通過します。

Sudo apt-get upgrade -y

Chefがパッケージバージョンをaptデータベースにキャッシュしている可能性があるため、chefを実行する前にこれを行う必要があります。

2

Jtimberman自身によると、apt-getupgradeを自動的に実行するべきではありません。

Opscodeが推奨するアップグレード方法は、パッケージリソースを使用してパッケージごとに行うことです。

package "php5-curl" do
  action :upgrade
end

詳細については、 Chefでapt-get upgradeを自動的に実行しないでください をお読みください。

0
csi