ISOからAMIまで-どのように独自のカスタムアミを作成するには?


なぜ我々はカスタムアミが必要ですか?


AWSでインスタンスを取得して実行するのはとても簡単かもしれませんが、このインスタンスはあなたが探していたものではないかもしれません.いくつかのファイルは既にカスタマイズされています.いくつかのパッケージには必要としないか、インストールされていない場合もあります.したがって、AWS以外の他のプラットフォームでパッケージ更新に関連する何かを適用することは、自分のキーで誰かの車を起動しようとするようなものです.
あなたはいつもそのような目的のために準備された人を買うことができます.私たちは、ハードの方法を行うとそのプロセスで自分のマシンを破るのが好きな人のために別の方法です-ゼロから自分の阿見を作成します.
この特定のタスクをgooglingいくつかの時間を費やした後、私は悲しいことに、チュートリアルのほとんどはコピーペーストであり、目的の目標につながることはありません.これは動作するものです.それは最良の方法ではないかもしれませんが、最短の方法ですが、それは動作します.

AWS提供バージョン 何が必要ですか?


  • あなたの選択の配布のISO -私はUbuntu 20.04サーバーを使用しました.

  • 仮想ボックス- VMを作成する多くのオプションがあり、あなたのニーズに応じてあなたの武器を選んだ.私はOracle VirtualBoxは、このタスクに最適であることがわかりました、私は6.1.30バージョンを使用しました.

  • AWSアカウント-バケット、ロール、ポリシーを作成するにはいくつかの拡張特権が必要になります.

  • 構成されたaws cli -あなたがこのツールを使用したことがないならば、あなたは からの配布に従ってそれをダウンロードする方法を調べることができます.それを使用するには、this linkのペアを作成する必要があります.したら、あなたの端末からaws configureを実行し、キーのIDと秘密のアクセスキーを追加します.プロンプト領域は、あなたの働くAWS領域と一致するべきです.
  • アクセスキーIDと秘密アクセスキー ハウツーとスタイル


    ステップ1 -マシンを作成する

  • ISOのあなたの好みの味をダウンロードしてください.
  • 仮想マシンで新しいマシンを作成し、それをISOにアタッチします.あなたのニーズに合わせて設定、私の目標は、単にダウンロードし、最新のOSのセキュリティパッチをパックするので、基本的なCPUとRAMの仕事をした.
  • マシンを動かし、ディストリビューションをインストールし、ユーザ名とパスワードを設定します.後でそれらを必要とするでしょう!
  • インストール中にまたはopensshパッケージをインストールし、サービスを有効にします.
  • 特定のsshキーを使用して将来のインスタンスに接続する場合は、パブリックSSHキーを専用ディレクトリにインポートします.
  • cd
    mkdir .ssh
    touch ./ssh/authorized_keys
    
    authorized_keysファイルでパブリックSSHキーを貼り付けます.それ以外の場合は、VMに対して作成したユーザ名とパスワードだけでインスタンスに接続できます.
  • マシンを停止し、OVA形式に変換します.
    ファイルをクリックしてエクスポート

    OVAファイルを保存する目的地を選んだ

    エクスポート

  • ステップ2 - AWSリソースを準備する

  • あなたのS 3ストレージに移動し、バケットを作成し、あなたのOVAをアップロードします.
  • 次のファイルを持つローカルディレクトリを作成します.containers.jsonrole-policy.jsontrust-policy.json.
    これらのファイルは、あなたのAMI変換のための役割、方針とパラメタを定義します.
  • 最初の設定を実行します.編集trust-policy.json :
  • {
       "Version": "2012-10-17",
       "Statement": [
          {
             "Effect": "Allow",
             "Principal": { "Service": "vmie.amazonaws.com" },
             "Action": "sts:AssumeRole",
             "Condition": {
                "StringEquals":{
                   "sts:Externalid": "vmimport"
                }
             }
          }
       ]
    }
    
    次に、変換プロセスで使用するロールのポリシーを設定します.編集242479142、あなたのバケツの名前を挿入します.
    {
       "Version":"2012-10-17",
       "Statement":[
          {
             "Effect": "Allow",
             "Action": [
                "s3:GetBucketLocation",
                "s3:GetObject",
                "s3:ListBucket"
             ],
             "Resource": [
                "arn:aws:s3:::YOUR BUCKET",
                "arn:aws:s3:::YOUR BUCKET/*"
             ]
          },
          {
             "Effect": "Allow",
             "Action": [
                "s3:GetBucketLocation",
                "s3:GetObject",
                "s3:ListBucket",
                "s3:PutObject",
                "s3:GetBucketAcl"
             ],
             "Resource": [
                "arn:aws:s3:::YOUR BUCKET",
                "arn:aws:s3:::YOUR BUCKET/*"
             ]
          },
          {
             "Effect": "Allow",
             "Action": [
                "ec2:ModifySnapshotAttribute",
                "ec2:CopySnapshot",
                "ec2:RegisterImage",
                "ec2:Describe*"
             ],
             "Resource": "*"
          }
       ]
    }
    
  • 今すぐ役割を作成します.あなたのターミナル実行から:
  • role-policy.jsonその後、
  • はそれに方針を取り付けます.
  • aws iam create-role --role-name vmimport --assume-role-policy-document "file://path/to/trust-policy.json"
  • あなたが編集する最後のファイルは、イメージとバケツの形式を参照します.aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document "file://path/to/role-policy.json"は、それから読み込んで、ちょうどイメージのフォーマット、ディスクの数、バケツと名前(s 3 key)に関するすべての情報を含んでいます.
  • [
        {
         "Description":"vm import",
         "Format":"ova",
         "UserBucket": {
            "S3Bucket": "YOUR BUCKET",
            "S3Key": "NAME OF YOUR IMAGE.ova"
    }
    }]
    
  • 変換のプロセスを開始します.このコマンドを端末から実行しますcontainers.jsonコマンドの出力はami番号を提供します.aws ec2 import-image --description "YOUR DESCRIPTION" --disk-containers "file://path/to/containers.json".
  • が完了すると、あなたのAMIはあなたのAMIディレクトリに直接アップロードされます.
  • トラブルシューティングと余波


    しかし、イメージのもう一つのフォーマット(VMDK、VHD)を使用することが可能であるけれども、しかし、私は彼らとの成功を持ちませんでした.書式は重要です.それには があり、それはあなたのために働くかもしれません.
  • 他の問題はまだチェックを必要とします.
  • ハッピークラウド!