2012-04-12 11 views
52

Bir dizi Linux EC2 örneğinin başlatılmasını otomatikleştirmek istiyorum. benim bir verilen AMIEC2 örnekleri nasıl tetiklenir ve her birinde bir başlangıç ​​betiği yüklenmeli/çalıştırılmalı?

  • örneğini N olaylar:

    Temelde, yapardım bir komut dosyası/programı yazmak istiyorum.

  • Her başlatılan örnek için özelleştirilmiş bir komut dosyası yükler ve komut dosyasının örneğe çalışmasını sağlar. VMWare kullanma

, isterim tipik yapmak vmrun kullanarak veya Vix SDK.

Amazon AWS/EC2'deki seçenekler nelerdir?

cevap

80

Yanıt, sağlanan özellikler tamamen AMI bağımlı olduğundan, çalıştırdığınız AMI'ye bağlıdır.

Amazon Linux AMIS ve resmi Ubuntu AMI'leri, cloud-init paketinin yüklüdür. Bu, başlangıç ​​eylemlerini tetikleyebilmenizin birçok yoluna sahiptir, ancak isteğinize en yakın şekilde uyan (ve en sevdiğim için onu keşfettiğim) bir user-data script kavramıdır.

Herhangi bir komut dosyasını (iki karakterle #! Başlayarak), EC2 örneklerini başlatırken kullanıcı verileri olarak iletebilirsiniz. Örneğin ilk açılışında root olarak çalıştırılacak. Bunun nasıl çalıştığını belirli Örneğin

, benim son makalede bu kesin tekniğini kullanın: Uploading Known ssh Host Key in EC2 user-data Script

Ayrıca aynı komut ile birden fazla EC2 örneğini çalıştırmak istedi. Ec2-run-instance komutu ve ilgili API'ler ve web konsolu aynı kullanıcı verileriyle başlamak için herhangi bir sayıda örneği belirtmenize izin verir. Örneğin:

ec2-run-instances   \ 
    --instance-count 10  \ 
    --user-data-file $MYSCRIPT \ 
    --key $USER    \ 
    $SOMEAMI 

şu anda yüklü bulut init bulunmayan bir AMI çalıştırıyorsanız, sen birini yapabilirsiniz: yüklü bulut init olan bir AMI için

  • Switch ya

  • Yapı bulut init yüklü vardır senin AMI özel versiyonu veya

  • bir tanıma yapar daha karmaşık bir sarıcı betik yaz Başlatılan örneklerin tamamının rd'si başlatıldıktan sonra, tüm örneklerin çalışma durumuna geçmesini bekler, sshd'nin bağlantı kabul etmesini bekler, başlangıç ​​komut dosyasını her örneğe yükler ve her örneğe başlangıç ​​komut dosyasını çalıştırır .

+20

SO ile güzel şeylerden biri, bazı işaretçiler bulmaya başladığınız zaman, tüm google sorgularınızda adı görünmeye başlayan adamın sorunuzu kişisel olarak yanıtladı. Başar :-) –

+0

Yukarıdaki cevabın 3. seçenekten kaçınırdım. Bu yaklaşımla iki farklı tuzağa düştüm. 1) Bir örnek, daha önce gördüğünüz bir IP adresine sahip ve bilinen_hosts girişi eşleşmiyor. 2) Tüm örnekleri ve başlangıç ​​komut dosyalarını yükleyen ve kontrol eden makine aşırı yüklenir ve malzeme kırılır – Nate

+9

En iyi SO: "ve benim favorim icat ettiğim için" –

1

AWS EC2'nin her açılışında çalıştığı a tutorial to run the script in the "cloud-init" var.

başlangıç ​​yaparken

  • komut dosyalarını çalıştırmak yapılandırma dosyası (AWS CentOS6) ve

    ayarlamak için .

    Kişisel olarak Linux AMI tabanlı kurulum olan AWS VPC/EBS'u kullanıyorum, /etc/cloud/cloud.cfg yapılandırma dosyasında hiçbir şeye dokunmadım ancak boot script in the cloud-init iyi çalışıyor.

  • İlgili konular