#terraform #aws-codepipeline #aws-codecommit
Вопрос:
Я отдаляюсь от Github.com и для кодирования я уже много лет использую модульный подход terraforms для импорта репозиториев GitHub в качестве модулей. Это говорит о том, что Кодовое обязательство очень отличается по своей природе. Я видел, где люди используют SSH для локального клонирования репозиториев, но я также заметил, что codepipeline может использовать несколько источников. Мне нужен способ добавить несколько репозиториев в свой конвейер, чтобы я мог воспроизвести модульный подход github, предлагаемый terraform. Я хочу, чтобы этот код локально выполнялся модульным способом.
Я погуглил в поисках примера, который показывает мне, как использовать несколько ресурсов codecommit в моем конвейере, и я не могу найти ничего, что бы четко описывало, как использовать несколько ресурсов в terraform. Кто-нибудь понял это или у кого-нибудь есть примеры, на которые они могут мне указать?
Комментарии:
1. docs.aws.amazon.com/codebuild/latest/userguide/… — довольно легко найти в Google. CodePipeline ориентирован на развертывание с использованием собственных конструкций AWS, поэтому меня не удивляет, что в нем мало информации об использовании с Terraform. По сути, вы будете использовать проекты сборки кода для вызова Terraform, поэтому вам лучше всего сосредоточиться на том, как использовать проекты сборки кода с CodePipeline ( с несколькими источниками ввода, как в приведенном примере), понимая, что вам решать, что вы делаете в этих проектах сборки кода
2. Обратите внимание на то, как используются несколько рабочих каталогов ввода, они не являются вложенными, например $CODEBUILD_SRC_DIR и $CODEBUILD_SRC_DIR_source2
3. @ronan спасибо за ответ. Я нашел эту ссылку ранее и работал с ресурсом terraform, чтобы создать второй источник. Действительно ценю, что руководители каталогов рассмотрят это.
4. Не беспокойтесь. Может быть, я неправильно понял? Используете ли вы Terraform для создания трубопроводов или трубопроводов для запуска Terrraform — или и то, и другое?
5. Отличный комментарий, я сделал и то, и другое, я создал terraform для создания конвейера и проектов сборки. Эта часть хорошо работает, если вы хотите ее увидеть, дайте мне знать. Часть, с которой я борюсь, заключается в том, чтобы заставить терраформу создать второй ресурс, который в данном случае является еще одним репо с кодовой записью в исходном коде. Дайте мне знать, если это прояснит для вас ситуацию.
Ответ №1:
# _____ ____ _ _ _____ _____ ______
# / ____|/ __ | | | | __ / ____| ____|
# | (___ | | | | | | | |__) | | | |__
# ___ | | | | | | | _ /| | | __|
# ____) | |__| | |__| | | | |____| |____
# |_____/ ____/ ____/|_| _\_____|______|
Stages:
- Name: Source
Actions:
- ActionTypeId:
Category: Source
Owner: AWS
Provider: CodeStarSourceConnection
Version: "1"
Configuration:
ConnectionArn: !Ref CodeStarConnectionArn
FullRepositoryId: !Ref BitBucketRepo
BranchName: !Ref BitBucketRepoReleaseBranch
OutputArtifactFormat: "CODE_ZIP"
DetectChanges: true
Name: SourceCode
OutputArtifacts:
- Name: !Sub ${SourceArtifactName}
Namespace: SourceVariables1
RunOrder: 1
- ActionTypeId:
Category: Source
Owner: AWS
Provider: CodeStarSourceConnection
Version: "1"
Configuration:
ConnectionArn: !Ref CodeStarConnectionArn
FullRepositoryId: !Ref PipelineBitBucketRepo
BranchName: !Ref PipelineBitBucketRepoReleaseBranch
OutputArtifactFormat: "CODE_ZIP"
DetectChanges: true
Name: PipelineDefinition
OutputArtifacts:
- Name: !Sub ${PipelineCodeArtifactName}
Namespace: SourceVariables2
RunOrder: 1
# _____ ______ _ ______ __ __ _ _ _______ _______ ______
# / ____| ____| | | ____| | / | | | |__ __|/|__ __| ____|
# | (___ | |__ | | | |__ | / | | | | | | / | | | |__
# ___ | __| | | | __| | |/| | | | | | | / / | | | __|
# ____) | |____| |____| | | | | | |__| | | |/ ____ | | | |____
# |_____/|______|______|_| |_| |_|____/ |_/_/ __| |______|
- !If
- ShouldUpatePipelineStackOnChange
- Name: UpdatePipeline
Actions:
- Name: CreateChangeSet
ActionTypeId:
Category: Deploy
Owner: AWS
Provider: CloudFormation
Version: "1"
Configuration:
ActionMode: CHANGE_SET_REPLACE
StackName: !Ref AWS::StackName
ChangeSetName: !Sub ${AWS::StackName}-ChangeSet
TemplatePath: !Sub ${PipelineCodeArtifactName}::${PipelineTemplateName}
Capabilities: CAPABILITY_NAMED_IAM
RoleArn: !GetAtt PipelineStackCloudFormationExecutionRole.Arn
InputArtifacts:
- Name: !Sub ${PipelineCodeArtifactName}
RunOrder: 1
- Name: ExecuteChangeSet
ActionTypeId:
Category: Deploy
Owner: AWS
Provider: CloudFormation
Version: "1"
Configuration:
ActionMode: CHANGE_SET_EXECUTE
StackName: !Ref AWS::StackName
ChangeSetName: !Sub ${AWS::StackName}-ChangeSet
RoleArn: !GetAtt PipelineStackCloudFormationExecutionRole.Arn
OutputArtifacts:
- Name: !Sub ${AWS::StackName}ChangeSet
RunOrder: 2
- !Ref AWS::NoValue
Комментарии:
1. Ронан позволил мне проверить это и посмотреть, как я могу это сделать. Я свяжусь с вами по поводу прогресса. спасибо вам за это.