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 -マシンを作成する
openssh
パッケージをインストールし、サービスを有効にします.cd
mkdir .ssh
touch ./ssh/authorized_keys
authorized_keys
ファイルでパブリックSSHキーを貼り付けます.それ以外の場合は、VMに対して作成したユーザ名とパスワードだけでインスタンスに接続できます.ファイルをクリックしてエクスポート
OVAファイルを保存する目的地を選んだ
エクスポート
ステップ2 - AWSリソースを準備する
containers.json
、role-policy.json
、trust-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".
トラブルシューティングと余波
しかし、イメージのもう一つのフォーマット(VMDK、VHD)を使用することが可能であるけれども、しかし、私は彼らとの成功を持ちませんでした.書式は重要です.それには があり、それはあなたのために働くかもしれません.
Reference
この問題について(ISOからAMIまで-どのように独自のカスタムアミを作成するには?), 我々は、より多くの情報をここで見つけました https://dev.to/otomato_io/from-iso-to-ami-how-to-create-your-own-custom-ami-5213テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol