web-dev-qa-db-ja.com

EC2の構成管理の一般的な戦略は何ですか?

サードパーティのクラウド構成サービスを使用せずに、EC2を使用した構成管理の主題について書かれた一般的なパターン/戦略またはホワイトペーパーは何ですか?具体的には、起動時に新しいインスタンスを構成およびプロビジョニングする方法、コード展開戦略などについて...

6
James

数十のブログ投稿からEC2をブートストラップする方法をまとめました。まだ作業中ですが、インスタンスを Puppet マスターに接続するために cloud-init を使用し、このインスタンスが果たす役割にすべてのパッケージを構成するためにPuppetを使用します。 Webistrano (CapistranoのGUI)コードをサーバーにデプロイします。

独自のマシンイメージを構築する場合は、ほとんどのシステムを構築できますが、構成管理ソフトウェアがインストールされていない、公開されている公式のUbuntuイメージを使用したいと考えました。

したがって、cloud-initを使用してbootstrapインスタンスになります。Cloud-initは bunt およびAmazon LinuxAMIに存在するパッケージです。さまざまな種類のインスタンスが可能です。 EC2の「user-data」metadata-optionを介して、作成時にインスタンスに渡されるデータ。user-dataを介して渡されるデータは、インスタンスの起動時にcloud-initによって実行され、次のようないくつかの形式をとることができます。シェルスクリプト、cloud-configyamlなど。

この投稿は、私たちと同じように、cloud-initの使用例を示しています。 http://www.atlanticdynamic.com/you-should-be-using-cloud-init/

そして、これが私たちのバージョンです:

#cloud-config
apt_update: true
apt_upgrade: true
packages:
- puppet
puppet:
  conf:
    agent:
      server: "puppet.example.com"
      certname: "%i.web.cluster1.eu-west-1.ec2"

インスタンスが起動するとすぐに、Puppetがインストールされ、Puppetマスターに接続されます。マスターへの接続を許可すると(証明書に署名すると)、インスタンスは自動的に構成を開始します。マスターは、nodes.ppファイルの正規表現を使用してインスタンスの証明書名と一致させ、それによってインスタンスに役割を割り当てます。その後、マスターはカタログをパペットエージェントに送信できます。パペットエージェントはこれを使用して自身を構成します。

起動後数分で、インスタンスを使用できるようになります。ノードにコードをデプロイする必要がある場合は、PuppetではなくWebistranoを使用します。現時点では、ノードをWebistranoの構成に手動で追加しますが、MCollectiveを使用して、ノードのメタデータに基づいて自動的に追加する予定です。

6
Martijn Heemels

ボトと ファブリック はこれに最適です。これがSeoMozでの 記事 です。私の現在の戦略は似ていますが、代わりにファブリックを使用してAmazonShellコマンドをローカルで実行します。

EC2インスタンスは、デプロイ中に割り当てられたメタデータをクエリすることもできます。これは、カスタムAMIと組み合わせると非常に強力になります。

(投稿できるリンクの数には制限があります。Botoはグーグルするのに十分シンプルです)

1
Israel