codeship 自动部署 - AWS 配置

今天基本理清了CodeShipCodeDeploy的用法。

CodeDeploy部分

IAM

1.首先先创建一个用户来管理后续的操作

在IAM的用户中(USER)创建一个用户,暂时我就把它命名为codeship 。该用户是给Codeship做部署用的。

1
2
3
codeship
Access Key ID: AK**********ICQ
Secret Access Key: Ze*******crCpZt
2.在写一点基本的策略分配权限

在IAM中创建三个策略(Proliies)

EC2

  1. 创建策略
  2. 创建您自己的策略
  3. 修改 策略名称 ec2
  4. 修改 策略文档 表示 EC2可以查看和读取所有S3的权限
1
2
3
4
5
6
7
8
9
10
11
12
13
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:Get*",
"s3:List*"
],
"Effect": "Allow",
"Resource": "*"
}
]
}

Codedeploy

  1. 创建策略
  2. 创建您自己的策略
  3. 修改 策略名称 codedeploy
  4. 修改 策略文档 表示 EC2有autoscaling 的权限
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"autoscaling:PutLifecycleHook",
"autoscaling:DeleteLifecycleHook",
"autoscaling:RecordLifecycleActionHeartbeat",
"autoscaling:CompleteLifecycleAction",
"autoscaling:DescribeAutoscalingGroups",
"autoscaling:PutInstanceInStandby",
"autoscaling:PutInstanceInService",
"ec2:Describe*"
],
"Effect": "Allow",
"Resource": "*"
}
]
}

S3

  1. 创建策略
  2. 创建您自己的策略
  3. 修改 策略名称 s3
  4. 修改 策略文档 表示 用户 可以上传文件到YOUR_S3_BUCKET_NAME/*的权限,bucketname/folder自行替换
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": [
"arn:aws:s3::: YOUR_S3_BUCKET_NAME/*"
]
}
]
}

deploy

  1. 创建策略
  2. 创建您自己的策略
  3. 修改 策略名称 deploy
  4. 修改 策略文档 表示 用户部署的权限ec2的权限, 自行替换YOUR_AWS_REGION,YOUR_AWS_ACCOUNT_ID,CODE_DEPLOY_APPLICATION_NAME
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"codedeploy:RegisterApplicationRevision",
"codedeploy:GetApplicationRevision"
],
"Resource": [
"arn:aws:codedeploy:YOUR_AWS_REGION:YOUR_AWS_ACCOUNT_ID:application:CODE_DEPLOY_APPLICATION_NAME"
]
},
{
"Effect": "Allow",
"Action": [
"codedeploy:CreateDeployment",
"codedeploy:GetDeployment"
],
"Resource": [
"arn:aws:codedeploy:YOUR_AWS_REGION:YOUR_AWS_ACCOUNT_ID:deploymentgroup:CODE_DEPLOY_APPLICATION_NAME/*"
]
},
{
"Effect": "Allow",
"Action": [
"codedeploy:GetDeploymentConfig"
],
"Resource": [
"arn:aws:codedeploy:YOUR_AWS_REGION:YOUR_AWS_ACCOUNT_ID:deploymentconfig:CodeDeployDefault.OneAtATime",
"arn:aws:codedeploy:YOUR_AWS_REGION:YOUR_AWS_ACCOUNT_ID:deploymentconfig:CodeDeployDefault.HalfAtATime",
"arn:aws:codedeploy:YOUR_AWS_REGION:YOUR_AWS_ACCOUNT_ID:deploymentconfig:CodeDeployDefault.AllAtOnce"
]
}
]
}

3.新建角色

创建不同的角色(Role)并,给他们分配不同的策略

ec2

  1. 新建角色
  2. 角色名称 ec2
  3. 选择角色类型 Amazon EC2
  4. 附加策略 ec2

codeploy

  1. 新建角色
  2. 角色名称 codeploy
  3. 选择角色类型 Amazon EC2
  4. 附加策略 codeploy
4.分配策略给用户
  1. 我们回到之前创建的用户codeship
  2. 点击权限,附加次策略
  3. 勾选策略s3,deploy 表示赋予用户s3deploy的权限

S3

我们需要新建一个(储存桶)来暂时放置部署的代码

  1. 新建储存桶 YOUR_S3_BUCKET_NAME
  2. 可以在新建一个 文件夹来放置 代码

EC2

接下来我们创建一个实例

  1. 创建实例
  2. 选择操作系统 Amazon Linux AMI
  3. 选择一个实例类型 通用型
  4. 配置实例详细信息
  5. IAM角色选择ec2
  6. 标签
  7. 启动

Codedeploy

我们还需要在创建一个(codedeploy)

  1. 创建新的应用程序
  2. 应用程序名称 和 部署组名称
  3. 选择之前创建的EC2
  4. 服务角色 ARN 选择之前创建的codeploy

现在 AWS 上的配置基本完成,后面还需要继续配置服务器。

The Why·Liam·Blog by WhyLiam is licensed under a Creative Commons BY-NC-ND 4.0 International License.

WhyLiam创作并维护的Why·Liam·Blog采用创作共用保留署名-非商业-禁止演绎4.0国际许可证

本文首发于Why·Liam·Blog (https://blog.naaln.com),版权所有,侵权必究。

本文永久链接:https://blog.naaln.com/2016/05/codeship-automatic-deployment-aws-configuration/