HashiCorp TerraformでRedis Enterprise Cloud Anywhereをプロビジョニング・管理する方法
本日、HashiCorp Terraform向けのRedis Enterprise Cloudプロバイダーの提供開始をお知らせいたします。開発チームがCI/CD(継続的インテグレーション/継続的デリバリー)をはじめとするDevOpsの原則をますます採用する中、インフラストラクチャをコードとして管理する能力(IaC)は、あらゆるクラウドサービスにとって必須機能となりつつあります。Infrastructure as Code分野をリードするツールがHashiCorp Terraformであり、プロバイダーとモジュールによるクラウドインフラ自動化エコシステムを通じて主要なクラウドプロバイダーやサービスに対応し、あらゆるクラウド、インフラ、サービスのプロビジョニング、コンプライアンス、管理を実現します。
Terraformとは?
ご存じない方のために簡単に説明すると、Terraformは、コードですべてを管理しながら、インフラストラクチャを安全かつ効率的に構築・変更・バージョン管理するためのツールです。設定ファイルを使用して、アプリケーションの実行に必要なコンポーネントを記述します。Terraformは、ベアメタル、仮想マシン、クラウドインスタンスなど、ほぼすべてのインフラコンポーネントや、多くの人気の高いIaaS(Infrastructure-as-a-Service)サービスを管理できます。アプリケーションスタック内の各コンポーネントは、Terraformでは「リソース」として表現されます。そしてTerraformプロバイダーは、対象リソースのAPIとのやり取りを理解し、そのリソースの機能を外部に公開する役割を担います。
今回発表する内容とは?
この高まる需要に応えるため、RedisはRedis Enterprise Cloud向けのTerraformプロバイダーを開発しました。HashiCorp Terraform Redis Enterprise Cloudプロバイダーにより、お客様はRedis Enterprise Cloudのサブスクリプション、データベース、ネットワークピアリングを、任意のクラウドプロバイダー上でコードとして簡単にデプロイ・管理できるようになります。
クイックスタート
Redis Enterprise CloudのTerraformプロバイダーの動作と機能をご紹介するため、2つのデータベースを持つサブスクリプションを作成してみましょう。うち1つはRedisJSONモジュールを使用します。
前提条件:
- ローカル環境にTerraformがインストールされていること
- Redis Enterprise Cloudアカウントを持っていること
- Redis Enterprise Cloudアカウントでプログラマティックアクセスが有効になっていること
まず、Redis Enterprise CloudのAPIキーを環境変数として保存しましょう:
$ export REDISCLOUD_ACCESS_KEY=<あなたのAPIアクセスキー>
$ export REDISCLOUD_SECRET_KEY=<あなたのAPIシークレットキー>
次に、新しいフォルダを作成し、以下のTerraform HCLファイルを配置します。ファイル名はrediscloud-tf-example.tfとしましょう:
terraform {
required_providers {
rediscloud = {
source = "Redis/rediscloud"
version = "0.2.0"
}
}
}
# クレジットカード情報を指定
data "rediscloud_payment_method" "card" {
card_type = "Visa"
last_four_numbers = "1234"
}
# データベース用のランダムパスワードを生成
resource "random_password" "passwords" {
count = 2
length = 20
upper = true
lower = true
number = true
special = false
}
resource "rediscloud_subscription" "example" {
name = "Demo"
payment_method_id = data.rediscloud_payment_method.card.id
memory_storage = "ram"
cloud_provider {
# AWS上でRedisリソースを実行
provider = "AWS"
cloud_account_id = 1
region {
region = "eu-west-1"
networking_deployment_cidr = "10.0.0.0/24"
preferred_availability_zones = ["eu-west-1a"]
}
}
database {
name = "redis-db"
protocol = "redis"
memory_limit_in_gb = 1
replication = true
data_persistence = "none"
throughput_measurement_by = "number-of-shards"
throughput_measurement_value = 2
password = random_password.passwords[0].result
}
database {
name = "db-json"
protocol = "redis"
memory_limit_in_gb = 1
replication = true
data_persistence = "aof-every-1-second"
module {
name = "RedisJSON"
}
throughput_measurement_by = "operations-per-second"
throughput_measurement_value = 10000
password = random_password.passwords[1].result
}
}
次に、以下のコマンドを実行してTerraform環境を初期化します:
$ terraform init
結果は以下のようになります:
... Terraform has been successfully initialized! You may now begin working with Terraform. Try running "terraform plan" to see any changes that are required for your infrastructure. All Terraform commands should now work. ...
Terraformの初期化が正常に完了したら、以下のコマンドを実行して実行計画(プラン)を作成します:
$ terraform plan
出力は次のようなものになります:
... Plan: 1 to add, 0 to change, 0 to destroy. ...
それでは、Terraformに魔法をかけてもらい、データベースをプロビジョニングしましょう:
$ terraform apply
terraform applyコマンドの完了には数分かかる場合があります。完了すると、次のような結果が出力されます:
… rediscloud_subscription.example: Creation complete after 8m16s [id=103873] Apply complete! Resources: 1 added, 0 changed, 0 destroyed. ...
ご覧のとおり、2つの新しいデータベースがプロビジョニングされました。あとはデータベースのエンドポイントを取得してアプリケーションに組み込むだけです。さらに、Redisアプリケーション開発を効率化するGUIツール「RedisInsight」を使えば、データへの接続や探索も簡単に行えます。
Redis Enterprise Cloudコンソールには、新しく作成されたサブスクリプションとデータベースが表示されます:
データベースでの検証が終わったら、以下のコマンドを実行するだけで、作成したリソースをすべて破棄(クリーンアップ)できます:
$ terraform destroy
今後について
私たちは、HashiCorp Terraform Redis Enterprise Cloudプロバイダーの機能拡張を継続的に進めていきます。プロバイダーに追加してほしいアイデアや機能のご要望、バグの発見などがありましたら、GitHubリポジトリでIssueを起票してお知らせください。pm.group@redis.com宛てにメールでご連絡いただくことも可能です。
本番環境でのユースケースについては、HashiCorpが提供するTerraformのクラウド版サービス「Terraform Cloud」の利用もおすすめします。これにより、認証情報を設定ファイルやソース管理の外にある安全な環境に保存できます。Terraform Cloudには、無料のリモートステートストレージ、カスタムワークスペース権限、バージョン管理システムとの統合、Policy as Codeといったコラボレーション機能も備わっています。terraform.io/cloudから無料でサインアップできます。
-
サーバーレスRedisとReact Nativeで実現するアプリ内アナウンス機能の作り方
モバイルアプリでは、重要なお知らせや警告、利用ガイドなどをエンドユーザーに届けたい場面がよくあります。その手段のひとつが「アプリ内アナウンス」です。本記事では、サーバーレスRedisを活用してユーザーへアナウンスを配信するモバイルアプリを実際に構築します。アプリ開発にはReact Nativeを使用し、サーバーレスRedisにはUpstashを採用して、アプリから直接接続する構成を実装します。アプリ内アナウンスとは?アプリ内アナウンスとは、重要な情報を伝えたり、ユーザーの操作について通知したり、特定の場所へ誘導したりするために、エンドユーザーへ送信されるメッセージのことです。この仕組みを使えば
-
Nuxt 3とサーバーレスRedis(Upstash)で始めるページ訪問カウント実装
Nuxt 3とサーバーレスRedis(Upstash)で始めるページ訪問カウント実装 アプリケーションの利用状況を追跡したり、リソース利用を制限したり、キャッシュからデータを取得してパフォーマンスを向上させたりする必要がある場合、Redisがその答えとなります。Redisはインメモリのキー・バリュー型データベースであり、オープンソースで「Remote Dictionary Server」の略称です。 この記事では、サーバーレスRedisサービスであるUpstashと、Vue SSRフレームワークの最新ベータ版であるNuxt 3を組み合わせた基本的なアプリケーション構築を通じて、Redisの基礎