ディストリビューション(一部のDebianディストリビューションを含む)のすべてを安全な方法で継続的にアップグレードするには?
私がなぜこのような質問をするのか
私がこの質問をする理由は、Nginx環境設定スクリプトが大きくなり、メンテナンスに時間がかかり、何かが間違っていると感じたためです。
学習、練習、パブリック共有のためにスクリプトを維持することは私ができることと楽しむことができますが、すぐに従業員として働き、スクリプトを維持する時間を短縮します。このような状況では、私はいつも次のような恐れがあります。
- 現在のディストリビューションLTSがサポートされなくなった場合はどうなりますか?
- それがDebian Stableであり、他のものではないとしても、数ヶ月前の古いディストリビューションにセキュリティの脆弱性がある可能性がありますが、それよりはるかに古くはありませんでした。
- 古いディストリビューションなどで十分に構成された構成だけでは安全を維持するのに十分でない場合は
unattended-upgrades
どうすればよいですか。
現在私はDigitalOceanでDropletに対して5ドルを支払っています。
- Bashに無料でアクセスできます。
- 無人アップグレード。
- CSF-LFDとMaldet。
- Certbot が処理する Web アプリケーションの構成。
- cronによって作成されるとすぐに自動cronバックアップです(私のスクリプトで利用可能です)。
rsync
.- WordPressウェブサイト
- WP-CLI
- すべてのVPS価格は10ドル未満です。
Ansibleが答えなのかSaltが答えなのかよくわかりません。 (Ansibleは習得しやすいと広告しますが、私には習得が容易ではないようで、詳しく勉強する時間がないようです。今後3ヶ月)。
Azureが答えかどうかはわかりません。価格のために私が望む環境を使用するには、Azureで少なくとも15ドルの費用がかかります。
おそらく、すべての基本的な側面で継続的に配信されるディストリビューションが必要な場合があります。
基本的にはそういう話です。
ベストアンサー1
良好なCI(持続的統合)は、少なくとも3つに依存します。
- スクリプトベースのデプロイ
- 帯域外テスト環境
- 自動化されたテストは表面全体をカバーします。
現在#1だけがあります。他のVPSは#2として動作できますが(明らかな)テストはありません。
しかし、さらに進む前に、リズムベースのバージョンサポートについて簡単に申し上げます。
Ubuntu LTSバージョンはリリース後5年間更新されます。すべてのパッケージではありませんが、LEMPに必要なものはすべてです。これらのアップデートは将来のバージョンのセキュリティ修正をバックポートするため、可能であれば最新の修正を含む以前のメジャーバージョンを入手できます。これは、仕事が機能し続けることを意味します。
ローリングパブリッシングは、すべてを常に最新の状態に保ちます。 systemdなどの主要な構成変更がいつ発生するのか、それを修正するためにどれだけの作業が必要かを知ることはできません。アップデートを自動的にインストールする場合、これは予測可能な間隔がないことを意味します。
Ubuntu LTSを使用すると、4〜5年ごとにサーバーからアップグレードを案内するために1〜2時間を費やす必要があることがわかります。これを行うと選択できます。次のLTS発売後3年以内。これは欠陥ではなく主な機能です。
あなたの戦闘計画のために、私は(おそらく議論の余地がありますが)自動更新を完全に無効にし、それを次に置き換えます。比較的簡単なスクリプト:
- 2番目のVPSを起動します(ベンダーのAPIを使用するため、実行中にのみ支払います)。同じオペレーティングシステムのバージョン(たとえば、デフォルトのVPSがそのバージョンの場合はUbuntu 16.04)に基づくテンプレートです。
- 最新バージョンのソフトウェアでアップデートし、コンテンツを配布し、データベースを復元します。
- テストスイートを実行し、すべてのサービスの肯定的または否定的な結果を報告します。
- 失敗すると電子メールが送信され、成功するとデフォルトの
apt dist-upgrade
VPSで実行されます。
核心は得ることができるということです。騒々しい更新が届かない場合は、もう一度報告してください。はい、これもテストする必要があります。
Ansibleなどに移動できますが、これは主な問題ではありません。テストを書くことです。
多くのタスクが必要ですが、これらのタスクを使用してスケールを拡張および拡張することもできます。負荷分散クラスターがすでに存在する場合は、クラスターを分離して更新してテストし、クラスターに再導入できます。