クラウドレスキューアップデート:自動ネットワーク構成

1つの段落のニュース:レスキューinitrd(カーネルとinitrdからの特別なキット)は、クラウドサーバーに割り当てられたipv4 / ipv6アドレス用に自動的に構成され、ブート後にsshサーバーを自動的に開始します。





どのように機能しますか?



通常、仮想マシンのロードは次のようになります。仮想マシンのブートディスクから(ブートパーティションから)、grub.cfg / grub.lstが読み取られ、そこからカーネルとinitrdが選択されます。 ドメインビルダー(仮想マシンの起動時にドメインを作成し、そこに/ initrdカーネルを配置し、設定を含むスタートページを形成し、メモリを追加する特別なアプリケーション)このカーネルは、ドメインをロードして起動します。



さらに、カーネルは通常のサーバーのようにすでにロードされています-initrd initスクリプトが起動され、ルートファイルシステムを準備し、pivot_rootを作成し(ルートディレクトリを切り替え)、実際のinitが起動され、inittabを読み取り、初期化システムsystem-vまたはupstart、systemdを起動します、本当に好きな人。



問題が発生した場合:ルートファイルシステムが利用できない、ハッキングの疑い、問題の調査、それから代替カーネルをロードする必要があるかもしれません。



この場合、カーネルはゲスト仮想マシンのディスクから読み取られるのではなく、既製のカーネルのカタログから取得されます。 そこから、initrdが取得されます。 ゲストマシンはそのまま起動します。



合計で、カーネルとinitrdのいくつかのセットがあります-それらのほとんどは、通常のシステムを起動できますが、オペレーティングシステムの「外部」のままで、何か有用なことを行ういくつかの特定のinitrdがあります。



これは:



initrdをレスキューできるのは何ですか?



ローンチ直後に彼について詳しく書きました: habrahabr.ru/company/selectel/blog/122667

要するに:





何が変わった?



これで、initrd自体がネットワーク設定を決定します。 ここには魔法はありません。カーネル引数を設定すると、仮想マシンの現在の設定が追加され、initrdのスクリプトがこれらの設定を受け取り、それに応じてネットワークを構成します。



同時に、sshサーバーが自動的に起動するようになりました。



理論的な解決策がわからない問題が1つあります。 これはsshサーバーの秘密鍵の問題です。 (同じIPアドレスに対して)変更されると、ssh-clientは「変更されたサーバーキー」に関する不快な警告を出します(そして、ほとんどのssh-clientでは、known_hostsでキーが変更/削除されるまで接続できません)。



いくつかのオプションがあります:





言い換えると、美しい解決策はないため、唯一可能な解決策は、既知のキーから古いキーを削除し、接続し、作業を完了した後、保存されたキーを再度削除することです。



...または、コンソールを使用します。



suploadを使用する



レスキューinitrdには、任意の高速ストレージにデータをアップロードできるスクリプトが含まれています。 たとえば、クラウドストレージへ。



次のようになります。



supload.sh -u -k file.tar.gz









ストレージプロジェクトとサーバープロジェクトは互いに独立しているため、ユーザー名とパスワードは手動で追加する必要があります。 クラウドストレージの「アクセス設定」ページで見つけることができます。



当面の見通し



ユーザーrootの公開鍵をrescue-initrdにコピーします。 次の1-2アップデートで実装されます。



All Articles