0

私はEC2のスタックを作成する輻輳スクリプトと、自動スケーリングと雲時計アラームとDNSレコードを持つRDSを作成します。自動スケーリンググループによって作成されたインスタンスに、輻輳情報スクリプトを使用して作成されたインスタンスに弾性IPを割り当てます。

はここ

LaunchConfiguration: 
Type: "AWS::AutoScaling::LaunchConfiguration" 
Metadata: 
    "AWS::CloudFormation::Init": 
    config: 
     packages: 
     yum: 
      "php": [] 
      "php-mysql": [] 
      "mysql": [] 
      "httpd": [] 
     sources: {"/var/www/html": "https://wordpress.org/latest.tar.gz"} 
     files: 
     "/root/config.sh": 
      content: 
      "Fn::Join": 
       - "" 
       - [ 
        "#!/bin/bash -ex\n", 
        "cp wp-config-sample.php wp-config.php\n", 
        "sed -i \"s/'database_name_here'/'devwordpress'/g\" wp-config.php\n", 
        "sed -i \"s/'username_here'/'devuser'/g\" wp-config.php\n", 
        "sed -i \"s/'password_here'/'devpassword'/g\" wp-config.php\n", 
        "sed -i \"s/'localhost'/'", {"Fn::GetAtt": ["Database", "Endpoint.Address"]}, "'/g\" wp-config.php\n", 
        "echo \"define('DISALLOW_FILE_MODS', true); \" >> wp-config.php \n", 
        "echo \"define('WP_AUTO_UPDATE_CORE', false); \" >> wp-config.php \n", 
        "chmod -R 777 wp-content/ \n", 
        "curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar \n", 
        "php wp-cli.phar core install --url=\"", "wordpress.devops-tech.in", "\" --title=\"", {"Ref": "BlogTitle"}, "\" --admin_user=\"", {"Ref": "BlogAdminUsername"}, "\" --admin_password=\"", {"Ref": "BlogAdminPassword"}, "\" --admin_email=\"", {"Ref": "BlogAdminEMail"}, "\" \n", 
        "php wp-cli.phar plugin install --activate amazon-web-services \n", 
        "php wp-cli.phar plugin install --activate amazon-s3-and-cloudfront \n", 
        "CHARCOUNT=`printf \"", "wordpress", "\" | wc -c` \n", 
        "php wp-cli.phar db query \"DELETE FROM wp_options WHERE option_name = 'tantan_devwordpress_s3'; INSERT INTO wp_options (option_name, option_value, autoload) VALUES('tantan_prodwordpress_s3', 'a:15:{s:17:\\\"post_meta_version\\\";i:1;s:6:\\\"bucket\\\";s:", "$CHARCOUNT", ":\\\"", "wordpress","\\\";s:6:\\\"region\\\";s:0:\\\"\\\";s:6:\\\"domain\\\";s:9:\\\"subdomain\\\";s:7:\\\"expires\\\";s:1:\\\"0\\\";s:10:\\\"cloudfront\\\";s:0:\\\"\\\";s:13:\\\"object-prefix\\\";s:19:\\\"wp-content/uploads/\\\";s:10:\\\"copy-to-s3\\\";s:1:\\\"1\\\";s:13:\\\"serve-from-s3\\\";s:1:\\\"1\\\";s:17:\\\"remove-local-file\\\";s:1:\\\"0\\\";s:3:\\\"ssl\\\";s:7:\\\"request\\\";s:12:\\\"hidpi-images\\\";s:1:\\\"0\\\";s:17:\\\"object-versioning\\\";s:1:\\\"0\\\";s:21:\\\"use-yearmonth-folders\\\";s:1:\\\"1\\\";s:20:\\\"enable-object-prefix\\\";s:1:\\\"1\\\";}', 'yes');\" \n" 
       ] 
      mode: "000500" 
      owner: "root" 
      group: "root" 

     commands: 
     01_mv: 
      command: "mv * ../" 
      cwd: "/var/www/html/wordpress" 
     02_config: 
      command: "/root/config.sh" 
      cwd: "/var/www/html" 

     services: 
     sysvinit: 
      httpd: 
      enabled: "true" 
      ensureRunning: "true" 

Properties: 
    ImageId: {"Fn::FindInMap": ["EC2RegionMap", {"Ref": "AWS::Region"}, "AmazonLinuxAMIHVMEBSBacked64bit"]} 
    InstanceType: {"Ref": "WebServerInstanceType"} 
    SecurityGroups: [{"Ref": "WebServerSecurityGroup"}] 
    KeyName: {"Ref": "WebServerKeyName"} 
    AssociatePublicIpAddress: "true" 
    UserData: 
    "Fn::Base64": 
     "Fn::Join": 
     - "" 
     - [ 
      "#!/bin/bash -ex\n", 
      "yum update -y aws-cfn-bootstrap\n", 
      "/opt/aws/bin/cfn-init -v --stack ", {"Ref": "AWS::StackName"}, " --resource LaunchConfiguration --region ", {"Ref": "AWS::Region"}, "\n", 
      "/opt/aws/bin/cfn-signal -e $? --stack ", {"Ref": "AWS::StackName"}, " --resource AutoScalingGroup --region ", {"Ref": "AWS::Region"}, "\n" 
      ] 
    InstanceMonitoring: "true" 

AutoScalingGroup: 
Type: "AWS::AutoScaling::AutoScalingGroup" 
Properties: 
    LoadBalancerNames: [{"Ref": "LoadBalancer"}] 
    LaunchConfigurationName: {"Ref": "LaunchConfiguration"} 
    MinSize: "1" 
    MaxSize: "2" 
    DesiredCapacity: "1" 
    Cooldown: "300" 
    HealthCheckGracePeriod: "300" 
    HealthCheckType: "ELB" 
    VPCZoneIdentifier: [{"Ref": "SubnetA"}, {"Ref": "SubnetB"}] 
    Tags: 
    - PropagateAtLaunch: "true" 
     Value: "dev-instance-wordpress" 
     Key: "Name" 

スクリプトは、今私は、自動スケーリングによって作成されるインスタンスへの弾性IPを添付したいです。 スタックを作成するときに弾力性のあるIPを接続するにはどうすればよいですか?

答えて

2

あなたの質問は自動スケーリンググループのデザインを破壊します。 ASGはダイナミックなインスタンスのためのものであり、弾性IPはライフサイクルが長いもののものです。

つまり、テンプレートを編集し、[パブリックIPアドレスの関連付け]をtrueに追加する必要があります。

http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-launchconfig.html#cfn-as-launchconfig-blockdevicemappings

+0

「associate public ip:true」を追加しました。 あなたのansによれば、自動拡張されたインスタンスに弾力性のあるipを付けるのは無駄ですか? –

+1

私は質問であなたの質問に答えます。なぜあなたはASGを使用していますか?なぜインスタンスではないのですか? - 複数のインスタンス同じ目的 2.交換サービス提供 - あなたはそれら二つを考えるならば、他のはまだ、その目的 にサービスを提供している間、オンラインで更新インスタンスをもたらす能力を 1.スケーリング: ASGsは、主に次の2つの理由であります目的のために、単一の弾性IPは他の問題をもたらすでしょう。 これまで知っていたASGが必要な場合は、ASGの前にElastic Load Balancerを配置し、オプションでRoute53レコードをASGを指すELBに接続することをお勧めします。 –

+0

それは論理的に思える..ありがとう –

関連する問題