2012-06-23 14 views
8

Daha önce klonlanmamışlarsa iki depoyu otomatik olarak klonlayan bir dev ortam oluşturmak için vagrant kullanmaya çalışıyorum.Kukla yürütme komutu kabukta çalışır, ancak kukla yoluyla değil

Kuklaları doğrudan git komutunu çalıştırmak için birçok yolla başarısız olduktan sonra, reposları klonlamak için basit bir komut dosyası yazdım. Bazı sebeplerden dolayı bu yöntemin kusursuz olacağını düşündüm, ama düşündüğümden daha iyi bir aptalım.

#!/bin/bash 
if [ ! -d /vagrant/repo-one-dest ]; then 
    git clone [email protected]:/repo-one.git /vagrant/repo-one-dest 
fi 

if [ ! -d /vagrant/repo-two-dest ]; then 
    git clone [email protected]:/repo-two.git /vagrant/repo-two-dest 
fi 

exit 

özel tuşlar uygun şekilde ayarlandığında:

exec {"load-repos": 
    command =>"/bin/bash /vagrant/manifests/modules/scripts/clone_repos.sh", 
    require => Package["git-core"], 
    } 

İşte senaryo. Vm'ye giriş yaptığımda ve bash clone_repos.sh'u manuel olarak çalıştırdığımda her şey çalışıyor. Ne kadar çok kez serseriyi yeniden yüklerim ve kukla kendi işini yapmasına izin vermezse, reposlar asla exec yoluyla yüklenmez. Neyi kaçırıyorum?

+0

İlk boşlukta boşluk eksik ['test. – ormaaj

+0

Bunu işaretlediğiniz için teşekkürler. Unfortunatley, gerçek dizini 'repo-one-dest' ile değiştirdiğimde yazıya girdiğim bir eser. Komut komut satırından çalıştırıldığında betik doğru çalışır ve boşluğa sahiptir. Sözdizimi hatasını kaldırmak için gönderiyi düzenledim. – jeremiahs

+1

Exec bloğunuza 'logoutput => true,' eklenmesi hata ayıklamaya yardımcı olabilecek daha fazla çıktıya neden olabilir Ayrıca bir dosya eklemek isteyebilirsiniz ["/ vagrant/manifests/modules/scripts/clone_repos.sh" Kukla, kukla VM'nize ittirmeden önce betiği yürütmeye çalışıyor olabilir. – pwan

cevap

4

Bu, büyük olasılıkla, genellikle vagrant kullanıcı olarak oturum açtığınız (varsayılan olarak, ancak bu, yapılandırma yoluyla değiştirilebilse de) olabilir. Tahmin ettiğim vagrant kullanıcısı, tuşların doğru şekilde kurulmasını sağlıyor.

Vagrant sizin hazırlayıcınızı çalıştırdığında (Kukla, bu durumda), ancak, bir sudo yapar, bu yüzden root kullanıcısı olarak çalışır.

Genelde dağıtımı yapmak için anahtarların ayarlanmasını öneririm, anahtarları bir yere koymak ve daha sonra düzgün şekilde kopyalamak veya SSH aracılarını kullanmak için GIT_SSH sarıcı kullanmaktır.

+0

İyi bir fikir. işe yarıyor, ama mantıklı görünüyor, iş akışımı değiştirerek sarılıyorum ve bu noktada işler nasıl gidiyor ve muhtemelen orijinal planıma geri dönmeyeceğim. Biraz boş zaman alırsam belki Sonunda sorun olup olmadığını görün. – jeremiahs

İlgili konular