Fabric (dan Capistrano, mungkin alat Ruby tanpa nama yang Anda temui) agak tidak biasa karena merupakan pelari tugas dengan fitur tambahan untuk menjalankan tugas dengan mudah pada host jarak jauh. Saya tidak mengetahui adanya alat populer lain yang melakukan hal yang persis sama, tetapi tergantung pada kebutuhan Anda, ada beberapa opsi lain yang dapat bekerja untuk Anda.
Grunt dan Gulp adalah pelari tugas utama dalam ekosistem Javascript. Meskipun tidak dirancang khusus untuk menggunakan perangkat lunak, mereka berdua memiliki sistem berbasis plugin yang memungkinkan Anda melakukan ini, dan Anda akan menemukan banyak artikel dari orang yang menggunakan salah satu untuk melakukannya. Misalnya, tutorial ini menggunakan satu grunt-ssh
plugin yang mengintegrasikan ssh dengan kasar, sementara satu ini mengandalkan gulp-rsync
.
Menggunakan pelari tugas untuk menyebarkan kode cenderung menjadi pendekatan yang disukai oleh pengembang yang mengenakan topi operasi. Ketika Anda bertanya kepada seorang insinyur operasi, mereka lebih cenderung menyarankan meretas perilaku ini ke alat konfigurasi. Ini dapat mengambil banyak bentuk (misalnya, mengemas aplikasi Anda menjadi rpm atau deb, lalu memasangnya seperti perangkat lunak lainnya), tetapi saya akan fokus pada apa yang saya pikir akan menjadi metode paling sederhana dan paling langsung untuk Anda.
Kemungkinan adalah alat manajemen konfigurasi, tapi itu benar-benar bersinar di orkestrasi tugas , yang akan saya definisikan sebagai "menjalankan serangkaian tindakan melintasi satu set server". Dokumentasi resmi adalah tempat yang baik untuk memulai, tetapi untuk memberi Anda gambaran seperti apa ini, Anda mungkin memiliki buku pedoman (file YAML yang mendefinisikan serangkaian tugas) seperti ini:
- hosts: webservers
tasks:
- name: update code checkout
git:
repo: ssh://git@github.com/mylogin/hello.git
dest: /var/www
version: master
- name: restart webserver
command: restart-command-you-run
Ketika Anda menjalankan file ini dengan ansible-playbook
, itu akan mencari daftar host Anda (sesederhana file ini, tetapi juga bisa menjadi daftar dinamis yang ditulis dalam bahasa pemrograman apa pun) untuk menentukan server apa yang ada dan kelompok apa mereka berada, dan kemudian jalankan tugas yang ditentukan pada server yang Anda kirimi.
Sekarang, Anda menentukan bahwa Anda ingin tetap berada di ekosistem Javascript. Namun, sementara Ansible adalah hal baru bagi Anda, itu tidak memiliki semua kompleksitas bahasa pemrograman lain, karena konfigurasi ditulis dalam bahasa YAML. Ini juga akan memungkinkan Anda untuk melakukan jauh lebih banyak nanti, dan tidak seperti beberapa pesaingnya, menggunakan ssh untuk berkomunikasi, jadi hanya ada sedikit pengaturan yang terlibat (tidak ada yang dipasang pada mesin jarak jauh).