package "nginx"
In Chef が Ubuntu ノードに変換される場合apt-get install nginx
、Chef レシピに記述できるものは次のようになります。
apt-get -y update
apt-get -y upgrade
apt
クックブックからはわかりませんでした。
package "nginx"
In Chef が Ubuntu ノードに変換される場合apt-get install nginx
、Chef レシピに記述できるものは次のようになります。
apt-get -y update
apt-get -y upgrade
apt
クックブックからはわかりませんでした。
Opscode の「apt」クックブックのデフォルト レシピが実行apt-get update
され、パッケージ キャッシュが確実に更新されます。ノードの実行リストの早い段階でそれを配置して、後でパッケージを正しいバージョンでインストールできるようにすることをお勧めします。
apt-get upgrade
通常、いくつかの理由から、ユーザーがレシピで " " を使用することはお勧めしません。
apt-get
コマンドを再度実行するか、他の apt/dpkg コマンドを手動で実行しないと解決できない、競合する構成またはその他の問題があるパッケージをアップグレードする場合があります。代わりに、常に最新バージョンに更新する必要があるパッケージに対して「アップグレード」アクションを使用してください。
package "nginx" do
action :upgrade
end
クックブックを定義するクックブックを再利用する場合、次のように、既存のリソースのアクションを変更するレシピを作成できます。
resources("package[nginx]").action(:upgrade)
レシピの#resources
メソッドは、リソース コレクションで指定されたリソース (パッケージ nginx) を検索します。#action
次に、引数を指定してメソッドを送信すると、 :upgrade
Chef にアクションがアップグレードであることを伝えます。
更新の編集: この方法で自動的にアップグレードされるパッケージを選択するときは注意してください。パッケージのアップストリームの変更は、システムに悪影響を与える可能性があります。これは、そのようなパッケージがインストール後のスクリプト中に管理するサービスを再起動する場合に特に当てはまります。インフラストラクチャを把握し、疑わしい場合は、アプリケーション スタックに必要な重要なパッケージを含む独自のパッケージ リポジトリを実行します。
Apt シェフのレシピは、シェフが実行されるたびに更新されるわけではありません。これを制御する属性が呼び出さperiodic_update_min_delay
れ、86400 に設定されます (属性は sec_delay と呼ばれる必要があります)。次のファイルが存在し、24 時間以上経過している場合、apt はキャッシュを更新します。
/var/lib/apt/periodic/update-success-stamp
また、apt レシピ (default.rb) には、レシピが呼び出すことができる更新を強制するディレクティブが含まれているようです。
# For other recipes to call to force an update
execute 'apt-get update' do
ただし、そうしている場合は、 not_if を頻繁に実行しないようにする必要があります。その時点で、自分で手動で呼び出すこともできます。私はこれをいじるのにうんざりし、インストールの前にスタンザで apt-get update を呼び出すだけになりました。
execute "apt-get-update" do
command "apt-get update"
end
セキュリティ更新の長期的な解決策は、更新の遅延を数時間に設定することだと思います。