AWS OpsWorks
ユーザーガイド (API バージョン 2013-02-18)

スタック設定およびデプロイメント属性

AWS OpsWorks スタックでインスタンスに対してコマンド (Deploy ライフサイクルイベントに対応したデプロイコマンドなど) が実行されると、スタックの現在の設定が記述された属性のセットがインスタンスのノードオブジェクトに追加されます。Deploy イベントと Execute Recipes スタックコマンド用に、AWS OpsWorks スタックによっていくつかの追加のデプロイ情報を渡すデプロイ属性がインストールされます。ノードオブジェクトの詳細については、「属性の上書き」を参照してください。完全修飾ノード名などの、一般的に使用されるスタック設定とデプロイメント属性の一覧については、「スタック設定およびデプロイ属性: Linux」および「組み込みクックブックの属性」を参照してください。

注記

Linux スタックの場合、エージェントの CLI の get_json コマンドを使用して、JSON オブジェクトの形式でこれらの属性の完全なリストを取得できます。

以降のセクションでは、以下のような構成の単純なスタックの Configure イベントと Deploy イベントに関連する属性を示します。

  • 2 つのインスタンスが属する 1 つの PHP アプリケーションサーバー Layer

  • 1 つのインスタンスを持つ 1 つの HAProxy Layer

この例は、PHP アプリケーションサーバーインスタンスの 1 つである php-app1 のものです。属性は、わかりやすいように、JSON オブジェクトの形式で表示されます。オブジェクトの構造は属性の完全修飾名に対応付けされます。たとえば、node[:opsworks][:ruby_version] 属性は JSON 形式では以下のように表示されます。

{ "opsworks": { ... "ruby_version": "1.8.7", ... } }

属性の設定

以下の JSON オブジェクトで示しているのは Configure イベントの属性です。このイベントは、インスタンスがオンラインまたはオフラインになったときに、スタックのすべてのインスタンスで発生します。属性には、組み込みのスタック設定属性と、イベントの前にスタック用に定義した任意のカスタム JSON 属性 (この例にはありません) が含まれます。長さの関係で編集されています。さまざまな属性の詳細な説明については、「スタック設定およびデプロイ属性: Linux」および「組み込みクックブックの属性」を参照してください。

{ "opsworks": { "layers": { "php-app": { "id": "4a2a56c8-f909-4b39-81f8-556536d20648", "instances": { "php-app2": { "elastic_ip": null, "region": "us-west-2", "booted_at": "2013-02-26T20:41:10+00:00", "ip": "192.0.2.0", "aws_instance_id": "i-34037f06", "availability_zone": "us-west-2a", "instance_type": "c1.medium", "private_dns_name": "ip-10-252-0-203.us-west-2.compute.internal", "private_ip": "10.252.0.203", "created_at": "2013-02-26T20:39:39+00:00", "status": "online", "backends": 8, "public_dns_name": "ec2-192-0-2-0.us-west-2.compute.amazonaws.com" }, "php-app1": { ... } }, "name": "PHP Application Server" }, "lb": { "id": "15c86142-d836-4191-860f-f4d310440f14", "instances": { "lb1": { ... } }, "name": "Load Balancer" } }, "agent_version": "104", "applications": [ ], "stack": { "name": "MyStack" }, "ruby_version": "1.8.7", "sent_at": 1361911623, "ruby_stack": "ruby_enterprise", "instance": { "layers": [ "php-app" ], "region": "us-west-2", "ip": "192.0.2.0", "id": "45ef378d-b87c-42be-a1b9-b67c48edafd4", "aws_instance_id": "i-32037f00", "availability_zone": "us-west-2a", "private_dns_name": "ip-10-252-84-253.us-west-2.compute.internal", "instance_type": "c1.medium", "hostname": "php-app1", "private_ip": "10.252.84.253", "backends": 8, "architecture": "i386", "public_dns_name": "ec2-192-0-2-0.us-west-2.compute.amazonaws.com" }, "activity": "configure", "rails_stack": { "name": null }, "deployment": null, "valid_client_activities": [ "reboot", "stop", "setup", "configure", "update_dependencies", "install_dependencies", "update_custom_cookbooks", "execute_recipes" ] }, "opsworks_custom_cookbooks": { "recipes": [ ], "enabled": false }, "recipes": [ "opsworks_custom_cookbooks::load", "opsworks_ganglia::configure-client", "ssh_users", "agent_version", "mod_php5_apache2::php", "php::configure", "opsworks_stack_state_sync", "opsworks_custom_cookbooks::execute", "test_suite", "opsworks_cleanup" ], "opsworks_rubygems": { "version": "1.8.24" }, "ssh_users": { }, "opsworks_bundler": { "manage_package": null, "version": "1.0.10" }, "deploy": { } }

情報の大部分は、名前空間とも呼ばれる opsworks 属性に含まれています。主な属性を次に示します。

  • layers 属性 – それぞれの属性がスタックの 1 つの Layer の設定を説明している、属性のセットです。

    Layer は短縮名 (この例では php-applb) で識別されます。その他の の短縮名の詳細については、「AWS OpsWorks スタックレイヤーリファレンス」を参照してください。

  • instances 属性 – 各 Layer にはインスタンスの短縮名が付けられた instances 要素があり、Layer のオンラインインスタンスごとに 1 つの属性が含まれています。

    PHP アプリケーションサーバー Layer には 2 つのインスタンス(php-app1php-app2)があります。HAProxy Layer には 1 つのインスタンス(lb1)があります。

    注記

    instances 要素には、特定のスタック設定およびデプロイ属性が作成された時点でオンライン状態にあったインスタンスのみが含まれています。

  • インスタンスの属性 – 各インスタンスの属性には、インスタンスのプライベート IP アドレスやプライベート DNS 名など、インスタンスの仕様となる属性のセットが含まれています。わかりやすいように、例には php-app2 属性の詳細のみを示します。他のインスタンスにも同様の情報が含まれています。

  • applications – デプロイされるアプリケーションのリスト(この例では使用していません)。

  • stack – スタック名(この例では MyStack)です。

  • instance – これらの属性がインストールされるインスタンス(この例では php-app1)。レシピは、この属性を使用して、インスタンスのパブリック IP アドレスなどの、レシピが実行されているインスタンスに関する情報を取得できます。

  • activity – 属性を生成したアクティビティ(この例では Configure イベント)。

  • rails_stack – Rails アプリケーションサーバー Layer が含まれるスタックの Rails スタックです。

  • deployment – これらの属性がデプロイに関連付けられているかどうか。この例では、それらの属性が Configure イベントに関連付けられているため、null に設定されています。

  • valid_client_activities – 有効なクライアントアクティビティのリストです。

opsworks 属性の後には、以下のような他の最上位属性がいくつか続きます。

  • opsworks_custom_cookbooks – カスタムクックブックが有効化されているかどうかを示します。有効化されている場合、属性にはカスタムレシピのリストが含まれます。

  • recipes – このアクティビティによって実行されたレシピです。

  • opsworks_rubygems – インスタンスの RubyGems バージョンです。

  • ssh_users – SSH ユーザーのリスト(この例にはありません)。

  • opsworks_bundler – Bundler のバージョンとそれが有効化されているかどうかを示します。

  • deploy – デプロイメントアクティビティに関する情報です(この例にはありません)。

デプロイ属性

Deploy イベントまたは Execute Recipes スタックコマンドの属性は、組み込みのスタック設定およびデプロイ属性と、カスタムのスタック設定またはデプロイ属性で構成されます (この例にはありません)。以下の JSON オブジェクトは、php-app1 の属性を示しています。それらの属性は、スタックの PHP インスタンスに SimplePHP アプリケーションをデプロイした Deploy イベントに関連付けられています。オブジェクトの多くは、前のセクションで説明した Configure イベントの属性に類似したスタック設定属性で構成されます。そのため、例では主にデプロイ固有の属性に焦点を当てています。さまざまな属性の詳細な説明については、「スタック設定およびデプロイ属性: Linux」および「組み込みクックブックの属性」を参照してください。

{ ... "opsworks": { ... "activity": "deploy", "applications": [ { "slug_name": "simplephp", "name": "SimplePHP", "application_type": "php" } ], "deployment": "5e6242d7-8111-40ee-bddb-00de064ab18f", ... }, ... { "ssh_users": { }, "deploy": { "simplephpapp": { "application": "simplephpapp", "application_type": "php", "environment_variables": { "USER_ID": "168424", "USER_KEY": "somepassword" }, "auto_bundle_on_deploy": true, "deploy_to": "/srv/www/simplephpapp", "deploying_user": "arn:aws:iam::123456789012:user/guysm", "document_root": null, "domains": [ "simplephpapp" ], "migrate": false, "mounted_at": null, "rails_env": null, "restart_command": "echo 'restarting app'", "sleep_before_restart": 0, "ssl_support": false, "ssl_certificate": null, "ssl_certificate_key": null, "ssl_certificate_ca": null, "scm": { "scm_type": "git", "repository": "git://github.com/amazonwebservices/opsworks-demo-php-simple-app.git", "revision": "version1", "ssh_key": null, "user": null, "password": null }, "symlink_before_migrate": { "config/opsworks.php": "opsworks.php" }, "symlinks": { }, "database": { }, "memcached": { "host": null, "port": 11211 }, "stack": { "needs_reload": false } } }, }

opsworks 属性は、前のセクションで説明した例のものとほぼ同等です。以降のセクションでは、デプロイに特に関連する属性を取り上げています。

  • activity – これらの属性に関連付けられているイベント(この例では Deploy イベント)。

  • applications – 各アプリケーションの属性(アプリケーションの名前、スラグ名、タイプ)のリスト。

    スラグ名は、アプリケーションの短縮名であり、AWS OpsWorks スタックによってアプリケーション名から生成されます。SimplePHP のスラグ名は simplephp です。

  • deployment – デプロイを一意に識別するデプロイ ID。

deploy 属性には、デプロイされるアプリケーションに関する情報が含まれています。たとえば、組み込み Deploy レシピによって、deploy 属性のデータが使用されて、適切なディレクトリ内のファイルがインストールされ、データベース接続ファイルが作成されます。deploy 属性には、デプロイされる各アプリケーションの属性が含まれています。この属性の名前はアプリケーションの短縮名です。各アプリケーション属性には、以下の属性が含まれています。

  • environment_variables – アプリケーションに対して定義したすべての環境変数が含まれています。詳細については、「Environment Variables」を参照してください。

  • domains – デフォルトではアプリケーションの短縮名(この例では simplephpapp)。カスタムドメインを割り当てている場合は、同様にそれらがここに表示されます。詳細については、「カスタムドメインの使用」を参照してください。

  • application – アプリケーションの短縮名。

  • scm – この要素には、リポジトリ(この例では Git リポジトリ)からアプリケーションのファイルをダウンロードするために必要な情報が含まれています。

  • database – スタックにデータベース Layer が含まれている場合は、データベースの情報。

  • document_root – ドキュメントのルートです。この例では null に設定されており、ルートがパブリックであることを示しています。

  • ssl_certificate_cassl_supportssl_certificate_key – アプリケーションが SSL をサポートしているかどうかを示します。サポートしている場合、ssl_certificate_key および ssl_certificate_ca 属性は対応する証明書に設定されます。

  • deploy_to – アプリケーションのルートディレクトリ。

このページの内容: