Chef-Soloを使用したAmazon Cloud Auto-Configuration

こんにちは



この記事では、クラウドでの自動構成について説明します。 例として、WordPressが「準備される」ec2-instanceを起動します。



自動構成により、パッケージの自動インストールと構成、アプリケーションの展開を理解します。 構成プロセスは、構成可能なインスタンスへのsshログインなしで、文字通り1つのコマンドで実行する必要があります。









WordPressがインストールされたインスタンスを取得するには、 Amazon EC2 API ToolsChef-Solo 、およびそのためのクックブックが必要です。

クックブックは、Chef-Soloがサーバーを「準備」する(構成する)レシピのコレクションです。 つまり、次のような「クックブック」がいくつか必要になります。



wp以外はすべて、 コミュニティリポジトリのクックブックです 。 wpは、シンプルなワンレシピクックブックで、Chef-SoloがsvnからWordPressの最新バージョンをダウンロードし、データベースを作成してインストールします。 git リポジトリで収集しすべての必要なクックブック。

Chef-Soloを実行するには、solo.rbとnode.jsonの2つの構成ファイルが必要です。



solo.rb:

file_cache_path "/var/chef-solo" cookbook_path "/var/chef-solo/cookbooks"
      
      



これにより、クックブックへのパスが設定されます。



node.json:

 { "run_list": [ "recipe[php::package]", "recipe[php::module_mysql]", "recipe[apache2]", "recipe[apache2::mod_php5]", "recipe[subversion]", "recipe[mysql::server]", "recipe[wp]" ], "php" : { "conf_dir" : "/etc/" }, "mysql" : { "server_root_password" : "xxxie0AiquaiX", "service_name" : "mysqld", "platform" : "amazon" } }
      
      



このファイルでは、実行するレシピを示し、パラメーターを設定します。



準備が完了したら、続行できます。 残りは、Amazon EC2 API Toolsスイートからのコマンドを使用してインスタンスを上げることだけです。



 ec2-run-instances {ami} -t {instance shape} -k {key_name},
      
      





クックブックと設定をダウンロードし、chef-soloをインストールして実行します。

しかし! ssh経由でインスタンスにアクセスしないことに同意しました。 インスタンスにログインせずに複数のコマンドを実行するにはどうすればよいですか? 非常に便利なAWS機能であるユーザーデータが役立ちます。 これを使用して、bashスクリプトの実行など、データをインスタンスに転送できます。



chef-solo-inst.sh:

 #!/bin/bash -x #write logs LOGS="/root/autoconf-log.$(date -I)" exec > $LOGS 2>&1 SOLODIR="/var/chef-solo" CFGDIR="$SOLODIR/wp-aws-chef-solo" #install Chef rpm -ivh http://opscode-omnitruck-release.s3.amazonaws.com/el/6/x86_64/chef-10.14.4-2.el6.x86_64.rpm #install git yum -y install git #create dir and download cookbooks mkdir "$SOLODIR" cd "$SOLODIR" git clone https://github.com/morkot/wp-aws-chef-solo git clone https://github.com/morkot/cookbooks #run chef-solo chef-solo -c "$CFGDIR"/solo.rb -j "$CFGDIR"/node.json
      
      





これで、自動構成されたインスタンスを生成する準備ができました。



 ec2-run-instances ami-1624987f -t t1.micro -k {your_key_name} --user-data-file chef-solo-inst.sh
      
      



ここで、--user-data-file chef-solo-inst.shは、ローカルに配置されたbashスクリプトをユーザーデータとして使用するように指示するオプションです。

数分後、ec2-describe-instancesコマンドを実行し、発生したインスタンスのDNS名をコピーして、http:// {instance_dns_name} / wpをブラウザーで開くと、WordPress設定ページが開きます。







ページが利用できない場合、何かがおかしかった。 / rootディレクトリのインスタンスにあるログファイルautoconf-log。{Date}を調べると、正確に何がわかります。



したがって、完全に調整された、すぐに動作するインスタンスが得られました。 ユーザーデータと組み合わせてシェフレシピを使用すると、複雑なシステムを構成できます。 さらに、レシピはクロスプラットフォームにすることができ、それらの助けを借りて、異なるOSでインスタンスを構成できます。



このアプローチで最も興味深いのは、インフラストラクチャをコードとして使用することです(コードとしてのインフラストラクチャ)。 したがって、ソフトウェア開発と同じ方法(たとえば、 TDD )を使用できます。



この記事では、自動構成の最も簡単な方法の1つを示しますが、さらに先へ進むことができます:既にインストールされているchefクライアントでイメージを作成し、起動時にインスタンスが役割に応じてchefサーバーによって構成されるようにします。 しかし、これは次の記事のトピックです。



All Articles