🐿️
Momento用のTerraform providerが実現との事で触ってみました
Momento用のTerraform providerが実現
特段の理由はありませんが、以前TiDBをcdktfでという記事を書いた事がありますので、同じ要領で利用してみたいと思います。
やってみます
任意の場所でdirを作成=>cdktf init
$ mkdir cdktfMomento && cd cdktfMomento && cdktf init --template=typescript --providers=hashicorp/aws
provider add
$ cdktf provider add "Chriscbr/momento"
[2024-02-22T00:16:53.699] [INFO] default - Checking whether pre-built provider exists for the following constraints:
provider: Chriscbr/momento
version : latest
language: typescript
cdktf : 0.19.2
[2024-02-22T00:16:53.923] [INFO] default - Pre-built provider does not exist for the given constraints.
[2024-02-22T00:16:53.923] [INFO] default - Adding local provider registry.terraform.io/Chriscbr/momento with version constraint undefined to cdktf.json
Local providers have been updated. Running cdktf get to update...
Generated typescript constructs in the output directory: .gen
↓
cdk.json
{
"language": "typescript",
"app": "npx ts-node main.ts",
"projectId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"sendCrashReports": "false",
"terraformProviders": [
"Chriscbr/momento@~> 0.1"
],
"terraformModules": [],
"context": {}
}
↓
先のTiDBプロバイダー記事同様lazy-index.ts内でエラーが起きていた為、以下で解消しておきます。
$ npm i --save-dev @types/node
Token作成
Momentoコンソールからトークンを作成。今回はテストなのでSuper User Keyを作成します。
↓
コピー
main.ts
※テストの為、今回は先程貼ったリンクのTiDB記事の時にしたようにTokenの保存や利用にAWSのSecrets ManagerやTerraformVariableを使用したりせずベタ書きです。
main.ts
import { Construct } from "constructs";
import { App, TerraformStack, } from "cdktf";
import * as momento from './.gen/providers/momento';
class MyStack extends TerraformStack {
constructor(scope: Construct, id: string) {
super(scope, id);
new momento.provider.MomentoProvider(this, 'provider', {
authToken: "[先程作成したトークン]"
});
//-------------------------------------------------------//
new momento.cache.Cache(this, 'cache', {
name: "cdktfMomentoCache"
});
//-------------------------------------------------------//
}
}
const app = new App();
new MyStack(app, "cdktfMomento");
app.synth();
synth
$ cdktf synth
Generated Terraform code for the stacks: cdktfMomento
↓
synth結果(畳んでいます)
cdk.out > stacks/cdktfMomento > cdktf.json
{
"//": {
"metadata": {
"backend": "local",
"stackName": "cdktfMomento",
"version": "0.19.2"
},
"outputs": {
}
},
"provider": {
"momento": [
{
"auth_token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
]
},
"resource": {
"momento_cache": {
"cache": {
"//": {
"metadata": {
"path": "cdktfMomento/cache",
"uniqueId": "cache"
}
},
"name": "cdktfMomentoCache"
}
}
},
"terraform": {
"backend": {
"local": {
"path": "/Users/hoge/cdktfMomento/terraform.cdktfMomento.tfstate"
}
},
"required_providers": {
"momento": {
"source": "Chriscbr/momento",
"version": "0.1.1"
}
}
}
}
deploy
$ cdktf deploy
#中略
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
No outputs found.
↓
作成が確認出来ました。
destroy
$ cdktf destroy
#中略
Destroy complete! Resources: 1 destroyed.
↓
削除されました。
以上でした
有難うございました。
Discussion