ããã«ã¡ã¯ãæè¡ï¼èª²ã®å¤ç°ã§ãã
å¼ãç¶ããAWS CodeDeploy(以ä¸ãCodeDeploy)ã¨ä»²è¯ããªãããã¨æãã¾ãã
ååã¯ãCodeDeployã®æ¦è¦ã¨ãSampleDeploymentã®ãããã¤ãè¡ãã¾ãããã
ä»åã¯æ¢åã®EC2ã«å¯¾ãã¦ã¢ããªã±ã¼ã·ã§ã³ã®ãããã¤ãè¡ãCustomDeploymentã«è§¦ãã¾ãã
ããã«ä½µãã¦ãå¿
è¦ãªç¥èãæè¡ã«ã¤ãã¦è¿½ã£ã¦ãããã°ã¨èãã¦ããã¾ãã
å°ãéå»è¨äºã¯ä»¥ä¸ã§ãã
- ãCodeï¼å å¼ã·ãªã¼ãºãCodeCommit « ãµã¼ãã¼ã¯ã¼ã¯ã¹ ã¨ã³ã¸ãã¢ããã°
- ãCodeï¼å å¼ã·ãªã¼ãºãCodeDeploy~SampleDeploymentç·¨~ « ãµã¼ãã¼ã¯ã¼ã¯ã¹ ã¨ã³ã¸ãã¢ããã°
以ä¸ãç®æ¬¡ã§ãã
- CodeDeploy Agentã«ã¤ãã¦
- AppSpecãã¡ã¤ã«ã«ã¤ãã¦
- CustomDeploymentã®å®è·µ
- ã¾ã¨ã
CodeDeploy Agentã«ã¤ãã¦
CodeDeployã使ã£ã¦ã¢ããªã±ã¼ã·ã§ã³ããããã¤ããããã«ã¯ãã¨ã¼ã¸ã§ã³ããå¿
è¦ã«ãªãã¾ãã
ã¨ã¼ã¸ã§ã³ãã«å¯¾å¿ãã¦ããOSã¯æ¬¡ã®éãã§ãã
EC2
- Amazon Linux 2014.09.1, 2015.03, 2016.03.0, 2016.03.1
- Ubuntu Server 14.04 LTS
- Windows Server 2008 R2 and Windows Server 2012R2
- Red Hat Enterprise Linux 7.x
ãªã³ãã¬ãã¹
- Ubuntu Server 14.04 LTS
- Windows Server 2008 R2 and Windows Server 2012 R2
- Red Hat Enterprise Linux (RHEL) 7.x
æ±äº¬ãªã¼ã¸ã§ã³ã®Amazon Linuxã¤ã³ã¹ã¿ã³ã¹ã«ã¯ã以ä¸ã®ã³ãã³ããå®è¡ãããã¨ã§ã¨ã¼ã¸ã§ã³ããå°å
¥ã§ãã¾ããã
å
¬å¼ã§ãã¡ãã«CodeDeply Agentå°å
¥ã®æ¹æ³ãè¨è¼ããã¦ããã¾ãã
$ sudo yum update $ wget https://aws-codedeploy-ap-northeast-1.s3.amazonaws.com/latest/install $ cd /home/ec2-user $ chmod +x ./install $ sudo ./install auto
AppSpecãã¡ã¤ã«ã«ã¤ãã¦
AppSpec ãã¡ã¤ã«ã¨ã¯ãCodeDeployãã³ãã¼ãããã¡ã¤ã«åã³å®è¡ããã¹ã¯ãªãããæå®ãããYAMLå½¢å¼ã®è¨å®ãã¡ã¤ã«ã§ãã
AppSpec ãã¡ã¤ã«ã¯ããã¡ã¤ã«ã»ã¯ã·ã§ã³ã¨ããã¯ã»ã¯ã·ã§ã³ã®2ã¤ã®ã»ã¯ã·ã§ã³ã§æ§æãããã¾ããããã¡ãã¯æ¬¡ã®ã©ã¤ããµã¤ã¯ã«ã¤ãã³ãã®èª¬æå
ã§è§¦ãã¾ãã
ã©ã¤ããµã¤ã¯ã«ã¤ãã³ã
ãããã¤ã®ã©ã¤ããµã¤ã¯ã«ã¤ãã³ãã¨ã¯ãäºãå®ç¾©ãããå¹¾ã¤ãã®æ®µéã®ãã¨ãæãã¾ãã
ããã«ããããããã¤ã®ä¸ã§ã³ã¼ããå®è¡ãããã¨ãå¯è½ã«ãªã£ã¦ããã®ã§ãããç¾å¨ãµãã¼ãããã¦ããã®ã¯ä»¥ä¸ã®ãã®ã«ãªãã¾ãã
ã¤ãã³ãå | 説æ |
ApplicationStop | ãããã¤ã®æåã©ã¤ãã«ãµã¤ã¯ã«ã¤ãã³ãã§ããªãã¸ã§ã³ã®ãã¦ã³ãã¼ãåããéå§ãã |
DownloadBundle | ã¨ã¼ã¸ã§ã³ããã¤ã³ã¹ã¿ã³ã¹ã®ä¸æçãªãã±ã¼ã·ã§ã³ã«ããªãã¸ã§ã³ãã¡ã¤ã«ãã³ãã¼ãã |
BeforeInstall | ãã¡ã¤ã«ã®æå·åãç¾å¨ã®ã¢ã¸ã¥ã¼ã«ã®ãã¼ã¸ã§ã³ã®ããã¯ã¢ããä½æçãInstallã¿ã¹ã¯åã«ä½¿ã |
Install | ã¨ã¼ã¸ã§ã³ããæçµçãªéä¿¡å ãã©ã«ãã«ãªãã¸ã§ã³ãã³ãã¼ãã |
AfterInstall | ã¢ããªã±ã¼ã·ã§ã³ã®è¨å®åã¯ãã¡ã¤ã«ã®è¨±å¯ã®å¤æ´ã«ä½¿ç¨ãã |
ApplicationStart | ApplicationStopã§åæ¢ãããµã¼ãã¹ãåèµ·åããããã«ä½¿ç¨ãã |
ValidateService | ãããã¤ãæ£å¸¸ã«å®äºãããã¨ãæ¤è¨¼ãã |
ä¾ã¨ãã¦ãSampleDeploymentã®appspec.ymlã使ã£ã¦ã©ããªå¦çãè¡ã£ã¦ããããè¦ã¦ããããã¨æãã¾ãã
version: 0.0 os: linux files: - source: /index.html destination: /var/www/html/ hooks: BeforeInstall: - location: scripts/install_dependencies timeout: 300 runas: root - location: scripts/start_server timeout: 300 runas: root ApplicationStop: - location: scripts/stop_server timeout: 300 runas: root
version
AppSpecãã¡ã¤ã«ã®ãã¼ã¸ã§ã³æå®ã®ã»ã¯ã·ã§ã³ã§ããå¿ é ã®ãã©ã¡ã¼ã¿ã¼ã«ãªãã¾ãã
os
ãããã¤ããã¤ã³ã¹ã¿ã³ã¹ã®OSããã¦ããããã»ã¯ã·ã§ã³ã§ããå¿
é ã®ãã©ã¡ã¼ã¿ã¼ã«ãªãã¾ãã
Amazon LinuxãUbuntu ServerãRHELã®å ´åã¯ãlinuxã¨æå®ãã¾ãã
Windows Serverã®å ´åã¯ãwindowsã¨æå®ãã¾ãã
files
ã©ã¤ããµã¤ã¯ã«ã¤ãã³ãã®ãInstallãã¤ãã³ãã®æã«ãã¤ã³ã¹ã¿ã³ã¹ã«ã³ãã¼ãããã¡ã¤ã«åãæå®ããã»ã¯ã·ã§ã³ã§ãã
sourceã§ã¯ããã¡ã¤ã«ã¾ãã¯ãã£ã¬ã¯ããªãã¢ããªã±ã¼ã·ã§ã³ã®ãã¡ã¤ã«ç¾¤(ãªãã¸ã§ã³)ã®ã«ã¼ããã£ã¬ã¯ããªããç¸å¯¾ãã¹ã§æå®ãã¾ãã
destinationã§ã¯ãsourceã«æå®ãããã¡ã¤ã«ã¾ãã¯ãã£ã¬ã¯ããªãå±éãããã£ã¬ã¯ããªã絶対ãã¹ã§æå®ãã¾ãã
ä¸è¨ã§ã¯ãã/var/www/htmlããã£ã¬ã¯ããªã«ãªãã¸ã§ã³ã®ãindex.htmlãããããã¤ãã¦ãã¾ãã
permissions
ä¸è¨ã®ã½ã¼ã¹å
ã«ã¯ãªãã§ãããpermissionsã»ã¯ã·ã§ã³ã§ã¯ãã¤ã³ã¹ã¿ã³ã¹ã«filesã»ã¯ã·ã§ã³ã§æå®ããã¢ããªã±ã¼ã·ã§ã³ç¾¤ã«æ¨©éãè¨å®ãã¾ãã
ãã®ã»ã¯ã·ã§ã³ã¯ãAmazon LinuxãUbuntu ServerãRHELã¤ã³ã¹ã¿ã³ã¹ã®ã¿ã§ä½¿ç¨ã§ãããªãã·ã§ã³ã§æå®ããç®æã«ãªãã¾ãã
hooks
hooksã»ã¯ã·ã§ã³ã§ã¯ãã©ã¤ããµã¤ã¯ã«ã¤ãã³ãã§å®è¡ããã¹ã¯ãªãããæå®ãã¾ãã
locationã§ã¯ããªãã¸ã§ã³å
ã«ãããå®è¡ããã¹ã¯ãªããã®ãã¹ãæå®ãã¾ãã
timeoutã§ã¯ãã¹ã¯ãªããå®è¡æã®ã¿ã¤ã ã¢ã¦ãæéãç§åä½ã§æå®ãã¾ããæå®æéãè¶
éããå ´åãå¦çã失æã¨ãã¦ä¸æããã¾ãã
runasã§ã¯ãã¹ã¯ãªããã®å®è¡ã¦ã¼ã¶ã¼ãæå®ãã¾ãããã®ãªãã·ã§ã³ã¯ãAmazon Linux ã¾ã㯠Ubuntu Server ã®ã¿æå®å¯è½ã§ãã
ä¸è¨ã®ã½ã¼ã¹ã§ã¯ãBeforeInstallã¤ãã³ãã§ãscripts/install_dependenciesãããscripts/start_serverãã®é çªã§rootã¦ã¼ã¶ã¼ã§å®è¡ãã¾ãã
ã¹ã¯ãªããå
ã§ã¯ãApahceã®ã¤ã³ã¹ãã¼ã«ã¨èµ·åãè¡ã£ã¦ãã¾ãã
ãã®å¾ãApplicationStopã¤ãã³ãã§ãscripts/stop_serverããrootã¦ã¼ã¶ã¼ã§å®è¡ãã¾ãã
ã¹ã¯ãªããå
ã§ã¯ãhttpdããã»ã¹ãããå ´åãApacheã®åæ¢ãè¡ã£ã¦ãã¾ãã
CustomDeploymentã®å®è·µ
ãããããCustom Deploymentãè¡ãã¾ãã
ä»åã®ã¢ããªã±ã¼ã·ã§ã³ã®ãããã¤ã¤ã¡ã¼ã¸ã¯æ¬¡ã®éãã§ãã
AWS CLIã§S3ãã±ããã«ã½ã¼ã¹ãã¢ãããã¼ãããEC2ã¸ã½ã¼ã¹ãã¡ã¤ã«ããã¦ã³ãã¼ããããããCodeDeployã«æ示ãã¾ãã
ï¼ã ãããã¤ç¨ã®ãã±ããã®æºå
äºåæºåã¨ãã¦ä»åã®ãããã¤ç¨ã®S3ãã±ãããä½æãã¾ãã
ä»åã¯ãæ±äº¬ãªã¼ã¸ã§ã³ã«ã20160719-codedeplybucketãã¨è¨ããã±ãããä½æãã¾ããã
ï¼ããããã¤å ã®EC2ã®ä½æ
EC2ã¯IAMãã¼ã«ã§S3ã®ãªãã¸ã§ã¯ããGetã¨Listã§ãã権éãä½æããæã«ä»ä¸ãã¦ãã ããã
ä»åã¯æ¤è¨¼ç¨éã®ããããAmazonS3FullAccessããã¼ã«ãã¢ã¿ãããã¦ãã¾ãã
ã¾ããCodeDepoy Agentãå°å
¥ãã¦ãã ãããEC2ãæ§ç¯ãã¦ããã§ãè¯ãã§ãããUserDataã¨ãã¦å°å
¥ããã®ãæã£åãæ©ãã¨æãã¾ãã
#!/bin/bash sudo yum update wget https://aws-codedeploy-ap-northeast-1.s3.amazonaws.com/latest/install chmod +x ./install sudo ./install auto
ãµã¼ãã¼ãèµ·åå¾ãCodeDeploy Agentãå°å ¥ããã¦ãããã確èªãã¾ãã
$ rpm -qa | grep codedeploy codedeploy-agent-1.0-1.998.noarch
ã¾ãããµã¼ãã¹ãèµ·åãã¦ãããã¨ãèªåèµ·åè¨å®ã®ç¢ºèªãè¡ãã¾ãã
$ sudo service codedeploy-agent status The AWS CodeDeploy agent is running as PID 2525 $ chkconfig --list codedeploy-agent codedeploy-agent 0:off 1:off 2:on 3:on 4:on 5:on 6:off
ãµã¼ãã¹èµ·åã¨ãèªåèµ·åè¨å®ãå®æ½ã§ãã¦ãããã¨ã確èªã§ãã¾ããã
ï¼ãCodeDeployã®Custom Deploymentã®å®ç¾©ãè¨å®
以ä¸ã®ããã«CodeDployã®å®ç¾©ãè¡ãã¾ããã
- ã¢ããªã±ã¼ã·ã§ã³åï¼CustomDeployment
- ãããã¤ã°ã«ã¼ãï¼CustomDeploymentGroup
- ãããã¤è¨å®ï¼CodeDeployDefault.OneAtATime
- ãããã¤å¯¾è±¡ã¤ã³ã¹ã¿ã³ã¹(1å°)ï¼Amazon Linux(Amazon Linux AMI 2016.03.3 x86_64 HVM GP2)
ã¾ããä¸è¨ã®è¨å®ã«å ããã¤ã³ã¹ã¿ã³ã¹ã«å¯¾ããã¢ã¯ã»ã¹æ¨©éãCodeDeployã«ä»ä¸ãã¦ããå¿
è¦ãããã¾ãã
ä»åã¯ã次ã®ãããªå®ç¾©ãè¡ãã¾ããã
管çããªã·ã¼ã«ã¯ããAWSCodeDeployRoleããã¢ã¿ãããã¦ãã¾ãã
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "autoscaling:CompleteLifecycleAction", "autoscaling:DeleteLifecycleHook", "autoscaling:DescribeAutoScalingGroups", "autoscaling:DescribeLifecycleHooks", "autoscaling:PutLifecycleHook", "autoscaling:RecordLifecycleActionHeartbeat", "ec2:DescribeInstances", "ec2:DescribeInstanceStatus", "tag:GetTags", "tag:GetResources", "sns:Publish" ], "Resource": "*" } ] }
ä¿¡é ¼é¢ä¿ã¨ãã¦ã次ã®å®ç¾©ãè¡ã£ã¦ãã¾ãã
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "codedeploy.ap-northeast-1.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
ï¼ãS3ã«ã¢ããªã±ã¼ã·ã§ã³ã®ãã¡ã¤ã«ãã¢ãããã¼ããã
CodeDeployã§EC2ã«ãã¦ã³ãã¼ããããã¡ã¤ã«ãS3ã«ã¢ãããã¼ããã¾ããå°ãappspec.ymlã¯ãSample Deploymentã¨åããã®ã使ç¨ãã¦ãã¾ãã
ä»åã¯ãAWS CLIã使ãã¾ããAmazon Linuxã«ã¯æ¨æºã§å°å
¥ããã¦ããã®ã§ãaws configureã§è¨å®å¾ããã®ã¾ã¾å©ç¨ãã¾ãã
以ä¸ã®ã³ãã³ããå®è¡ãããã¨ã§ãS3ã«ã¢ããªã±ã¼ã·ã§ã³ã®ãã¡ã¤ã«ãã¢ãããã¼ãã§ãã¾ãã
$ aws deploy push --application-name CustomDeployment --s3-location s3://20160719-codedeplybucket/CustomDeploymentApp.zip --source /home/ec2-user/CustomDeploymentApp/
S3ã®ãã±ããã§ã確èªãã¦ã¿ã¾ãã
S3ã«ã¢ãããã¼ããå®äºããã¨ã以ä¸ã®ãããªãããã¤ç¨ã®ã³ãã³ããåºåããã¾ãã
èªåããããã¤ããããã®ã³ãã³ãã«é©å®ä¿®æ£ãã¦ãEC2ã«ãããã¤ãã¾ãã
To deploy with this revision, run: aws deploy create-deployment --application-name CustomDeployment --s3-location bucket=20160719-codedeplybucket,key=CustomDeploymentApp.zip,bundleType=zip,eTag=f16df4045b5249a1abc5fe67df24d4ee --deployment-group-name <deployment-group-name> --deployment-config-name <deployment-config-name> --description <description>
CodeDeployã¸æ示ãæåããã¨ä»¥ä¸ã®ããã«ããdeploymentIdããçºè¡ããã¾ãã®ã§ãAWS ããã¸ã¡ã³ãã³ã³ã½ã¼ã«ä¸ã«ã¦ç¶æ³ç¢ºèªãè¡ãã¾ãã
{ "deploymentId": "d-HPU4DB22G" }
ï¼ãCustomDeploymentãå®æ½ããã¦ãããã®ç¢ºèª
AWS ããã¸ã¡ã³ãã³ã³ã½ã¼ã«ã«ã¦CodeDeploymentã®ãããã¤ç¶æ³ã確èªãã¾ãã
deploymentIdãAWS ããã¸ã¡ã³ãã³ã³ã½ã¼ã«ãã確èªããã¨ããããã¤ã®è©³ç´°ã確èªã§ãã¾ãã
ãããã®ãã¼ã¸ã®ãããã¤ã®é²è¡ç¶æ³ã確èªã§ãã¾ãã
2æç®ã®ç»åã«ãããããã«ããã¹ã¦ã®å¦çãæåãã¦ããã®ã確èªã§ãã¾ããã
ï¼ããããã¤ããã³ã³ãã³ãã«ã¢ã¯ã»ã¹ãã
ãããã¤ããã³ã³ãã³ãã«ã¢ã¯ã»ã¹ãã¦ã¿ã¾ãã
確èªç¨ã®ã³ã³ãã³ãã«ã¢ã¯ã»ã¹ãã§ãã¾ããã®ã§ã対象ã®ã¤ã³ã¹ã¿ã³ã¹ã«ãããã¤ãããã¨ã確èªã§ãã¾ããã
ã¾ã¨ã
CustomDeploymentã®å®è·µã¯ããããã§ããã§ããããã
ã¢ããªã±ã¼ã·ã§ã³ã®ã½ã¼ã¹ã³ã¼ããã¢ãããã¼ãããã°ããã¨ã¯CodeDeployã対象ã®ãµã¼ãã¼ã¸ãããã¤ãè¡ã£ã¦ããã®ã¯ä¾¿å©ã§ããã
次åã¯ãããããCode3å
å¼æå¾ã®ãµã¼ãã¹ãAWS CodePipelineã¨ä»²è¯ããªãã¾ãã