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を接続するにはどうすればよいですか?
「associate public ip:true」を追加しました。 あなたのansによれば、自動拡張されたインスタンスに弾力性のあるipを付けるのは無駄ですか? –
私は質問であなたの質問に答えます。なぜあなたはASGを使用していますか?なぜインスタンスではないのですか? - 複数のインスタンス同じ目的 2.交換サービス提供 - あなたはそれら二つを考えるならば、他のはまだ、その目的 にサービスを提供している間、オンラインで更新インスタンスをもたらす能力を 1.スケーリング: ASGsは、主に次の2つの理由であります目的のために、単一の弾性IPは他の問題をもたらすでしょう。 これまで知っていたASGが必要な場合は、ASGの前にElastic Load Balancerを配置し、オプションでRoute53レコードをASGを指すELBに接続することをお勧めします。 –
それは論理的に思える..ありがとう –