EC2'de bir Ubuntu örneği başlatmak istediğimde, doğru olanı nasıl bulurum? Orada binlerce kendi adlarına "Ubuntu" sahip kamu görüntülerin. Sadece Resmi Ubuntu resimlerini çalıştırmakla ilgileniyorum. Şimdi hangisi doğru AMI’dır?
EC2'de bir Ubuntu örneği başlatmak istediğimde, doğru olanı nasıl bulurum? Orada binlerce kendi adlarına "Ubuntu" sahip kamu görüntülerin. Sadece Resmi Ubuntu resimlerini çalıştırmakla ilgileniyorum. Şimdi hangisi doğru AMI’dır?
Yanıtlar:
Ubuntu'nun bir platform olarak başarısı ve Ubuntu'nun AMI'leri yenilemeye olan bağlılığı, Amazon EC2'de adlarında "ubuntu" yazan tam anlamıyla binlerce görüntü bulunduğu anlamına geliyor. Bu, "Hızlı Başlangıç" menüsündeki Ubuntu eksikliği ile birlikte doğru AMI'yi seçmenin önemsiz bir görev olmasını sağlar.
Bazı Genel Ubuntu Bilgileri
Bu öğelerin farkında olabilirsiniz, ancak Ubuntu veya EC2'ye yeni başlayanlar için onları işaret etmek istiyorum.
En kolay: Web Tarayıcınızdan AMI Bulun
Görüntüleri seçmek için arayüzünüzü seçebilirsiniz. İkisine de git:
Bu sayfanın alt kısmında bölgeyi seçebilir, bırakabilir, kemer veya kök deposunu seçebilirsiniz. Burada yalnızca en son sürümleri gösterdiniz. Seçiminizi yaptığınızda, ami numarasını kopyalayıp yapıştırabilir veya AMI'nin EC2 konsolu açılış sayfasına gitmek için üzerine tıklayabilirsiniz.
veya
Amazon EC2 Konsolunda arama yapın
EC2 Konsolu, AMI'leri sıralamak ve başlatmak için birini seçmek için grafiksel bir yoldur. Resmi Ubuntu Resmini burada başlatmak için aşağıdaki adımları izleyin.
Sonuçları ubuntu-images / yazarak Ubuntu Stable Release görüntüleri ile sınırlandırın
'AMI Adı' alanını mümkün olduğunca genişlemelisiniz (belki diğerlerini daraltın).
Sonuçları '. *' Ekleyerek belirli bir sürümle sınırlayın.
Örneğin: ubuntu-images /.* 10,06
Sonuçları '. * İ386' veya '. * Amd64' ekleyerek verilen bir kemerle sınırlayın
Not : Bir m1.small veya c1.medium çalıştırmak istiyorsanız, 'i386' gerekir. Bir t1.micro çalıştırmak istiyorsanız, bir 'ebs' resmi seçmeniz gerekir.
Sonuçları AMI adına göre sıralayın ve seçiminizi yapın
AMI adına göre sıralayarak, belirli bir set için en yeni AMI'yi daha kolay görebilirsiniz. Her AMI, YYYYMMDD (yıl, ay, gün) biçimindeki bir numara ile sona erer. En yenisini istiyorsun.
Sahibinin 099720109477 olduğunu doğrulayın!
Herhangi bir kullanıcı herhangi bir ad altında bir AMI kaydedebilir. Hiçbir şey, kötü niyetli bir kullanıcının yukarıdaki arama ile eşleşen bir AMI’ye kaydolmasını engelleyemez. Bu nedenle, güvende olmak için, ami'nin sahibinin ' 099720109477 ' olduğunu doğrulamanız gerekir .
notlar
HTTPS Erişimi : Yukarıdaki seçeneklerden, şu anda https://cloud-images.ubuntu.com/server/releases/ https üzerinden veri sağlayan tek kişidir. Bir AMI kimliği ararken olası "Ortadaki Adam" saldırılarıyla ilgileniyorsanız, bu sizin için önemli olabilir. Ahmed'den [kim0 in kimc] https://cloud.ubuntu.com/ami adresine https erişimini desteklemesini istedim .
Web Konsolu 'Örneği Başlat' iletişim kutusu : Sahip Kimliğini görmek için 'Örneği Başlat' iletişim kutusunda hiçbir yol görmedim. Çünkü eğer öyleyse, "Topluluk AMI'lerini" bulmak için bu diyalogu kullanmamanızı öneririm. Konsolun içinden görüntünün sahibinin kim olduğunu güvenilir bir şekilde bilmenin hiçbir yolu yoktur. İleri düzey kullanıcılar için, AMI'leri programlı bir şekilde bulma konusunda bir süre sonra blog yazacağım [İpucu].
hvm-instance
ve hvm-ssd
? Korkarım "örnek", "paravirtüel" anlamına gelir, ancak emin değilim ve bu konuda bilgi bulamıyorum. Ayrıca, https://cloud-images.ubuntu.com/locator/
sayfanın altındaki ... filtreleri sunduğunuzu da belirtmek yararlı olabilir
Yeni ve geliştirilmiş sürüm.
# needed as json list returned by ubuntu site is mal-formed
remove_last_comma() { sed '
$x;$G;/\(.*\),/!H;//!{$!d
}; $!x;$s//\1/;s/^\n//'
}
curl -s "https://cloud-images.ubuntu.com/locator/ec2/releasesTable" \
| remove_last_comma \
| jq -c '.aaData[] | select(contains(["16.04", "us-west-2", "hvm:ebs"]))' \
| grep -o 'ami-[a-z0-9]\+' | head -1
Temelde ubuntu ami bulma sayfası için kullanılan ham verileri toplar ve satırın ayrıştırılması için jq kullanır, sonra değeri çıkarmak için bir grep istiyorum. Eski sürümden çok daha hızlı.
-- Orijinal versiyon
İşte başka bir örnek. Bunu en son güvenilir AMI kimliğini almak için yazdım. API'leri sorgulamak için aws cli aracını kullanır, adların tarih sırasına göre sıralanması en son elde etmek için kullanılır.
name=$(\
aws --region us-west-2 ec2 describe-images --owners 099720109477 \
--filters Name=root-device-type,Values=ebs \
Name=architecture,Values=x86_64 \
Name=name,Values='*hvm-ssd/ubuntu-trusty-14.04*' \
| awk -F ': ' '/"Name"/ { print $2 | "sort" }' \
| tr -d '",' | tail -1)
ami_id=$(\
aws --region us-west-2 ec2 describe-images --owners 099720109477 \
--filters Name=name,Values="$name" \
| awk -F ': ' '/"ImageId"/ { print $2 }' | tr -d '",')
2 parça halinde çalışır. İlk bölüm, çeşitli kriterleri karşılayan ubuntu güvenilirliği için tüm AMI'leri alır (ebs, x86_64 ve isim deseni). Adı çıkarır ve sıralar. İsimler, tarihe göre sıralanacak ve sonuncusu en yenisi olacak şekilde sıralanır. Bu isim daha sonra 'isim' değişkenine atanır.
İkinci bölüm, bu adı, bu adı taşıyan AMI için AMI Kimliğini istemek için kullanır. Sadece kimliği ayrıştırır ve 'ami_id' a atar.
aws --region us-west-2 ec2 describe-images --owners 099720109477 --filters Name=root-device-type,Values=ebs Name=architecture,Values=x86_64 Name=name,Values='*hvm-ssd/ubuntu-trusty-14.04*' --query 'sort_by(Images, &Name)[-1].ImageId'
ruby aws-sdk kullanarak, en son Ubuntu AMI yazılımını bu şekilde programlayabilirsiniz.
ec2 = AWS::EC2.new
root_device_type = "ebs"
ami_owner = '099720109477'
ami_name = "*ubuntu/images/#{root_device_type}/ubuntu-precise-12.04*" # hardcoded to ubuntu 12.04. You can apply your own criteria here.
AWS.memoize do
linux_ami = ec2.images.with_owner(ami_owner).
filter("root-device-type", root_device_type).
filter("architecture", "x86_64"). # use 'i386' for 32 bit and 'x86_64' for 64 bit
filter("name", ami_name)
# this only makes one request due to memoization
begin
return linux_ami.to_a.sort_by(&:name).last
rescue
abort red "Error discovering latest AMI. Terminating."
end
end
Sürüme, sürüm tarihine vb. Dayanan kapsamlı bir karşılaştırma sağlayan https://cloud-images.ubuntu.com/locator/ec2/ adresini kullanabilirsiniz .
İstediğiniz sürümü, bölgeyi arayın ve en son sürüme ulaşmak için çıkış tarihine göre sıralayın.
Bir yoktur kapsamlı bir listesi mevcuttur Resmi Amis Ubuntu Bulut Portal . Canonical’in Resmi EC2 AMI’sinin Ubuntu Yardım’ında yayımlanmasına ilişkin ek kaynaklar bulabilirsiniz : EC2 Başlangıç Kılavuzu
Bunun ecible_ami_find modülünü kullanarak Ansible ile nasıl yapılacağını göstermenin yararlı olacağını düşündüm .
EC2 örneğini konsoldan manuel olarak başlatırsanız, ap-güneydoğu-2 bölgesinde (2017-06-07) yazarken AWS bu Ubuntu LTS resimlerini önerecektir:
Bu, HVM sanallaştırma ve EBS destekli SSD Birimlerini kullanma önerileriyle aynı doğrultuda .
En iyi performans için, örneklerinizi başlatırken mevcut nesil örnek türlerini ve HVM AMI'lerini kullanmanızı öneririz.
AWS'nin önerdiği AMI'leri almak için aşağıdaki görevleri kullanabilirsiniz:
- name: Find the most recent xenial AMI
ec2_ami_find:
aws_access_key: "{{ vault_aws_access_key }}"
aws_secret_key: "{{ vault_aws_secret_key }}"
region: "{{ config_region }}"
name: "ubuntu/images/hvm-ssd/ubuntu-xenial-16.04-amd64-server-*"
owner: 099720109477 # canonical ownerid
virtualization_type: hvm
sort: name
sort_order: descending
sort_end: 2
register: ami_find_xenial
- name: Newest Xenial AMI
debug:
msg: "{{ ami_find_xenial.results[0].ami_id }}"
- name: AWS recommend Xenial AMI
debug:
msg: "{{ ami_find_xenial.results[1].ami_id }}"
- name: Find the most recent trusty AMI
ec2_ami_find:
aws_access_key: "{{ vault_aws_access_key }}"
aws_secret_key: "{{ vault_aws_secret_key }}"
region: "{{ config_region }}"
name: "ubuntu/images/hvm-ssd/ubuntu-trusty-14.04-amd64-server-*"
owner: 099720109477 # canonical ownerid
virtualization_type: hvm
architecture: x86_64
sort: name
sort_order: descending
sort_end: 3
register: ami_find_trusty
- name: Newest Trusty AMI
debug:
msg: "{{ ami_find_trusty.results[0].ami_id }}"
- name: AWS recommend Trusty AMI
debug:
msg: "{{ ami_find_trusty.results[2].ami_id }}"
Aşağıdaki çıktıyı verir:
TASK [Load secrets from Vault] *****************************************************************************************************************************************************************************
ok: [localhost]
TASK [Find the most recent xenial AMI] *********************************************************************************************************************************************************************
ok: [localhost]
TASK [Newest Xenial AMI] ***********************************************************************************************************************************************************************************
ok: [localhost] => {
"changed": false,
"msg": "ami-1e01147d"
}
TASK [AWS recommended Xenial AMI] **************************************************************************************************************************************************************************
ok: [localhost] => {
"changed": false,
"msg": "ami-96666ff5"
}
TASK [Find the most recent trusty AMI] *********************************************************************************************************************************************************************
ok: [localhost]
TASK [Newest Trusty AMI] ***********************************************************************************************************************************************************************************
ok: [localhost] => {
"changed": false,
"msg": "ami-993e2bfa"
}
TASK [AWS recommended Trusty AMI] **************************************************************************************************************************************************************************
ok: [localhost] => {
"changed": false,
"msg": "ami-807876e3"
}
Oynatma kitabının döndürdüğü AMI kimliklerini karşılaştırırsanız, AWS'nin mevcut en yeni resmi önermediğini değil, ikinci veya üçüncü en son tavsiyede bulunduğunu görebilirsiniz. Burada hangi kriterleri / buluşsalları kullandıklarını bilmiyorum.