私は頻繁にプロダクションweb/db/toolsボックスにログインし、典型的なメッセージを見ます:
30個のパッケージを更新できます。 16個の更新はセキュリティ更新です。
私の質問は、あなたのすべてがあなたのプロダクションUbuntuボックスのアップデートをどのように処理するのですか?これらの更新を自動化しますか?それらのダウンタイムを設定しますか?問題は、更新がおそらく既存の構成ファイルなどの何かを壊すことになることを決して知らないことです。
この問題の他の部分は、パッチについていくことは「良いこと」ですが、パッチはほぼ毎日リリースされます。毎日利用可能な新しいセキュリティパッチがある場合、計画的な停止はいくつ必要ですか。
更新の管理方法に関する回答のスレッドは非常に役立つと思います。
UbuntuとWindows、RHEL、CentOS、SuSE、debianなどのパッチ適用について特別なことは何もありません。
パッチプロシージャを設計する際の基本的な心の状態は、何かが壊れる壊れると想定することです。
パッチ設定を設計するときに使用する傾向がある基本的なガイドラインのいくつかは次のとおりです。
これには、WSUS、または内部パッチ管理マシンへの<your_os_here>
のミラーの使用が含まれる場合があります。個々のマシンにインストールされているパッチのステータスを一元的に照会して通知できる好ましいもの。
可能な場合は、パッチが出たら、中央サーバーにパッチを個別のマシンにコピーしてもらいます。これは本当に時間の節約になるので、ダウンロードしてインストールするのを待つ必要はありません。パッチウィンドウでインストールを開始するだけです。
パッチは問題を壊すという私の基本的な理論に沿って、重大な問題をトラブルシューティングし、場合によってはパッチをロールバックするのに十分なだけパッチを適用するための停止ウィンドウがあることを確認してください。パッチを適用した後にテストを行う必要はありません。個人的には、監視システムに大きく依存して、すべてが正常に機能している最小レベルで機能していることを知らせています。しかし、人々が仕事に取り掛かるときに呼び出される小さなやっかいな問題にも備えてください。電話に出る準備ができている人を常にスケジュールしておく必要があります。できれば、午前3時までボックスにパッチを当てていた人はできません。
ITの他のすべてと同様に、スクリプト、スクリプト、さらにスクリプトを記述します。パッケージのダウンロード、インストールの開始、ミラーのスクリプトを作成します。基本的には、パッチウィンドウをベビーシッターの割り当てに変えたいと思います。
これにより、何らかの理由で「指定された夜」にパッチを適用できない場合に、一部のサーバーにパッチを適用しないようにすることができます。夜1に実行できない場合は、夜2に解放する必要があります。また、同時にパッチを適用するサーバーの数を正常に保つことができます。
最も重要なのはパッチに遅れずについていくことです!そうしないと、追いついた時点に戻るために、10時間以上の非常に大きなパッチウィンドウを実行する必要があることに気づくでしょう。問題が発生する可能性のあるポイントをさらに紹介し、どのパッチが原因で問題が発生したかを突き止めることをさらに困難にします。
この問題の他の部分は、パッチについていくことは「良いこと」ですが、パッチはほぼ毎日リリースされます。毎日利用可能な新しいセキュリティパッチがある場合、計画的な停止はいくつ必要ですか。
月に1回または隔月に1回サーバーにパッチを適用することは-私見-非常に達成可能で許容できる目標です。それ以上の場合は、サーバーに常にパッチを適用することになりますが、サーバーごとに何百ものパッチを適用する必要がある状況に陥ります。
1か月に何枚のウィンドウが必要ですか?それはあなたの環境に依存します。サーバーはいくつありますか?サーバーに必要な稼働時間はどれくらいですか?
9x5の小規模な環境では、おそらく1か月に1つのパッチウィンドウで済むでしょう。 24時間年中無休の大規模なショップでは2つ必要になる場合があります。 24x7x365が非常に大きい場合、毎週異なるサーバーセットにパッチを適用するには、毎週ローリングウィンドウが必要になる場合があります。
あなたとあなたの環境のために働く周波数を見つけてください。
覚えておくべきことの1つは、100%が最新であることは不可能の目標を達成することであることです-セキュリティ部門に他のことを知らせないでください。最善を尽くして、あまり遅れないでください。
やる事:
避けるべきこと:
作成する価値のあるもう1つのポイント:Windowsに慣れている場合は、ほとんどのLinux更新がnotにダウンタイムまたは再起動を必要とすることに驚かれるでしょう。カーネルの更新など、一部は実行します。ただし、再起動またはダウンタイムを必要とする更新は通常、そのようにフラグが立てられ、別のスケジュールで処理できます。
私たちのUbuntuマシンはすべてLTSリリースを実行しています。
すべての更新を自動的にインストールします。「ベストプラクティス」ではないことを確認してください。ただし、私たちは比較的小規模なショップであり、単一のサービスごとにテスト/開発/本番環境を用意していません。 LTSの更新は、一般にかなり十分にテストされており、いずれにしても侵襲性は最小限です。
新しいリリースへのアップグレードは明らかに少し複雑です。
Ubuntu LTSシステムでは、次の方法でアップデートを処理します。
次の論理的なステップは、メモリ内のセッション情報を排除することです。これにより、インフラストラクチャを毎日または1日に数回再デプロイするだけで、顧客に影響を与えずにステップ(2)を排除できます。
このアプローチはメンテナンスが少なく、メンテナンスウィンドウを完全に回避します。
私がお勧めするのは、パッケージのロールバックを処理することです。何かを壊すアップグレードのための迅速な修正が必要な場合があるので、その方法の提案については Debianでのトランザクションとロールバック を参照してください。