2016-12-21 2 views
1

구름 형성 템플릿에서 opsworks 스택, 레이어, 인스턴스 및 애플리케이션을 만듭니다. 이 템플릿은 조리법 및 스크립트의 요리사 요리 책으로 인스턴스를 설정하고 구성합니다. 스택 내부의 배포를 수동으로 클릭하지 않고 템플릿에서 응용 프로그램을 자동으로 배포하려면 어떻게합니까? 배포 후 요리 책에서 정의 된 Deloy 조리법이 실행되고있다 : enter image description here클라우드 정보를 사용하여 opsworks 응용 프로그램을 배포하는 방법은 무엇입니까?

어떤 생각 :

"MyLayer": { 
    "Type": "AWS::OpsWorks::Layer", 
    "DependsOn" : "OpsWorksServiceRole", 
    "Properties": { 
    "AutoAssignElasticIps" : false, 
    "AutoAssignPublicIps" : true, 
    "CustomRecipes" : { 
     "Setup"  : ["cassandra::setup","awscli::setup","settings::setup"], 
     "Deploy": ["imports::deploy"] 
    }, 
    "CustomSecurityGroupIds" : { "Ref" : "SecurityGroupIds" }, 
    "EnableAutoHealing" : true, 
    "InstallUpdatesOnBoot": false, 
    "LifecycleEventConfiguration": { 
     "ShutdownEventConfiguration": { 
     "DelayUntilElbConnectionsDrained": false, 
     "ExecutionTimeout": 120 } 
    }, 
    "Name": "script-node", 
    "Shortname" : "node", 
    "StackId": { "Ref": "MyStack" }, 
    "Type": "custom", 
    "UseEbsOptimizedInstances": true, 
    "VolumeConfigurations": [ { 
     "Iops": 10000, 
     "MountPoint": "/dev/sda1", 
     "NumberOfDisks": 1, 
     "Size": 20, 
     "VolumeType": "gp2" 
    }] 
    } 
} 

응용 프로그램은 다음과 같습니다? 감사합니다.

답변

0

CreateDeployment API 호출은 일회성 이벤트를 생성 OpsWorks 스택 내에서 Deploy 작업을 실행합니다. AWS를 통해

  • 는 예를 들어 CreateDeployment를 (호출하는 Custom Resource 쓰기 : 어떤 공식 CloudFormation 자원을 직접 매핑 생각하지 않지만, 여기에 CloudFormation 템플릿의 컨텍스트 내에서 호출하는 방법에 대한 몇 가지 아이디어가 있습니다 Node.js 용 SDK)를 만듭니다.
  • 배포 스테이지의 일부로 OpsWorks 응용 프로그램을 배포하도록 구성된 AWS::CodePipeline::Pipeline 리소스를 템플릿에 추가하십시오. 이 통합에 대한 문서는 Using AWS CodePipeline with AWS OpsWorks Stacks을 참조하십시오. (추가 서비스 + 복잡성 계층이긴하지만, 필자는 CodePipeline이 응용 프로그램 스택의 배포 작업 모델링을위한 더 나은 추상 계층이라고 생각합니다.)
0

나는 이것을 조리법 내에서 할 수 있다고 생각한다. 따라서 요리법에는 앱 이름을 확인하는 기능이 있으며, 앱 이름이있는 경우 배포를 진행합니다.

예를 들어 당신의 배포 조리법은 다음과 같이 보일 것이다 :

if validator(node[:app][:name]) == true 
    do whatever 
    end 

을이 검증 기능은 요리사 라이브러리에 상주 할 수 있습니다 :

def validator(app_name) 
    app = search("aws_opsworks_app", "name:#{app_name}").first 
    if app[:deploy] == true 
    Chef::Log.warn("PROCEEDING: Deploy initiated for #{app[:name]}") 
    end 
end 
+1

대단히 고마워요! 설명서를 제공해 주시겠습니까? @ Manish-joshi – JavaQueen

+0

위의 예제에서 나는 opsworks 데이터 가방을 사용하고 있으며 필요한 문서는 http://docs.aws.amazon.com/opsworks/latest/userguide/data-bag-json-app.html에서 찾을 수 있습니다. @Cloudgls –

관련 문제