terraform을 작성하는 방법, 하지만 typescript 사용
10461 단어 terraformdevopstypescripttutorial
CDK (Cloud Development Kit) for Terraform allows developers to use familiar programming languages to define cloud infrastructure and provision it through HashiCorp Terraform.
이것을 시도해 볼까요?
완전한 개발자 경험을 얻으려면 다음이 있는지 확인하십시오typescript support installed for your IDE.
상용구 생성
터미널을 열고 install cdktf-cli를 설치해 보겠습니다.
npm install -g cdktf-cli
다음으로 프로젝트를 초기화합니다.
mkdir hello-cdktf
cd hello-cdktf
cdktf init --template="typescript" --local
두 가지 구성 질문에 답하면 프로젝트 상용구가 생성됩니다.
이제 폴더에 다음 내용이 포함된
main.ts
파일이 표시됩니다.import { Construct } from 'constructs';
import { App, TerraformStack } from 'cdktf';
class MyStack extends TerraformStack {
constructor(scope: Construct, name: string) {
super(scope, name);
// define resources here
}
}
const app = new App();
new MyStack(app, 'hello-cdktf2');
app.synth();
공급자 패키지 추가 및 여기에서 모듈 가져오기
생성이 완료되면 다음에 수행할 작업에 대한 지침을 나열하는 콘솔에 메시지가 표시됩니다. 미리 빌드된 aws 공급자를 추가합니다(원할 수 있는 모든 모듈과 유형도 제공).
npm install -a @cdktf/provider-aws
이제
@cdktf/provider-aws
및 기타와 같은 AwsProvider
에서 모듈을 가져올 수 있습니다. 우리는 AwsProvider
, LambdaFunction
및 IamRole
로 갈 것입니다. 파일 맨 위에 다음을 추가하십시오.import { AwsProvider, LambdaFunction, IamRole } from '@cdktf/provider-aws';
그런 다음 스택에 AwsProvider를 생성합니다.
new AwsProvider(this, 'aws', {
region: 'eu-west-2'
})
스택에 람다 함수 추가
람다를 생성하려면 먼저 IAM 역할을 정의해야 합니다. 지루하지만 코스 자동 완성으로 더 쉬워졌습니다. 어쨌든 기본 정책은 다음과 같습니다.
const roleForLambda = new IamRole(this, 'iam-role-for-lambda', {
name: 'iam-role-for-lambda',
assumeRolePolicy: JSON.stringify({
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Effect": "Allow"
}
]
})
})
이제 다음과 같이 스택에 람다 함수를 추가할 수 있습니다.
new LambdaFunction(this, 'hello-world', {
filename: process.cwd() + 'hello-world.zip'
functionName: 'hello-world',
handler: 'index.handler',
runtime: 'nodejs12.x',
role: roleForLambda.arn,
})
일반적으로 terraform을 실행하기 전에 별도의 단계인 람다 함수를 압축해야 합니다. 예를 들어 프로젝트에
hello-world.js
라는 파일이 있다고 가정해 보겠습니다.export const handler = async function () {
return { hello: world }
}
그런 다음 람다를 압축합니다
zip -r lambda.zip hello-world.js
.스택 배포
배포하기 전에 잊지 마세요have your aws credentials in your path.
이제 모든 준비가 완료되었으므로
cdktf deploy
를 사용하여 스택을 배포할 수 있습니다. 이 명령은 실행 계획을 표시하고 배포할 것인지 묻습니다. Y
및 Enter
키를 눌러 배포합니다.이 단계의 모든 오류는 자명해야 합니다. 이해가 되지 않으면 오류 메시지를 Google에 검색하세요. 다른 사람들도 같은 문제에 부딪혔을 가능성이 큽니다.
terraform 사용자이고 이전에
lambda_function
모듈을 사용한 적이 있다면 구성이 정확히 동일하다는 것을 알 수 있습니다.궁극적으로
cdktf synth
cdktf를 실행하면 javascript/typescript 모듈이 terraforms alternative JSON
configuration syntax로 컴파일됩니다.이는 javascript 및 typescript뿐만 아니라 모든 종류의 언어에 대한 컴파일 대상이 될 수 있기 때문에 terraform 디자인의 매우 강력한 기능입니다. 오픈 소스 커뮤니티는 자체 언어 컴파일러를 추가할 수 있습니다.
녹슬지 않는 이유는 무엇입니까? 😅
추신: 이 게시물의 원래 버전은 my website에 게시되었습니다. 이 게시물이 마음에 드셨다면 둘러보세요.
Reference
이 문제에 관하여(terraform을 작성하는 방법, 하지만 typescript 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jkrsp/how-to-write-terraform-infrastructure-code-just-using-typescript-abj텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)