1
1
terraform {
2
2
required_providers {
3
- aws = {
4
- source = " hashicorp/aws"
5
- version = " 5.50.0"
6
- }
7
-
8
3
dfcloud = {
9
- source = " github.com/dfcloud/terraform-provider-dfcloud"
4
+ source = " dragonflydb/dfcloud"
5
+ version = " 0.0.5"
10
6
}
11
7
}
12
8
}
13
9
14
- provider "aws" {
15
- }
16
-
17
10
provider "dfcloud" {
18
11
}
19
12
20
- data "aws_caller_identity" "current" {}
21
-
22
- # client VPC
23
- resource "aws_vpc" "client" {
24
- cidr_block = " 10.0.0.0/16"
25
-
26
- tags = {
27
- Name = " client"
28
- }
29
- }
30
-
31
13
# private network
32
14
resource "dfcloud_network" "network" {
33
- name = " prod- network"
15
+ name = " network"
34
16
location = {
35
17
region = " us-east-1"
36
18
provider = " aws"
@@ -41,7 +23,7 @@ resource "dfcloud_network" "network" {
41
23
resource "dfcloud_connection" "connection" {
42
24
depends_on = [aws_vpc . client , dfcloud_network . network ]
43
25
44
- name = " frontend- connection"
26
+ name = " connection"
45
27
peer = {
46
28
account_id = data.aws_caller_identity.current.account_id
47
29
region = " us-east-1"
@@ -53,22 +35,72 @@ resource "dfcloud_connection" "connection" {
53
35
resource "dfcloud_datastore" "cache" {
54
36
depends_on = [dfcloud_connection . connection ]
55
37
56
- name = " prod- cache"
38
+ name = " cache"
57
39
location = {
58
40
region = " us-east-1"
59
41
provider = " aws"
60
42
}
61
43
network_id = dfcloud_network. network . id
62
44
tier = {
63
- max_memory_bytes = 3000000000
45
+ max_memory_bytes = 6000000000
64
46
performance_tier = " dev"
65
47
replicas = 1
66
48
}
67
49
}
68
50
51
+ # accept the peering connection
69
52
resource "aws_vpc_peering_connection_accepter" "accepter" {
70
53
depends_on = [dfcloud_connection . connection ]
71
54
72
55
vpc_peering_connection_id = dfcloud_connection. connection . peer_connection_id
73
56
auto_accept = true
74
57
}
58
+
59
+ # add the required route to the client VPC
60
+ resource "aws_route" "route" {
61
+ depends_on = [aws_vpc_peering_connection_accepter . accepter ]
62
+
63
+ route_table_id = aws_route_table. route-public . id
64
+ destination_cidr_block = dfcloud_network. network . cidr_block
65
+ vpc_peering_connection_id = dfcloud_connection. connection . peer_connection_id
66
+ }
67
+
68
+
69
+ resource "aws_route_table_association" "private_1" {
70
+ subnet_id = aws_subnet. my_subnet . id
71
+ route_table_id = aws_route_table. route-public . id
72
+ }
73
+
74
+
75
+ # now allow in the security group
76
+ resource "aws_security_group" "allow_dfcloud" {
77
+ depends_on = [aws_vpc . client ]
78
+
79
+ vpc_id = aws_vpc. client . id
80
+
81
+ egress {
82
+ from_port = 6379
83
+ to_port = 6379
84
+ protocol = " tcp"
85
+ cidr_blocks = [dfcloud_network . network . cidr_block ]
86
+ }
87
+ ingress {
88
+ from_port = 6379
89
+ to_port = 6379
90
+ protocol = " tcp"
91
+ cidr_blocks = [dfcloud_network . network . cidr_block ]
92
+ }
93
+ }
94
+
95
+ output "redis-endpoint" {
96
+ sensitive = true
97
+ value = " redis://default:${ dfcloud_datastore . cache . password } @${ dfcloud_datastore . cache . addr } "
98
+ }
99
+
100
+ output "instance-ip" {
101
+ value = aws_instance. vm . public_ip
102
+ }
103
+
104
+ output "instance-id" {
105
+ value = aws_instance. vm . id
106
+ }
0 commit comments