Làm cách nào để biết Ubuntu AMI nào sẽ khởi chạy trên EC2?


29

Khi tôi muốn khởi chạy một phiên bản Ubuntu trên EC2, làm cách nào để tìm đúng phiên bản? Có hàng ngàn hình ảnh công khai có "Ubuntu" trong tên của họ. Tôi chỉ quan tâm đến việc chạy các hình ảnh Ubuntu chính thức. Làm thế nào để tôi bây giờ AMI là đúng?


Câu trả lời:


26

Thành công của Ubuntu với tư cách là một nền tảng và cam kết làm mới AMI của Ubuntu có nghĩa là có hàng ngàn hình ảnh trên Amazon EC2 với tên "ub Ubuntu". Điều đó, kết hợp với và thiếu Ubuntu trên menu "Bắt đầu nhanh" làm cho việc chọn đúng AMI là một nhiệm vụ không hề nhỏ.

Một số thông tin chung về Ubuntu

Bạn có thể đã biết về các mục này, nhưng tôi muốn chỉ ra chúng cho những người mới bắt đầu với Ubuntu hoặc EC2.

  • Ubuntu phát hành 6 tháng một lần. Mỗi bản phát hành có một số phiên bản và tên mã. Điều quan trọng nhất cần lưu ý ở đây là cứ sau 2 năm, một bản phát hành LTS (Hỗ trợ dài hạn) được thực hiện. Nếu bạn muốn ổn định và hỗ trợ trong 5 năm, hãy chọn bản phát hành LTS. Nếu bạn muốn các gói mới nhất, chọn bản phát hành gần đây nhất. Xem mục wikipedia để biết thêm thông tin.
  • Tại thời điểm viết bài này, có 5 "vùng" trong Amazon EC2. Mỗi vùng đại diện cho một vị trí địa lý. Mỗi vùng có id AMI riêng. Bên trong mỗi khu vực có 2 kiến ​​trúc (x86_64, i386) và 2 loại "kho lưu trữ gốc" (EBS hoặc ví dụ). Điều đó có nghĩa là với mỗi bản phát hành Ubuntu xây dựng, chúng tôi tạo ra 20 id ami.

Dễ nhất: Tìm AMI từ trình duyệt web của bạn

Bạn có thể chọn giao diện của bạn để chọn hình ảnh. Đi đến một trong hai:

  • http://cloud.ubfox.com/ami

    Ở dưới cùng của trang này, bạn có thể chọn khu vực, phát hành, vòm hoặc cửa hàng gốc. Bạn chỉ hiển thị các bản phát hành gần đây nhất ở đây. Khi bạn đã lựa chọn, bạn có thể sao chép và dán số ami hoặc chỉ cần nhấp vào nó để đi ngay đến trang khởi chạy bảng điều khiển EC2 cho AMI đó.

hoặc là

  • https://cloud-images.ubfox.com/server/release/
    • Chọn Bản phát hành của bạn theo số hoặc tên mã
    • Chọn 'phát hành /': Chúng tôi giữ các bản dựng lịch sử xung quanh để gỡ lỗi, nhưng thư mục 'phát hành /' sẽ luôn là bản mới nhất.
    • Chọn AMI của bạn từ bảng và nhấp để khởi chạy trong bảng điều khiển hoặc sao chép và dán một dòng lệnh.

Tìm kiếm thông qua Bảng điều khiển Amazon EC2

Bảng điều khiển EC2 là một cách đồ họa để sắp xếp thông qua AMI và chọn một để khởi chạy. Để khởi chạy một hình ảnh Ubuntu chính thức tại đây, hãy làm theo các bước dưới đây.

  • Chọn khu vực bạn muốn ở trên cùng bên trái, bên dưới 'Điều hướng' Ví dụ: "Us East (Virginia)"
  • Nhấp vào "AMIs" Đỗ không bấm vào nút "Launch Instance" [xem chú thích bên dưới]
  • cho 'Đang xem', chọn "Tất cả hình ảnh"
  • Giới hạn kết quả đối với hình ảnh Phát hành ổn định của Ubuntu bằng cách nhập ubfox-hình ảnh /

    Bạn nên mở rộng trường 'Tên AMI' càng rộng càng tốt (có thể thu nhỏ các trường khác).

  • Giới hạn kết quả ở một bản phát hành cụ thể bằng cách nối thêm '. *'.

    Ví dụ: ubfox-hình ảnh /.* 10.04

  • Giới hạn kết quả ở một vòm nhất định bằng cách nối thêm '. * I386' hoặc '. * Amd64'

    Lưu ý : Nếu bạn muốn chạy m1.small hoặc c1.medium, bạn cần 'i386'. Nếu bạn muốn chạy t1.micro, bạn sẽ cần chọn hình ảnh 'ebs'.

  • Sắp xếp kết quả của bạn theo Tên AMI và thực hiện lựa chọn

    Bằng cách sắp xếp theo tên AMI, bạn có thể dễ dàng thấy AMI mới nhất cho một bộ nhất định. Mỗi AMI kết thúc bằng một số theo định dạng YYYYMMDD (năm, tháng, ngày). Bạn muốn một cái gần đây nhất.

  • Xác minh chủ sở hữu là 099720109477!

    Bất kỳ người dùng nào cũng có thể đăng ký AMI dưới bất kỳ tên nào. Không có gì ngăn người dùng độc hại đăng ký AMI phù hợp với tìm kiếm ở trên. Vì vậy, để an toàn, bạn cần xác minh rằng chủ sở hữu của ami là ' 099720109477 '.

  • Nếu "Chủ sở hữu" không phải là một cột dành cho bạn, hãy nhấp vào "Hiển thị / Ẩn" ở trên cùng bên phải và chọn "Chủ sở hữu" để hiển thị.
  • Nhấp vào tên AMI, sau đó nhấp vào 'Khởi chạy'

Ghi chú

  • Truy cập HTTPS : Trong số các tùy chọn ở trên, ngay bây giờ https://cloud-images.ubfox.com/server/release/ là lựa chọn duy nhất cung cấp dữ liệu qua https. Điều này có thể quan trọng đối với bạn nếu bạn lo lắng về các cuộc tấn công "Người ở giữa" tiềm năng khi tìm id AMI. Tôi đã yêu cầu Ahmed [kim0 in irc] hỗ trợ truy cập https vào https://cloud.ubfox.com/ami .

  • Hộp thoại 'Launch Instance' trên Bảng điều khiển Web : Tôi không thấy cách nào trong hộp thoại 'Launch Instance' để xem ID chủ sở hữu. Bởi vì nếu điều này, tôi khuyên bạn không nên sử dụng hộp thoại đó để tìm "Cộng đồng AMIs". Đơn giản là không có cách nào bạn có thể biết một cách đáng tin cậy ai là chủ sở hữu của hình ảnh từ trong bảng điều khiển. Đối với người dùng nâng cao, đôi khi tôi sẽ sớm viết blog về cách tìm AMIs theo chương trình [Gợi ý].

Nguồn


Bạn có thể vui lòng chính xác sự khác biệt giữa hvm-instancehvm-ssd? Tôi sợ "dụ" có nghĩa là "paravirtual", nhưng không chắc chắn và không thể tìm thấy thông tin về nó. Ngoài ra, có thể hữu ích khi lưu ý rằng https://cloud-images.ubuntu.com/locator/cung cấp các bộ lọc ... ở cuối trang
Balmipour

11

Phiên bản mới và cải tiến.

# 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

Về cơ bản lấy dữ liệu thô được sử dụng cho trang tìm kiếm ami của Ubuntu và sử dụng jq để phân tích hàng tôi muốn sau đó một grep để lấy giá trị. Nhanh hơn nhiều so với phiên bản cũ.


-- phiên bản gốc

Đây là một ví dụ khác. Tôi chỉ viết cái này để lấy id AMI đáng tin cậy mới nhất. Nó sử dụng công cụ aws cli để truy vấn API, sử dụng thực tế là các tên sắp xếp theo thứ tự ngày để có bản mới nhất.

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 '",')

Nó hoạt động trong 2 phần. Phần đầu tiên nhận được tất cả các AMI cho ubfox đáng tin cậy đáp ứng các tiêu chí khác nhau (ebs, x86_64 và mẫu tên). Nó lấy ra Tên và sắp xếp theo nó. Các tên được định dạng để sắp xếp chúng theo ngày để cái cuối cùng sẽ là cái mới nhất. Tên này sau đó được gán cho biến 'name'.

Phần thứ hai sử dụng tên đó để yêu cầu ID AMI cho AMI với tên đó. Nó phân tích cú pháp chỉ id và gán nó cho 'ami_id'.


Bạn có thể vui lòng giải thích điều này không?
Kaz Wolfe

Đã thêm lời giải thích cho câu trả lời.
John Eikenberry

4
Điều này sẽ thực hiện một cái gì đó tương tự, nhưng sử dụng biểu thức truy vấn JMESPath: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'
dnlbrky

4

sử dụng ruby ​​aws-sdk, bạn có thể lập trình khám phá Ubuntu AMI mới nhất như thế này

    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



1

Tôi nghĩ sẽ hữu ích khi trình bày cách thực hiện điều này bằng Ansible bằng cách sử dụng mô-đun ec2_ami_find .

Tại thời điểm viết (2017-06-07) trong AWS khu vực đông nam-2 sẽ đề xuất các hình ảnh Ubuntu LTS này nếu bạn khởi động một phiên bản EC2 thủ công từ bảng điều khiển:

  • Máy chủ Ubuntu 16.04 LTS (HVM), Loại âm lượng SSD - ami-96666ff5
  • Máy chủ Ubuntu 14.04 LTS (HVM), Loại âm lượng SSD - ami-807876e3

Điều này phù hợp với các khuyến nghị của họ để sử dụng ảo hóa HVM và các ổ SSD được hỗ trợ EBS.

Để có hiệu suất tốt nhất, chúng tôi khuyên bạn nên sử dụng các loại thể hiện hiện tại và HVM AMI khi bạn khởi chạy các thể hiện của mình.

Để có được các AMI tương tự mà AWS khuyên bạn nên sử dụng các tác vụ sau:

- 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 }}"

Cung cấp đầu ra sau:

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"
}

Nếu bạn so sánh các id AMI được trả về bởi playbook, bạn có thể thấy AWS không đề xuất hình ảnh có sẵn mới nhất mà là hình ảnh thứ hai hoặc thứ ba mới nhất. Tôi không biết những tiêu chí / heuristic họ đang sử dụng ở đây.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.