Terraform: AWS Codepipeline несколько источников для кодирования

#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. Ронан позволил мне проверить это и посмотреть, как я могу это сделать. Я свяжусь с вами по поводу прогресса. спасибо вам за это.