SORU
9 Ocak 2009, Cuma


Nasıl tek bir sunucu Capistrano kullanarak dağıtmak için

Birkaç rolleri farklı sunuculara sahip üretim yapılan bir sistem var. Belirli bir sunucuya dağıtarak yeni bir uygulama sunucusu test etmek için, üretimin her sunucu için yeniden dağıtmak zorunda kalmadan istiyorum. Bir şekilde Capistrano belirli bir sunucuya dağıtmak için sormak var mı? İdeal gibi bir şey çalıştırmak mümkün olmak istiyorum

cap SERVER=app2.example.com ROLE=app production deploy

ben sadece app2.example.com dağıtmak istedim.

Teşekkürler!

[güncelleme] Çözüm yürüterek Hengxiang dikiş tarafından önerilen çalıştım:

cap HOSTS=app2.server.hostname ROLE=app qa deploy 

ama capistrano sunucudaki diğer roller için görevleri yürütmek için app görevleri yanında çalışıyor gibi görünüyordu. Belki cap (v2 koşuyorum.benim sürüm güncelleme istiyorum 2.0)?

CEVAP
22 Ocak 2009, PERŞEMBE


Yukarı capistrano kullanıcılar listesinde bir soru 15* *ve Jamis (netlik için bana göre burada biraz düzenlenebilir): aşağıdaki yanıtı var gönderme sona erdi


ANA ortam değişkeni deneyin:

cap HOSTS=app2.example.com production deploy

Bunu her rolü olarak app2, sadece tedavi olacağını unutmayın ilan için hangisi olur.

Eğer istediğiniz düzenli dağıtmak, ama sadece app2 ve hareket halinde sadece app2 tarifi dosyasında bildirilmiş gibi, HOSTFİLTER kullanabilirsiniz değişken yerine:

cap HOSTFILTER=app2.example.com production deploy 

[...]

Bu somut bir örneği ele alalım. Sanırım senin senaryoyu üç sunucuları tanımlar, A, B, C, D Ve bir görev tanımlar, "", foo bu (varsayılan) A ve B üzerinde çalıştırmak istiyor, ama bu Gibi C.:

role :app, "A", "B"
role :web, "C"

task :foo, :roles => :app do
  run "echo hello"
end

Eğer bunu yaparsanız şimdi, cap foo, her ikisi de A ve B echo komutunu çalıştırın

Eğer C echo komutunu çalıştırın. cap HOSTS=C foo,, eğer ne olursa olsun :roller görev parametresi.

Eğer echo komutu çalışmaz cap HOSTFILTER=C foo yaparsan hepsi, çünkü kesişim (B) ve (C) boş. (Orada hayır sahipleri foo ana C. maç listesi)

Eğer sadece echo komutunu çalıştırın. cap HOSTFILTER=A foo, yoksa (B) (A) kesişen sahip olduğu için, (A).

Eğer bunu yaparsanız son olarak, yankı çalışacak cap HOSTFILTER=A,B,C foo, A ve B (C) komutu, çünkü (B) (A, B, C)ile kesişen (B).

Özetlemek gerekirse: ANA bilgisayarlar veya tamamen rolleri beyanı geçersiz kılar görev ve her şeyi belirtilen ana makine(ler) karşı çalıştırmak için zorlar. Bu HOSTFİLTER, diğer taraftan, sadece mevcut ana filtreler verilen listesiyle, zaten yalnızca bu sunucular seçimi görevler sunucu listesi.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bart Baker

    Bart Baker

    1 Aralık 2006
  • BeginnersTech

    BeginnersTec

    8 NİSAN 2011
  • RiceBunny

    RiceBunny

    16 ŞUBAT 2006