Saya seorang pemula dengan Wayang dan saya ingin tahu apakah saya berada di jalan yang benar untuk menyebarkan aplikasi dengan Wayang.
Aplikasi berada dalam file tar.gz yang berisi file dengan nomor versi. Jadi, saya melakukan ini untuk menyebarkan (saya pergi di server dan melakukan restart klien untuk mengambil tarball baru):
nodes.pp
node 'server1.domain.com' inherits basenode {
apps { apps:
version => 56,
apps_name => "apps_tarball.tgz",
}
init.pp (modules)
exec {"apps_wget":
command => "/usr/bin/wget http://web_server/${version}-${apps_name} -O /tmp/${container_zip_name}",
unless => "test -f /tmp/${version}-${apps_name}",
require => [ Package["wget"] ],
}
exec {"apps_unzip":
cwd => "/usr/local/apps/path",
command => "/usr/bin/unzip /tmp/${version}-${apps_name}",
unless => "test -f /usr/local/apps/path/apps-version-${version}",
require => [ Package["unzip"], Exec["container_wget"] ],
}
Tetapi, ketika saya ingin meningkatkan, saya tidak tahu mengatakan Wayang untuk menghapus direktori lama? Misalnya, Jika saya ingin memutakhirkan versi 56 ke 57: Saya harus menghapus direktori versi 56-an.
Saya mendengar tentang Capristrano dan tampaknya lebih baik menggunakan Wayang untuk paket pengelolaan, mengonfigurasi file, dan menggunakan Capristrano untuk menyebarkan aplikasi, bukan?
Terima kasih.
puppet
deployment
Richy
sumber
sumber
Jawaban:
Tidak, Kamu tidak.
Anda harus menggunakan manajemen paket yang tersedia di sistem operasi Anda. Jika perangkat lunak Anda dalam
tar.gz
format, Anda harus mengemasnya kembali secara lokal.deb
,.rpm
atau apa pun.Jika perangkat lunak adalah sesuatu yang dikembangkan secara lokal, Anda harus menggunakan alat bantu build / deploy apa pun yang tersedia untuknya.
sumber
Anda mungkin ingin mencoba menggunakan fpm untuk membuat RPM atau DEB dari tarbal Anda; ini sangat mudah digunakan, dan Anda tidak perlu memahami apa pun tentang format paket yang tidak Anda inginkan.
Untuk menjawab pertanyaan awal Anda, cara yang tepat untuk menyebarkan aplikasi dengan Wayang adalah membuat Wayang bekerja sesedikit mungkin; setiap
exec
sumber daya rumit yang mengunduh dan mengekstrak tarbal pasti sangat, sangat rapuh, dan menjadikan Boneka hanyayum install
sebuah paket yang jauh lebih sehat untuk jangka panjang.sumber
Saya akan berusaha sangat keras untuk membundel aplikasi sebagai paket RPM atau .deb dan membangun repositori yum atau apt untuk menampung paket-paket tersebut. Mengemas tarball atau zip yang baru saja Anda buka ke direktori cukup mudah (tetapi harus menjadi pertanyaan terpisah). Kemasan tersedia dengan cara melacak versi dengan baik dan menangani segala macam hal yang hanya membuka tarball tidak akan menangani dengan baik.
Jika saya benar-benar tidak bisa membangun paket yang tepat saya akan melakukan sesuatu seperti ini:
nodes.pp:
init.pp (modul):
Alternatif lain adalah dengan hanya menggunakan sumber daya boneka rekursif seperti:
(Di mana Anda sudah melakukan hal-hal yang tidak diar benar pada master boneka. Mungkin juga memerlukan paket apa pun yang menjalankan layanan dan memberitahukan layanan apa pun yang kehabisan).
sumber
Selain itu, melakukan segala sesuatu sebagai eksekutif agak jelek, dan bisa sulit untuk memecahkan masalah ketika hal-hal mulai rusak; jika Anda bisa, mungkin tetap mengekstraksi versi file aplikasi di server boneka, dan menggunakan
file
sumber daya rekursif untuk mengambil?sumber
Saya tentu saja suka mengemas tarball (RPM atau apa pun), tetapi beberapa petunjuk:
Untuk menghapus versi lama Anda cukup menghapus semua versi tetapi yang Anda instal. Dengan cukup bash dan ekstglob baru-baru ini diaktifkan Anda bisa
rm -r /usr/local/apps/path/apps-version-!(${version})
. Waspadalah terhadap penghapusan file konfigurasi dan semacamnya. Anda dapat membuatexec
refreshonly => true
dan kemudiannotify
dari eksekutif instalasi.Anda bisa menggunakan
creates
atribut bukanunless => 'test -f ...'
. A tetapi lebih dimengerti.sumber