//ルートにアクセスされたら/archiveにリダイレクトする

エイリーの備忘録

開発について書いていこうと思っています。

環境構築スクリプトをワンライナーで配布する方法!

みなさんこんにちわ! みなさんは環境構築はスクリプト化していますか? スクリプト化していたらどうやって実行していますか? クラウドからコピペでスクリプトファイルを作って実行していたりしないですか? 今回は、コマンド一発でスクリプトをwebから引っ張ってきて、実行する方法を紹介したいと思います。

導入事例

まずは、導入事例を見てみましょう。

https://www.meteor.com/install

https://brew.sh/index_ja

ぱっと探しますと、homebrewとmeteorがワンライナースクリプトで配布を行っていました。 しかも、homebrewに関してはここで紹介する方法と同じ方法で配布を行っています。(実行言語はrubyだけど。)

上記で上げたとおり、大きなコミュニティでも使われている方法ですので、楽にインストールを行えるというのが伺えると思います。 では実際にこの配布環境を作ってみましょう!

用意するもの

手順

  1. githubのpublicリポジトリスクリプトをうpする
  2. githubリポジトリにうpされたスクリプトのrowのURLを取得する
  3. curlスクリプトを取ってくる
  4. 実行する!

詳しい手順

githubのpublicリポジトリスクリプトをうpする

ここでは詳しい説明を割愛しますが、必ずpublicリポジトリにpushしてください。 publicでないとファイルを取ってこれない(はず)です

githubリポジトリにうpされたスクリプトのrowのURLを取得する

ここからが本番です。 一度、ブラウザで実際のファイルを確認してみましょう。 まず、ブラウザのURL欄に下記URLをコピペしてください。

https://raw.githubusercontent.com/account/repository/branch/filename

そして、後ろ4つのパラメータを自分に当てはまる形に修正してください。

account = githubのアカウント名
repository = リポジトリ名
branch = ブランチ名(masterがおすすめ)
filename = 目的のファイル名

例:https://raw.githubusercontent.com/youmjww/vimSetup/master/vimSetup.sh

これで実際に見てみると、目的のファイルのrowが見えるはずです。

実際にコマンドラインから実行してみる

ここは本当に簡単で、ワンライナーで実行します。 URLの部分は自分のURLに書き換えてください。

$curl https://raw.githubusercontent.com/account/repository/branch/filename | sh

ここでは、curlコマンドでgithubからソースをダウンロードしてきて、ダウンロードが完了したらshで実行をしています。 shの部分を書き換えると好きなシェル環境で実行できますが、筆者個人的には、どんな環境でも動くshで実行できるようにコードを組むのがいいかなと思います。

このスクリプトのメリット・デメリット

メリット

  1. リポジトリのREADME.mdにでも実行用のコードを書いておけば一回コピペして実行するだけなので操作する時間を大幅に削減できる。
  2. 友人などにおすすめだから使ってみてって渡す時に気楽に環境をインストールしてもらえる
  3. シェルスクリプトで書いておけば、大体のUnix/Linux環境で動く
  4. かっこいい!←ココ重要
  5. スクリプトをメンテしてもURLは変わらないので一度作ってしまえば永久に使えるコマンドになる

デメリット

  1. AnsibleやChefみたいに、環境構築専門の言語じゃないので、エラーが出ても止まらない。
  2. シェルスクリプトを書くのが辛い・・・

あとがき

この方法でのスクリプトの配布は本当に便利でして、あまり時間がない時にサックっと環境構築をしたい時にワンライナーを実行するだけでいいので、おすすめです! みなさんも是非やってみてください!(そして、いいなと思ったらツイートやコメントをくれると嬉しいなw)