我正在使用Terraform在AWS中创建Redis。但是,当我第一次执行terraform apply
命令时,它创建就没有问题。但是,如果我在TF代码下面重新运行Terraform apply
,则会破坏Redis并开始重新创建它,而是应该告诉我它已经存在,开始关注其他新添加的资源。
这是Redis的预期行为吗?
在问题中添加terraform计划:
-/+ resource "aws_elasticache_replication_group" "redis" {
apply_immediately = true
at_rest_encryption_enabled = true
auto_minor_version_upgrade = false
automatic_failover_enabled = true
+ configuration_endpoint_address = (known after apply)
engine = "redis"
engine_version = "5.0.4"
~ id = "dev-af-redis" -> (known after apply)
maintenance_window = "sun:06:00-sun:07:00"
~ member_clusters = [
- "ca-cng-dev-af-redis-001",
- "ca-cng-dev-af-redis-002",
] -> (known after apply)
node_type = "cache.t2.medium"
~ number_cache_clusters = 2 -> (known after apply)
parameter_group_name = "default.redis5.0"
port = 6379
~ primary_endpoint_address = "master.dev-af-redis.qxyj8a.euc1.cache.amazonaws.com" -> (known after apply)
replication_group_description = "Airflow Cluster"
replication_group_id = "dev-af-redis"
security_group_ids = [
"sg-094175ad3062da04d",
]
~ security_group_names = [] -> (known after apply)
- snapshot_retention_limit = 0 -> null
~ snapshot_window = "02:30-03:30" -> (known after apply)
subnet_group_name = "dev-subnet-group-airflow"
tags = {
"Application" = "project"
"BusinessUnit" = "subproject"
"Classification" = "private"
"Environment" = "development"
"Name" = "dev-airflow-redis"
"TechnicalOwner" = "ops"
"Tier" = "orchestration"
}
transit_encryption_enabled = true
+ cluster_mode {
+ num_node_groups = 1
+ replicas_per_node_group = 1 # forces replacement
}
}
Plan: 1 to add, 0 to change, 1 to destroy.
用于创建Redis的TF代码:-
resource "aws_elasticache_replication_group" "cng_redis" {
replication_group_description = "Cluster"
replication_group_id = "dev-af-redis"
engine = "redis"
engine_version = "5.0.4"
node_type = "cache.t2.medium "
port = 6379
subnet_group_name = "dev-subnet-group-airflow"
security_group_ids = ["${aws_security_group.airflow_sg.id}"]
parameter_group_name = "default.redis5.0"
at_rest_encryption_enabled = true
transit_encryption_enabled = true
maintenance_window = "sun:06:00-sun:07:00"
auto_minor_version_upgrade = false
apply_immediately = true
automatic_failover_enabled = true
cluster_mode {
num_node_groups = "1"
replicas_per_node_group = "1"
}
tags = merge(
var.common_tags,
map("Classification", "private"),
map("Name", "airflow-redis")
)
}
答案 0 :(得分:0)
这是一个解决方案(我想是“这不是bug,它是功能”;)):https://github.com/terraform-providers/terraform-provider-aws/issues/4817#issuecomment-463993424
我对其进行了测试,并且可以正常工作。
您必须添加将public void display(GLAutoDrawable drawable) {
GL2 gl = drawable.getGL().getGL2();
gl.glClear(GL2.GL_COLOR_BUFFER_BIT);
gl.glPushMatrix();
gl.glBegin(GL2.GL_LINES);
gl.glVertex2d(-250,0);
gl.glVertex2d(250,0);
gl.glVertex2d(0,250);
gl.glVertex2d(0,-250);
gl.glVertex2d(-250,250);
gl.glVertex2d(250,-250);
gl.glVertex2d(250,250);
gl.glVertex2d(-250,-250);
gl.glEnd();
int rad = 100;
drawCircle(gl,rad);
drawCircle2(gl,rad/2);
drawCircle3(gl,rad/2);
drawCircle4(gl,rad/2);
}
private void drawCircle(GL2 gl, int r) {
int x = r, y = 0, d = 5 - 4*r;
draw8Way(gl, x, y);
while (y <= x) {
if (d < 0) {
d = d + ((2 * y + 3) * 4);
y++;
} else {
d += ((-2 * x + 2 * y + 5) * 4);
x--;
y++;
}
draw8Way(gl, x, y);
}
}
void drawCircle2(GL2 gl, int r)
{
int x = r, y = 0, d = 5 - 4*r;
draw8Way2(gl, x, y,r);
while (y <= x) {
if (d < 0) {
d = d + ((2 * y + 3) * 4);
y++;
} else {
d += ((-2 * x + 2 * y + 5) * 4);
x--;
y++;
}
//System.out.println("X= "+x+" Y= "+y);
draw8Way2(gl, x, y,r);
//break;
}
}
void drawCircle3(GL2 gl, int r)
{
int x = r, y = 0, d = 5 - 4*r;
draw8Way2(gl, x, y,r);
while (y <= x) {
if (d < 0) {
d = d + ((2 * y + 3) * 4);
y++;
} else {
d += ((-2 * x + 2 * y + 5) * 4);
x--;
y++;
}
//System.out.println("X= "+x+" Y= "+y);
draw8Way2(gl, x, y,-r);
}
}
void drawCircle4(GL2 gl, int r)
{
int x = r, y = 0, d = 5 - 4*r;
draw8Way3(gl, x, y,r);
while (y <= x) {
if (d < 0) {
d = d + ((2 * y + 3) * 4);
y++;
} else {
d += ((-2 * x + 2 * y + 5) * 4);
x--;
y++;
}
//System.out.println("X= "+x+" Y= "+y);
draw8Way3(gl, x, y,r);
}
}
private void draw8Way(GL2 gl, int x, int y) {
gl.glBegin(GL2.GL_POINTS);
gl.glVertex2d(x, y);
gl.glVertex2d(y, x);
gl.glVertex2d(-x, y);
gl.glVertex2d(-y, x);
gl.glVertex2d(-x, -y);
gl.glVertex2d(-y, -x);
gl.glVertex2d(x, -y);
gl.glVertex2d(y, -x);
gl.glEnd();
}
private void draw8Way2(GL2 gl, int x, int y, int r) {
gl.glBegin(GL2.GL_POINTS);
gl.glVertex2d(x, y+r);
gl.glVertex2d(y+r, x);
gl.glVertex2d(x+r, y);
gl.glVertex2d(y, x+r);
gl.glVertex2d(-x, y+r);
gl.glVertex2d(-y+r, x);
gl.glVertex2d(-x+r, y);
gl.glVertex2d(-y, x+r);
gl.glVertex2d(-x, -y+r);
gl.glVertex2d(-y+r, -x);
gl.glVertex2d(-x+r, -y);
gl.glVertex2d(-y, -x+r);
gl.glVertex2d(x, -y+r);
gl.glVertex2d(y+r, -x);
gl.glVertex2d(x+r, -y);
gl.glVertex2d(y, -x+r);
gl.glEnd();
}
private void draw8Way3(GL2 gl, int x, int y, int r) {
}
设置为yes的参数组。
我正在使用Redis 5.0.5,因此我在cluster-enabled
上添加了:
aws_elasticache_replication_group