2015-08-15 15 views
8

AWS CodeCommit kullanıyorum;Tüm AWS EC2 örneklerimin git/codecommit'ten nasıl çekileceğini nasıl anlarım?

Tüm bu EC2 örnekleri aynı rol etiketine sahipse, bunu nasıl başarabilirim?

Süslü bir şey yapmak istemiyorum, tek isteğim bir etiket belirtmek, bir düğmeyi tıklatmak ve bu etiketle tüm EC2 örneklerini CodeCommit için çekmektir. Bunu yerel makinemden yapmak istiyorum.

Her EC2 sunucumdaki CodeCommit'e erişmek için SSH anahtarlarını koymam gerektiğini ve bunların her birine git'i yüklemem gerektiğini biliyorum (bunu bir AMI'ye dönüştüreceğim). Ben sadece bir EC2 makinelerinin git çekmesi için "tetiklemesi" nasıl emin değilim? AWS komutu var mı?

Ben bir dev ops adam değilim ve sadece temel linux ve php biliyorum.

cevap

12

Bir IAM rolü ile başlatılan EC2 örnekleri için SSH anahtarlarında bile pişman gerekmez. Git, CodeCommit kimlik bilgilerini EC2 örneği meta verilerinden alabilir. son AWS CLI paketi ile Linux tabanlı AMI ve aşağıdaki satırları pişirin içinde ~/.gitconfig:

[credential] 
    helper = !aws --profile default codecommit credential-helper [email protected] 
    UseHttpPath = true 

Lansmanı bir IAM rolle örneği ekli ve sonra bir daha ayar yapmadan CodeCommit repo klonlarız .

Etiketlere dayalı bir EC2 örneği filosunda git komutlarını çalıştırmak istiyorsanız, Capistrano ve Capify-EC2'a bakmak isteyebilirsiniz.

Güncelleme: CodeCommit'ten dağıtmak için AWS OpsWorks kullanmaya açıksanız, bunun nasıl yapılacağı hakkında bir recent blog article vardır.Ayrıca, OpsWorks'ü Capistrano'lu örneklerde run arbitrary commands'a da kullanabilirsiniz.

+0

Soruyu sorduğumda bu cevabı geri alsaydım. Sonunda EC2 filomda git clone komutlarını çalıştırmak için Fabric'i kullandım. –

+1

Bunu deneyen ve "profil varsayılanı bulunamadı" ile sorun yaşıyorsanız boş bir profil belirtmek için '' ''seçeneğini kullanın. Profiliniz EC2 örneğindeki '$ AWS_DEFAULT_PROFILE 'ortam değişkeninde saklanabilir/saklanmalıdır. –

+2

@RobbieAverill "--profile default" bitini tamamen bırakabilirsiniz (ve varsayılan profiliniz yoksa varsayılan olarak ayarlanmıyorsa) –

4

Eğer yönetilen hizmetleri AWS ile kendisine alırsınız yakın CodeDeploy olduğunu. Bununla birlikte, dağıtımı EC2 örneklerinde komut satırı veya web konsolu üzerinden düzenleyebilirsiniz. Ancak CodeDeploy, sadece şu ana kadar S3 veya GitHub'daki eserleri çeker. Artık, CodeCommit tamamen CodePipeline ve CodeDeploy gibi ilgili başka Amazon hizmetlerinden izole gibi görünüyor, yüzden iyi bir seçim gibi görünmüyor. Ancak, elbette, Amazon yol haritası tüm bunları entegre etmektir (bunu yapmamak anlamsız olacaktır). Yani, şimdi righ, GitHubCodeCommit kullanarak daha iyi olurdu. Gözönünde

Ancak, GitHub kullanılarak değildir, daha sonra, olasılıkla iterek, yapı ya da testler, kaynak kod çekerek, bir Cl (sürekli entegrasyon) Deponun arasında çözeltisi ve CodeDeploy mi S3 ve bunun hakkında CodeDeploy anlatıyor. Örneğin, CodeShip var, bunu yapabiliyor ve birçok harici servis ile entegre oluyor. Ya da sizin için CI sunucunuza sahip olabilirsiniz, Jenkins, sizin için bu "tutkal" rolünü yapıyor. (Jenkins muhtemelen en esnek olanıdır çünkü açık kaynaklıdır ve her şey için eklentileri olabilir.)

Yani, biraz parçalayarak, iş akışı böyle bir şey olurdu: En deposuna

  • itme kodu; CI CI, bir olay olduğunda (bazı dallarda veya yeni bir etikette, yapılandırılabilir olmalıdır) her ne zaman isterseniz, istediğinizi veya gereksinim duyduğunuz (çalıştıran, test eden, paketleyen) ve iter. S3 (genellikle bir tarball dosyası olarak); Bir şeyleri belirledik biçimine göre
  • , sizin CI örneklerini hemen EC2 üzerinde dağıtmak Kod Dağıt söyler, yoksa sadece yeni bir sürümü mevcut var söyler ve dağıtmaya tetiklemek için izin verir manuel olarak, web konsolunda CLI üzerinden, istediğiniz zaman.

(Aslında CodeDeployEC2 örneklerini kodunu itmek değildir. Bunun yerine, her EC2 örneği bilmek için havuzları düzenli CodeDeploy sunucu bir ajan çalıştırmalısınız yeni bir şey için varsa olmak, neyse. lokal CodeDeploy koordinatları uygulanmış ve ajanların geri bildirim almak, bu yüzden örneklerini tarafında yan ve% 100 pasif % 100 etkindi CodeDeploy sanki çok işe yarıyor.)

>CodePipeline - ->CodeDeploy, ya da sadece CodeCommit-

en "temiz" AWS çözüm CodeCommit olacağını>CodeDeploy, ancak bu hizmetler tamamen entegre değildir şimdi. >CodeDeploy - Senin durumunda

, en basit ve uygulanabilir bir çözüm şu anda Github olurdu. Bundan farklı bir şey, yoldaki bazı ara adımları gerektirecektir (örneğin, verdiğim örnekler gibi (CodeShip, Jenkins, vb).

İlgili konular