Bash Booster-クリーンbashのSCMツール

プロの管理者は、Chef、Ansible、SaltStackなどのSCMシステムを長い間使用してサーバーを管理してきました。 これらのツールは、多数のサーバーを集中管理するのに役立ちます。 同じサーバーを管理するために、このようなツールをインストールして構成するのに必要な労力は、多くの場合、その使用による利益を上回ります。 この場合、このアプローチは「はい、bashでスクリプトをより速く書こう」とよく使用されます。 このアプローチは非常に人気があるため、古き良きbashのみを必要とし、単一サーバーの構成に非常にうまく使用できる軽量のSCMツールを紹介したいと思います。



そのため、Bash Boosterは、 dem等の bashスクリプトを記述して、サーバーを構成し、アプリケーションを展開するのに役立つライブラリです。 シェフの印象を受けてVagrantで使用するために書かれましたが、範囲はこれに限定されません。 それは、bash、標準ユーティリティ、そして場合によってはpython(そのままLinuxシステムにインストールされる)のみを必要とします。 つまり 追加のトレーニングなしで完全に裸の車で走るのは非常に適しています。



生きている例を見てみましょう。 Vagrantをデモに使用します。 この例のソースコードはBitbucketにあり、すべてのステップが個別のコミットとしてフレーム化されています。



したがって、Linux Ubuntu 14.04を搭載したサーバーがあり、その上にnginxをインストールして構成する必要があるとします。



空のディレクトリとVagantfileを作成します:



# -*- mode: ruby -*- # vi: set ft=ruby : VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "ubuntu/trusty32" config.vm.network :forwarded_port, host: 8080, guest: 80 end
      
      







そして、コマンドを実行します:



 $ vagrant up
      
      







Vagrantはクリーンなシステムで仮想マシンを作成して実行します(イメージをダウンロードするまで待つ必要がある場合があります)。 さらに、ホストシステムの現在のディレクトリを/ vagrantポイントにマウントします。 仮想マシン内の例のファイルにアクセスできます。 あなたはそれをチェックアウトすることができます:



 $ vagrant ssh $ ls /vagrant Vagrantfile $ exit
      
      







次に、 Bash Boosterアーカイブをダウンロードして、bashbooster-0.3betaに解凍します(執筆時点では0.3betaが現在のバージョンです)。 また、セットアップスクリプトを指定して、Vagrantfileを修正します。



 # -*- mode: ruby -*- # vi: set ft=ruby : VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "ubuntu/trusty32" config.vm.provision :shell, inline: "/vagrant/provision.sh" config.vm.network :forwarded_port, host: 8080, guest: 80 end
      
      







これで準備が完了し、最も興味深いものに進むことができます。 provision.shスクリプトを作成します。



 #!/usr/bin/env bash #   CDPATH,     #    cd unset CDPATH #      ,    cd "$( dirname "${BASH_SOURCE[0]}" )" ## #  Bash Booster ## BB_LOG_USE_COLOR=true #     source bashbooster-0.3beta/bashbooster.sh #  nginx bb-apt-install nginx
      
      







スクリプトを実行可能としてマークします。



 $ chmod a+x provision.sh
      
      







そして、サーバーのセットアップを実行します。



 $ vagrant provision
      
      







ログには次の行が表示されます。



 bb-apt [INFO] Updating apt cache bb-apt [INFO] Installing package 'nginx'
      
      







これはどういう意味ですか? 実際、スクリプトは実行されました。



 $ apt-get update $ apt-get install nginx
      
      







ブラウザでhttp:// localhost:8080にアクセスすると、標準の挨拶「ようこそnginxへ!」が表示されます。ここでvagrantプロビジョニングを再度実行すると、スクリプトはほとんど即座に動作します。要求されたパッケージは既にインストールされています。



index.htmlファイルでwwwディレクトリを作成しましょう:



 <h1>Bash Booster Rocks!</h1>
      
      







そして、このディレクトリからファイルを提供するようにnginxを設定します。 これを行うには、confディレクトリにnginx-default-site構成を作成します。



 server { root /vagrant/www; index index.html; }
      
      







そして、provision.shスクリプトに構成の同期を追加します。



 bb-event-on "nginx-updated" "on-nginx-updated" on-nginx-updated() { service nginx restart } bb-sync-file \ /etc/nginx/sites-available/default \ conf/nginx-default-site \ nginx-updated
      
      







次に、構成コマンドを実行します。



 $ vagrant provision
      
      







ログが表示されます:



  * Restarting nginx nginx ...done.
      
      







http:// localhost:8080にアクセスすると、標準のnginxグリーティングではなく、以前に作成したファイルから「Bash Booster Rocks!」という非常に大きな碑文を見ることができます。



どのように機能しますか? bb-event-on関数は、on-nginx-updated関数をnginx-updatedイベントにサブスクライブします。 bb-file-sync関数は、nginx設定のローカルコピーを現在のバージョンと同期します。 変更があった場合、この関数はnginx-updatedイベントを発生させ、それに応じてハンドラーはnginxを再起動します。 vagrantプロビジョニングを再試行すると、nginxを再起動せずに機能します。 nginx-default-siteを変更すると、nginxが再起動します。 したがって、必要なことだけを行うコンパクトなべき等スクリプトが得られました。



もちろん、Bash Boosterのすべての機能がここで説明されているわけではありませんが、最初の知り合いにとっては十分です。 完全なドキュメントはwww.bashbooster.netで入手できます。



All Articles