ファブリック(およびCapistrano、おそらく出会った無名のRubyツール)は、リモートホストでタスクを簡単に実行するための追加機能を備えたタスクランナーであるという点で、少し変わっています。まったく同じことをする他の一般的なツールは知りませんが、ニーズによっては、他にもいくつかのオプションが機能する場合があります。
GruntとGulpは、Javascriptエコシステムで最も重要なタスクランナーです。ソフトウェアを展開するために特別に設計されていないが、それらの両方は、あなたがこれを行うできるシステムをプラグインベースのしている、とあなたは使っている人の記事をたくさん見つけることができますいずれか 1を、そうすることを。たとえば、このチュートリアルではプラグインを使用してgrunt-ssh
sshをgruntと統合しますが、これはに依存していgulp-rsync
ます。
タスクランナーを使用してコードを展開することは、opsの帽子をかぶっている開発者が好むアプローチです。運用エンジニアに尋ねると、この動作を構成ツールにハッキングすることを提案する可能性が高くなります。これは多くの形をとることができます(たとえば、アプリをrpmまたはdebにパッケージ化してから、他のソフトウェアと同様にインストールします)。しかし、私が最も簡単で最も直接的な方法だと思うことに焦点を当てます。
Ansibleは表面的には構成管理ツールですが、「サーバーのセット全体でアクションのセットを実行する」と私が定義するタスクオーケストレーションは本当に優れています。 公式ドキュメントは開始するのに適した場所ですが、これがどのように見えるかを理解するために、次のようなプレイブック(一連のタスクを定義するYAMLファイル)があるとします。
- 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
このファイルをansible-playbook
で実行すると、ホストリスト(iniファイルと同じくらい簡単ですが、任意のプログラミング言語で記述された動的リストにすることもできます)を検索して、存在するサーバーとサーバーが属するグループを特定します。指示したサーバー上で定義されたタスクを実行します。
これで、JavaScriptエコシステムにとどまりたいと指定しました。ただし、Ansibleは新しいものですが、構成はYAMLで記述されているため、他のプログラミング言語のような複雑さはありません。また、後でもっと多くのことができるようになり、競合他社のいくつかとは異なり、sshを使用して通信するため、関係する設定はほとんどありません(リモートマシンにインストールするものはありません)。