2016-01-25 11 views
0

Я создал все, что необходимо для успешного развертывания. Я попытался выполнить развертывание без настройки агента CodeDeploy в экземпляре Amazon, а развертывание [явно] не выполнено. После настройки, однако, преуспел. Итак, мой вопрос: должен ли я настраивать каждый экземпляр, который я использую вручную? Что делать, если у меня есть 100 экземпляров в группе развертывания? Должен ли я создать AMI с уже настроенным агентом агента CodeDeploy?Настройка экземпляра Amazon Linux для CodeDeploy с учетными данными пользователя IAM

EDIT

Я наблюдал за этим: https://www.youtube.com/watch?v=qZa5JXmsWZs

с этим: https://github.com/andrewpuch/code_deploy_example

и прочитать: http://blogs.aws.amazon.com/application-management/post/Tx33XKAKURCCW83/Automatically-Deploy-from-GitHub-Using-AWS-CodeDeploy

Я просто не могу понять, почему я должен настроить с IAM копирует экземпляр. Разве он не должен брать кредиты от той роли, которую я запустил? Я не эксперт в роли и политике aws, но из документации на компакт-диске это то, что я понял. Есть ли способ предоставить пользователю IAM доступ к экземпляру, поэтому мне не придется настраивать CD-агент?

EDIT 2

Я думаю, что этот пост рода ответов: http://adndevblog.typepad.com/cloud_and_mobile/2015/04/practice-of-devops-with-aws-codedeploy-part-1.html

But as you can see, I launched multiple instances but I only installed CodeDeploy agent on one instance, what about others? Do I have to repeat myself and login to them and install them separately? It is OK since I just have 2 or 3. But what if I have handers or even thousand of instances? Actually there are different solutions for this. One of them is, I setup all environment on one instances and create an AMI from it. When I launch my working instance, I will create instance from the one I’ve already configured instead of the AWS default ones. Some other solutions are available

+1

Вы утверждаете, что назначение роли IAM экземпляру EC2 по какой-то причине не работало? –

+0

@Rodrigo M: Я думаю, что ошибаюсь aws-cli с CD-агентом. Очень жаль путаницы. Я отредактирую свой вопрос. –

+0

@Mark B: Если присвоение роли IAM экземпляру EC2 означает, что мне не нужно будет настраивать агент CodeDeploy, тогда да. Насколько я понимаю, я создал две роли, но я смущен их использованием и необходимостью. –

ответ

1

Каждый экземпляр требует только установки агента CodeDeploy на нем. Он не требует установки AWS CLI. См. AWS CodeDeploy Agent Operations для деталей установки и эксплуатации.

Вы должны создать профиль/роль экземпляра в IAM, который предоставит любому экземпляру правильные разрешения для принятия развертывания кода через службу CodeDeploy.

Создайте роль ApplicationServer. Для этой роли добавьте следующую политику. Это предполагает, что вы используете S3 для изменений:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "s3:Get*", 
       "s3:List*" 
      ], 
      "Resource": [ 
       "arn:aws:s3:::codedeploy-example-com/*" 
      ] 
     }, 
     { 
      "Sid": "Stmt1414002531000", 
      "Effect": "Allow", 
      "Action": [ 
       "cloudwatch:PutMetricData" 
      ], 
      "Resource": [ 
       "*" 
      ] 
     }, 
     { 
      "Sid": "Stmt1414002720000", 
      "Effect": "Allow", 
      "Action": [ 
       "logs:CreateLogGroup", 
       "logs:CreateLogStream", 
       "logs:DescribeLogGroups", 
       "logs:DescribeLogStreams", 
       "logs:PutLogEvents" 
      ], 
      "Resource": [ 
       "*" 
      ] 
     } 
    ] 
} 

К вашим конкретным вопросам:

Итак, мой вопрос, я должен настроить каждый экземпляр, который я использую вручную?

Что делать, если у меня есть 100 экземпляров в группе развертывания? Должен ли я создать AMI с уже настроенным инструментом aws-cli?

Настройте AMI с помощью базовых инструментов или используйте CloudFormation или марионетку для управления установкой программного обеспечения на данном экземпляре по мере необходимости. Снова CLI AWS не требуется для CodeDeploy. Требуется только самая последняя версия агента CodeDeploy.